日本免费全黄少妇一区二区三区-高清无码一区二区三区四区-欧美中文字幕日韩在线观看-国产福利诱惑在线网站-国产中文字幕一区在线-亚洲欧美精品日韩一区-久久国产精品国产精品国产-国产精久久久久久一区二区三区-欧美亚洲国产精品久久久久

一 Windows 2000內(nèi)存篇 分頁機制介紹( 二 )


一個頁目錄有1024項,虛擬地址最高的10bit剛好可以索引1024項(2的10次方等于1024) 。一個頁表也有1024項,虛擬地址中間部分的10bit,剛好索引1024項 。虛擬地址最低的12bit(2的12次方等于4096),作為頁內(nèi)偏移,剛好可以索引4KB,也就是一個物理頁中的每個字節(jié) 。
一個虛擬地址轉(zhuǎn)換成物理地址的計算過程就是,處理器通過CR3找到當前頁目錄所在物理頁,取虛擬地址的高10bit,然后把這10bit右移2bit(因為每個頁目錄項4個字節(jié)長,右移2bit相當于乘4)得到在該頁中的地址,取出該地址處PDE(4個字節(jié)),就找到了該虛擬地址對應頁表所在物理頁,取虛擬地址第12位到第21位這10位,然后把這10bit右移2bit(因為每個頁表項4個字節(jié)長,右移2bit相當于乘4)得到在該頁中的地址,取出該地址處的PTE(4個字節(jié)),就找到了該虛擬地址對應物理頁的地址,最后加上12bit的頁內(nèi)偏移得到了物理地址 。
32bit的一個指針,可以尋址范圍0x00000000-0xFFFFFFFF,4GB大小 。也就是說一個32bit的指針可以尋址整個4GB地址空間的每一個字節(jié) 。一個頁表項負責4K的地址空間和物理內(nèi)存的映射,一個頁表1024項,也就是負責1024*4k=4M的地址空間的映射 。一個頁目錄項,對應一個頁表 。一個頁目錄有1024項,也就對應著1024個頁表,每個頁表負責4M地址空間的映射 。1024個頁表負責1024*4M=4G的地址空間映射 。一個進程有一個頁目錄 。所以以頁為單位,頁目錄和頁表可以保證4G的地址空間中的每頁和物理內(nèi)存的映射 。
每個進程都有自己的4G地址空間,從0x00000000-0xFFFFFFFF 。通過每個進程自己的一套頁目錄和頁表來實現(xiàn) 。由于每個進程有自己的頁目錄和頁表,所以每個進程的地址空間映射的物理內(nèi)存是不一樣的 。兩個進程的同一個虛擬地址處(如果都有物理內(nèi)存映射)的值一般是不同的,因為他們往往對應不同的物理頁 。
4G地址空間中低2G,0x00000000-0x7FFFFFFF是用戶地址空間,4G地址空間中高2G,
0x80000000-0xFFFFFFFF 是系統(tǒng)地址空間 。訪問系統(tǒng)地址空間需要程序有ring0的權限 。

推薦閱讀