pae分頁模式可以將32位的線性位址空間對映到52位的實體地址空間。相比於32位分頁方式,其實體地址空間增加到了4pb。但對於在處理器上執行的任一程序而言,其最大的線性位址空間仍然是4gb。
pae分頁主要支援兩種頁面大小:
對於4kb頁面,其線性位址轉換方式如下:
對於2mb的頁面,其線性位址轉換方式如下:
相比於32位分頁方式,pae的4kb分頁要多一級分頁,由上圖可以看出,多出了pdpt。即page-directory-page-table。這個table只有4個入口,因為它只佔了兩個bit。
那麼它是如何把位址擴充套件到52位的呢?注意pdpt的表項長度,它有40個bit,再住下的每一級目錄都有40個bit,最後加上offset的12個bit, 一共剛好組成了52個bit。但是其線性位址的長度任然是32個bit。所以線性位址空間的大小不變。
那麼現在問題來了?線性位址空間只有4gb,一定不能做到對4pb的物理空間的1:1對映。難道要1對多對映麼?怎麼對映呢?
剛開始這個問題讓我困惑了很久,線性空間只有4gb,如果不是1對多對映,就算是實體地址有52 bits。也只能用於其中的4gb啊,剩下的只能白白浪費掉!!!
網上苦苦搜尋,沒有找到答案,只好再細讀ia32 spec。當看到以下幾句話的時候才明白過來:
什麼意思呢?
第一句話是講,pdpt的實體地址被存放在cr3中。也就是說改變cr3, pdpte也會跟著變。
第二句話最關鍵,如果pae分頁被使用,而程序在執行的過程中改變了cr3的值,pdpte將會指向cr3所儲存的新位址。
這就意味著,我們在記憶體中不只儲存了一套頁表,而是儲存了多套,程序跟據需要,改變cr3的值,從而實現對當前4gb實體地址之外的訪問。這也就說明了一對多是如何實現的。
記憶體管理 實體地址擴充套件(PAE)分頁機制
摘要 intel通過在處理器上把管腳數從 32增加到 36,以提高處理器的定址能力,使其達到 2 36 64gb,然而線性位址的位數仍然是32位,為此,需引入一種新的分頁機制。從pentium pro處理器開始,intel引入一種pae機制,另外一種叫做頁大小擴充套件機制 pse 在pentium ...
sql 常用的三種分頁模式
查詢第二頁,每頁十條 1.not in 模式 select top 10 from table1 where guid not in select top 10 from table1 order by guid 2.二次翻轉模式 select top 10 from select top 20 f...
分頁記憶體,非分頁記憶體
分頁記憶體是低中斷級別的例程可以訪問的。而非分頁記憶體則是各個中斷級別的例程都可以使用的。區別在於 分頁記憶體是虛擬記憶體,在物理上未必總是能得到。作業系統實現虛擬記憶體的主要方法就是通過分頁機制。在win32中,實體地址空間,二維虛擬位址空間和實際記憶體位址是三個不同的概念。作業系統通過段選擇子構...