的Linux頁麵大小為8KB,而IntelX86係統上使用4KB頁麵。每個頁麵通過一個叫頁麵框號的數字來標示(PFN)。
頁麵模式下的虛擬地址由兩部分構成:頁麵框號和頁麵內偏移值。如果頁麵大小為4KB,則虛擬地址的11:0位表示虛擬地址偏移值,12位以上表示虛擬頁麵框號。處理器處理虛擬地址時必須完成地址分離工作。在頁表的幫助下,它將虛擬頁麵框號轉換成物理頁麵框號,然後訪問物理頁麵中相應偏移處。
圖3.1給出了兩個進程X和Y的虛擬地址空間,它們擁有各自的頁表。這些頁表將各個進程的虛擬頁麵映射到內存中的物理頁麵。在圖中,進程X的虛擬頁麵框號0被映射到了物理頁麵框號4。理論上每個頁表入口應包含以下內容:
有效標記,表示此頁表入口是有效的
頁表入口描敘的物理頁麵框號
訪問控製信息。用來描敘此頁可以進行哪些操作,是否可寫?是否包含執行代碼?
虛擬頁麵框號是為頁表中的偏移。虛擬頁麵框號5對應表中的第6個單元(0是第一個)。
為了將虛擬地址轉換為物理地址,處理器首先必須得到虛擬地址頁麵框號及頁內偏移。一般將頁麵大小設為2的次冪。將圖3.1中的頁麵大小設為0x2000字節(十進製為8192)並且在進程Y的虛擬地址空間中某個地址為0x2194,則處理器將其轉換為虛擬頁麵框號1及頁內偏移0x194。
處理器使用虛擬頁麵框號為索引來訪問處理器頁表,檢索頁表入口。如果在此位置的頁表入口有效,則處理器將從此入口中得到物理頁麵框號。如果此入口無效,則意味著處理器存取的是虛擬內存中一個不存在的區域。在這種情況下,處理器是不能進行地址轉換的,它必須將控製傳遞給操作係統來完成這個工作。
某個進程試圖訪問處理器無法進行有效地址轉換的虛擬地址時,處理器如何將控製傳遞到操作係統依賴於具體的處理器。通常的做法是:處理器引發一個頁麵失效錯而陷入操作係統核心,這樣操作係統將得到有關無效虛擬地址的信息以及發生頁麵錯誤的原因。
請到𝐨𝐨𝐩.𝐭𝐰查看完整章節
再以圖3.1為例,進程Y的虛擬頁麵框號1被映射到係統物理頁麵框號4,則再物理內存中的起始位置為0x8000(4*0x2000)。加上0x194字節偏移則得到最終的物理地址0x8194。
通過將虛擬地址映射到物理地址,虛擬內存可以以任何順序映射到係統物理頁麵。例如,在圖3.1中,進程X的虛擬頁麵框號0被映射到物理頁麵框號1而虛擬頁麵框號7被映射到物理頁麵框號0,雖然後者的虛擬頁麵框號要高於前者。這樣虛擬內存技術帶來了有趣的結果:虛擬內存中的頁麵無須在物理內存保持特定順序。
請求換頁
在物理內存比虛擬內存小得多的係統中,操作係統必須提高物理內存的使用效率。節省物理內存的一種方法是僅加載那些正在被執行程序使用的虛擬頁麵。比如說,某個數據庫程序可能要對某個數據庫進行查詢操作,此時並不是數據庫的所有內容都要加載到內存中去,而隻加載那些要用的部分。如果此數據庫查詢是一個搜索查詢而無須對數據庫進行添加記錄操作,則加載添加記錄的代碼是毫無意義的。這種僅將要訪問的虛擬頁麵載入的技術叫請求換頁。
當進程試圖訪問當前不在內存中的虛擬地址時,處理器在頁表中無法找到所引用地址的入口。在圖3.1中,對於虛擬頁麵框號2,進程X的頁表中沒有入口,這樣當進程X試圖訪問虛擬頁麵框號2內容時,處理器不能將此地
存儲管理
址轉換成物理地址。這時處理器通知操作係統有頁麵錯誤發生。
是址地擬虛的錯麵頁生發果如理管儲存
。響影的程進錯出此受不程進他其中統係護保以行運的用應此止終將統係作操時此。作操寫的機隨個一行進存內對圖試它如例,的起引而錯出序程用應是能可這。址地擬虛的在存不個一問訪圖試在程進明表則,的效無
。行運續繼以得也程進而,換轉址地理物到址地擬虛行進續繼以可又器理處,落段一告程過問訪存內擬虛個整時此。行運始開新重方地的誤錯麵頁生發從將程進後最。口入的號框麵頁擬虛此應對加添將中表頁的程進此時同,中框麵頁理物的閒空個一在放被將麵頁的來回取讀。行運來一之中其擇選中程過待等的中程過麵頁取讀在會就統係作操,程進他其在存還中統係果如。來出取被麵頁到直間時段一待等須必程進,長較間時盤訪於由。來中存內到入讀中象映盤磁從麵頁此將須必統係作操則,中存內在不前當麵頁的向指它是但,的效有是址地擬虛錯出果如
。行執續繼存內入調分部些哪上盤磁將定決將xuniL樣這,誤錯麵頁生產會它,時行執象映當。上盤磁在留然仍分部餘其,存內理物入調被分部始起的象映有隻而然。射映存內為稱程過此,的成完來構結據數的象映存內程進敘描改修過通是作操些這。存內擬虛的程進到射映被容內其時同,開打被件文令命的行執可,時行執令命當。中存內擬虛的程進到載加象映行執可將頁換求請用使xuniL
換交
。間空出騰之為來麵頁些某的中存內理物於位棄丟須必統係作操,麵頁理物的閒空有沒中統係好正而存內理物入調麵頁擬虛個一把要需程進果如
。出讀中件文據數者或件文行執可從接直,時麵頁此要需次再程進當。麵頁些那存保要需不則過改修有沒且並,件文據數者或件文行執可的上盤磁於自來麵頁的來出棄丟中存內理物從些那果如
。擇選出做中存內在留保續繼其將和盤磁入寫麵頁ytrid些這將在須必統係作操,的慢緩常非是度速的件文換交問訪,度速的存內理物和器理處於對相。中件文殊特的件文換交做叫在存保須必們它,時來出移中存內從當,麵頁ytrid為稱被麵頁種這。問訪次再備以容內的麵頁留保須必統係作操則,過改修被麵頁果如是但
,下況情種這在。象現"\簸顛"\生發會則,低很率效法算換交果如,換交者或棄丟要麵頁些哪斷判要需常經法算的麵頁棄丟擇選