[保护模式]PAE模式
文章目錄
- PAE模式 2-9-9-12分頁
 - 非PAE模式為什么是10-10-12
 - PAE模式為什么是2-9-9-12
 - 總結(jié)
 
- PDPTE結(jié)構(gòu)
 - PTE結(jié)構(gòu)
 - PTE結(jié)構(gòu)
 - XD標志位(AMD中稱為NX,即No Excetion)
 
PAE模式 2-9-9-12分頁
非PAE模式為什么是10-10-12
PAE模式為什么是2-9-9-12
在非PAE模式下,由于物理地址長度為32位。所以內(nèi)存范圍在0-0xFFFFFFFF之間,也就是2的32次方,也就是4GB。
CPU的尋址范圍取決于物理地址的長度。CPU要想尋址到4GB以外的內(nèi)存空間。就必須增大物理地址的長度。
例如下面的地址:
10-10-12:0x12345678 PDE:FFFFF123(32) PTE:FFFFF123(32) 物理地址:FFFFF678(32) 物理頁起始地址:FFFFF000(32)32位的物理地址可以尋址到4GB,那么如果增大物理地址長度到36位,就可以尋址到64GB。事實上非PAE模式下的2-9-9-12的物理地址長度就是36位。
CPU->0-FFFFFFFFF(36) 2-9-9-12(36)那么問題來了,當物理地址擴大到36位的時候,32位的PTE自然也要發(fā)生變化。例如下面的這個地址
FFBFF123(32)后面12位0x123肯定是不能動的,這三位是屬性。前面20位是物理地址。那么就只有把前面20位拉長來突破4GB。將地址變成下面的36位地址
FFBFFF123(36)這樣的話,PTE就由原先的32位拉長到36位,能尋址到64GB的空間。
但是一旦拉長,就不是4字節(jié)對齊了;沒有做到字節(jié)對齊就會影響程序的執(zhí)行效率。CPU的做法是犧牲空間換時間,將原來的4字節(jié)的PTE變成8字節(jié)。
原先能保存1024個PTE成員的PTT表,現(xiàn)在只能保存512個PTE了。想要索引到512個成員需要9個二進制位。2的9次方等于512。這個就是2-9-9-12分頁的第三個9的來源
以此類推,PDE也由4個字節(jié)變成了8個字節(jié)。數(shù)據(jù)項也由1024變成了512。PDE需要增大到8字節(jié)的原因在于如果還是保持原來的4字節(jié),就無法索引到4GB以外的PTE了。所以PDE需要跟隨PTE增大了8個字節(jié)
2的來源:在PDT和PTT的基礎(chǔ)上多了一張頁目錄指針表PDPTE(Page-Directory-Point-Table-Entry),每項占8個字節(jié)。表里面一共4個成員。(因為一共只有兩位,2的2次方等于4)如圖:
總結(jié)
2-9-9-12的來源
- 12:物理頁的大小為4KB,4096字節(jié)。想要索引到每一個字節(jié)需要12個二進制位。因為2的12次方等于4096。所以是12
 - 9:由于PTE增加到36位,原先能保存1024個PTE成員的PTT表,現(xiàn)在只能保存512個PTE了。想要索引到512個成員需要9個二進制位。2的9次方等于512。
 - 9:PDE跟隨PTE由原來的4個字節(jié)變成了8個字節(jié)。數(shù)據(jù)項也由1024變成了512。
 - 2:PDPTE的成員有4個,正好用兩個二進制位索引。
 
PDPTE結(jié)構(gòu)
- PDPTE共有4項
 - 灰色部分為保留項
 - 35-12存儲的是頁目錄表的基址,低12位補0,共36位,即頁目錄基址
 
PTE結(jié)構(gòu)
- 當PS=1時是大頁,35-21位是大頁的物理地址,這樣36位的物理地址的低21位為0,這就意味著頁的大小為,且都是對齊
 - 當PS=0時,35-12位是頁表基址,低12位補0,共36位
 
PTE結(jié)構(gòu)
- PTE中35-12是物理頁基址,24位,低12位補0
 - 物理頁基址+12位的頁內(nèi)偏移指向具體數(shù)據(jù)
 
XD標志位(AMD中稱為NX,即No Excetion)
段的屬性有可讀可寫可執(zhí)行,頁的屬性有可讀 可寫。為了填補上沒有可執(zhí)行位的這個坑,Initel就做了硬件保護,做了一個不可執(zhí)行位。XD=1時,表示不可執(zhí)行。在PAE分頁模式下,PDE與PTE的最高位為XD/NX位。
讀 可寫。為了填補上沒有可執(zhí)行位的這個坑,Initel就做了硬件保護,做了一個不可執(zhí)行位。XD=1時,表示不可執(zhí)行。在PAE分頁模式下,PDE與PTE的最高位為XD/NX位。
總結(jié)
以上是生活随笔為你收集整理的[保护模式]PAE模式的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
                            
                        - 上一篇: [保护模式]非PAE模式
 - 下一篇: 系统调用001 API从三环进零环的过程