2015-11-02 13 views
2

如果一個進程引用虛擬地址0x100F3557,三個字段,其中,所述虛擬地址可以被分裂,的值是:在內存中啓動頁面的add2ress?

Offset = 0x557 
Page Table = 0x0F3 
Page Directory = 0x040 

這個地址的頁表項具有值0x71248021

我在內存中的頁面起始地址是什麼?

回答

1

假設x86分頁頁表項由頁面映射到的幀的(物理)地址和一些控制信息組成。後者佔用條目的低12位,這是您的十六進制值的最後3位數字。因此

  • 幀地址= 0x71248000
  • 控制信息= 0x021

control information這裏告訴我們,這種頁是

  • ,位0組,從而有一個有效的映射。
  • ,只讀位1未設置
  • 用戶模式訪問,位2未設置
  • 寫回緩存,位3未設置)
  • 緩存,位4未設置)
  • 訪問,但未寫入(位5集,位6未設置)
  • (不是全局頁,位8 uns等)

因此,假設一個讀出操作時,處理將訪問地址0x71248000 | 0x557 == 0x71248557,與0x557被所述偏移從虛擬地址提取。