虛擬地址對映到實體地址怎麼做
在確保訪問的資料已在實體記憶體中後,還需要先將虛擬地址轉換為實體地址,即"地址對映",那麼呢?今天小編與大家分享下虛擬地址對映到物理地的具體操作步驟,有需要的朋友不妨瞭解下。
虛擬地址對映到實體地址方法
Win32通過一個兩層的表結構來實現地址對映,因為每個程序都擁有私有的4G的虛擬記憶體空間,相應的,每個程序都有自己的層次表結構來實現其地址對映。
第一層稱為頁目錄,實際就是一個記憶體頁,Win32的記憶體頁有4KB大小,這個記憶體頁以4個位元組分為1024項,每一項稱為“頁目錄項”***PDE***;
第二層稱為頁表,這一層共有1024個頁表,頁表結構與頁目錄相似,每個頁表也都是一個記憶體頁,這個記憶體頁以4KB的大小被分為1024項,頁表的每一項被稱為頁表項***PTE***,易知共有1024×1024個頁表項。每一個頁表項對應一個實體記憶體中的某一個“記憶體頁”,即共有1024×1024個實體記憶體頁,每個實體記憶體頁為4KB,這樣就可以索引到4G大小的虛擬實體記憶體。
如下圖所示***注下圖中的頁目錄項的大小應該是4個位元組,而不是4kB***:
Win32提供了4GB大小的虛擬地址空間。因此每個虛擬地址都是一個32位的整數值,也就是我們平時所說的指標,即指標的大小為4B。它由三部分組成,如下圖:
這三個部分的第一部分,即前10位為頁目錄下標,用來定址頁目錄項,頁目錄項剛好1024個。找到頁目錄項後,找對頁目錄項對應的的頁表。第二部分則是用來在頁表內定址,用來找到頁表項,共有1024個頁表項,通過頁表項找到實體記憶體頁。第三部分用來在實體記憶體頁中找到對應的位元組,一個頁的大小是4KB,12位剛好可以滿足定址要求。
具體的例子:
假設一個執行緒正在訪問一個指標***Win32的指標指的就是虛擬地址***指向的資料,此指標指為0x2A8E317F,下圖表示了這一個過程:
0x2A8E317F的二進位制寫法為0010101010_0011100011_000101111111,為了方便我們把它分為三個部分。
首先按照0010101010定址,找到頁目錄項。因為一個頁目錄項為4KB,那麼先將0010101010左移兩位,001010101000***0x2A8***,用此下標找到頁目錄項,然後根據此頁目錄項定位到下一層的某個頁表。
然後按照0011100011定址,在上一步找到頁表中尋找頁表項。定址方法與上述方法類似。找到頁表項後,就可以找到對應的實體記憶體頁。
最後按照000101111111定址,尋找頁內偏移。
上面的假設的是此資料已在實體記憶體中,其實判斷訪問的資料是否在記憶體中也是在地址對映過程中完成的。Win32系統總是假設資料已在實體記憶體中,並進行地址對映。頁表項中有一位標誌位,用來標識包含此資料的頁是否在實體記憶體中,如果在的話,就直接做地址對映,否則,丟擲缺頁中斷,此時頁表項也可標識包含此資料的頁是否在調頁檔案中***外存***,如果不在則訪問違例,程式將會退出,如果在,頁表項會查出此資料頁在哪個調頁檔案中,然後將此資料頁調入實體記憶體,再繼續進行地址對映。為了實現每個程序擁有私有4G的虛擬地址空間,也就是說每個程序都擁有自己的頁目錄和頁表結構,對不同程序而言,即使是相同的指標***虛擬地址***被不同的程序對映到的實體地址也是不同的,這也意味著在程序之間傳遞指標是沒有意義的。
- 虛擬地址對映到實體地址怎麼做
- 電腦顯示器左右不滿屏怎麼辦
- 班上的紀律委員的總結怎麼寫
- 動漫經典海報素材圖片欣賞
- 吟風閱讀理解附答案
- 花膠的營養價值花膠怎麼吃
- 烏龍茶的功效與作用禁忌
- 幼兒園下學期保教計劃
- 幼兒大班人物繪畫圖
- 創新作文指導課校本研修教學反思
- 圖書館電子閱覽室網路安全及其防範技術探討論文
- 冬天來了的詩句
- 青菜豆腐湯的做法
- 幫媽媽做家務後的感受
- 古代優美的詩句經典
- 海爾空調清洗保養方法有哪些
- 致未來老公的一封信
- 蔡依林的爵士舞蹈視訊
- 深化個人所得稅制度改革
- 教師評職稱論文刊物
- 康熙字典五行屬金的字
- 康熙字典五行屬木的字
- 康熙字典五行屬水的字
- 康熙字典五行屬火的字
- 康熙字典五行屬土的字