頁麵不斷的被寫入磁盤又從磁盤中讀回來,這樣一來操作係統就無法進行其他任何工作。以圖3.1為例,如果物理頁麵框號1被頻繁使用,則頁麵丟棄算法將其作為交換到硬盤的候選者是不恰當的。一個進程當前經常使用的頁麵集合叫做工作集。高效的交換策略能夠確保所有進程的工作集保存在物理內存中。
Linux使用最近最少使用(LRU)頁麵衰老算法來公平地選擇將要從係統中拋棄的頁麵。這種策略為係統中的每個頁麵設置一個年齡,它隨頁麵訪問次數而變化。頁麵被訪問的次數越多則頁麵年齡越年輕;相反則越衰老。年齡較老的頁麵是待交換頁麵的最佳候選者。
共享虛擬內存
虛擬內存讓多個進程之間可以方便地共享內存。所有的內存訪問都是通過每個進程自身的頁表進行。對於兩個共享同一物理頁麵的進程,在各自的頁表中必須包含有指向這一物理頁麵框號的頁表入口。
圖3.1中兩個進程共享物理頁麵框號4。對進程X來說其對應的虛擬頁麵框號為4而進程Y的為6。這個有趣的現象說明:共享物理頁麵的進程對應此頁麵的虛擬內存位置可以不同。
物理與虛擬尋址模式
操作係統自身也運行在虛擬內存中的意義不大。如果操作係統被迫維護自身的頁表那將是一個令人惡心的方案。多數通用處理器同時支持物理尋址和虛擬尋址模式。物理尋址模式無需頁表的參與且處理器不會進行任何地址轉換。Linux核心直接運行在物理地址空間上。
AlphaAXP處理器沒有特殊的物理尋址模式。它將內存空間劃分為幾個區域並將其中兩個指定為物理映射地址。核心地址空間被稱為KSEG地址空間,它位於地址0xfffffc0000000000以上區域。為了執行位於KSEG的核心代碼或訪問那裡的數據,代碼必須在核心模式下執行。Alpha上的Linux核心從地址0xfffffc0000310000開始執行.
訪問控製
頁表入口包含了訪問控製信息。由於處理器已經將頁表入口作為虛擬地址到物理地址的映射,那麼可以很方便地使用訪問控製信息來判斷處理器是否在以其應有的方式來訪問內存。
諸多因素使得有必要嚴格控製對內存區域的訪問。有些內存,如包含執行代碼的部分,顯然應該是隻讀的,操作係統決不能允許進程對此區域的寫操作。相反包含數據的頁麵應該是可寫的,但是去執行這段數據肯定將導致錯誤發生。多數處理器至少有兩種執行方式:核心態與用戶態。任何人都不會允許在用戶態下執行核心代碼或者在用戶態下修改核心數據結構。
圖3.2AlphaAXP頁表入口
頁表入口中的訪問控製信息是處理器相關的;圖3.2是AlphaAXP處理器的PTE(PageTableEntry)。這些位域的含義如下:
有效,如果此位置位,表明此PTE有效
FOE
“執行時失效”,無論何時隻要執行包含在此頁麵中的指令,處理器都將報告頁麵錯誤並將控製傳遞
FOW
“寫時失效”,除了頁麵錯誤發生在對此頁麵的寫時,其他與上相同。
FOR
“讀時失效”,除了頁麵錯誤發生在對此頁麵的讀時,其他與上相同。
ASM
地址空間匹配。被操作係統用於清洗轉換緩衝中的某些入口。
KRE
運行在核心模式下的代碼可以讀此頁麵。
URE
運行在用戶模式下的代碼可以讀此頁麵。
GH
將整個塊映射到單個而不是多個轉換緩衝時的隱含粒度。
KWE
本章節來源於𝑜𝑜𝑝.𝑡𝑤
運行在核心模式下的代碼可以寫此頁麵。
UWE
運行在用戶模式下的代碼可以寫此頁麵。
pageframenumber
對於V位置位的PTE,此域包含了對應此PTE的物理頁麵框號;對於無效PTE,此域不為0,它包含了頁麵在交換文件中位置的信息。
以下兩位由Linux定義並使用。
YTRID_EGAP_
。件文換交入寫被要麵頁此,位置果如
DESSECCA_EGAP_
。過問訪被經已麵頁示表它用xuniL
衝緩速高
。略策理管存內的關相衝緩速高與多許了用使xuniL。作操些某快加以據數和息信用有護維中衝緩速高在是法辦的好最,外存內和UPC的快更造製了除。能性的統係高提以力努在都者計設器理處和者計設統係作操。高會不率效但,作工以可能可它,統係個一現實來型模論理述上用果如
ehcaCreffuB
。衝緩據數的用使動驅備設塊被了含包中ehcacreffub個這
。備設塊是都盤硬的有所。備設的作操寫讀行進塊小大定固以夠能僅是備設塊。塊息信的入寫者或出讀備設塊從含包且並)節字215說如例(定固般一小大的元單的衝緩些這
。問訪速加以可樣這,取讀中)盤硬如(備設塊理物從需無則到找以可中ehcacreffub在據數果如。取存來ehcacreffub過通夠能隻備設塊。據數到找地速迅中ehcacreffub在以可引索作號塊需所和符誌標備設用利
ehcaCegaP
。取存的件文據數與件文象映行執可上盤硬速加來用
。中ehcacegap在存緩後存內入讀上盤磁從麵頁。容內件文的麵頁個一衝緩次每它
ehcaCpawS
。中件文換交在儲存麵頁的過改修有隻
。作操盤磁的時耗且要必不多很下省以可ehcaCpawS,中統係的生發繁頻換交在。棄丟的單簡以可都麵頁些這,作操寫新更行進再必不就,時存內出換交被麵頁此次下則,改修被有沒後件文換交到入寫在麵頁些這要隻
ehcaCerawdraH
。貝拷衝緩的口入表頁的器理處個多或個一中統係含包它,)sreffuBedisa-kooLnoitalsnarT(衝緩視旁換轉做叫又ehcac種這。換轉的麵頁存緩時要需在是而表頁取讀接直是總不器理處。ehcac口入表頁的中器理處是ehcacerawdrah的見常個一