Windows系統中PDE和PTE所佔的空間

來源:互聯網
上載者:User
 

  頁目錄的地址為什麼是C0300000,1個頁目錄加上1024個頁表為什麼只使用了1024*4K的地址空間  對於要映射整個4G地址空間,是需要1024個頁表和1個頁目錄的,每個都是4KB大小,也就是 1024*4KB+1*4KB=4MB+4KB。而實際中Win2k把每個進程的頁目錄和頁表映射到了從 0xC0000000到0xC03FFFFF 這4MB的地址空間中(頁目錄在0xC0300000開始的4K)。注意是4MB地址空間而不是4MB+4KB。1024個頁表和1個頁目錄,應該是需要(1024+1)*4KB的地址空間的。而現在Win2k只使用了1024*4KB的地址空間這是為什嗎?    原因就是頁表被映射到了進程的地址空間。    如果頁表和頁目錄沒有被映射到進程的地址空間中,而一個進程的4GB地址空間又都映射了實體記憶體的話,那麼就確實需要1024個物理頁來存放頁表,和另外1個物理頁來存放頁目錄,也就是需要(1024+1)*4KB的實體記憶體。但是頁表被映射到了進程的地址空間中,這導致了一個頁表的內容和頁目錄的內容是完全一樣的,正是這種完全相同,使得將1024個頁表加1個頁目錄映射到地址空間只需要1024*4KB的地址空間,其中的一個頁表和頁目錄完全重合了。    一個頁表1024項,每項對應4KB地址空間,一個頁表對應4MB的地址空間。1024個對應了整個4GB地址空間。1024個頁表也被映射到了從 0xC0000000到0xC03FFFFF 的4MB地址空間中。這4MB地址空間也是由一個頁表來對應的。我們來看對應於從 0xC0000000到0xC03FFFFF 這4MB的地址空間的頁表。該頁表有1024項,每項對應一頁的地址空間,表明是否在實體記憶體中,如果在,物理地址是多少。而這個頁表是對應頁表所在的4MB地址空間的,所以它的每一項對應的一頁,正是每個頁表所在的頁。也就是說這個頁表的每一項指出了一個頁表是否有實體記憶體映射,如果有的話,物理地址是多少。這正是頁目錄所做的工作。把1024個頁表映射到了地址空間,導致了1024個頁表中的一個的內容和頁目錄完全重合,它既是頁目錄又是頁表。所以1個頁目錄加上1024個頁表只使用了1024*4K的地址空間。    頁表被映射到地址空間的什麼地方,是由作業系統的設計者決定的,他會綜合考慮各種問題,作出最後的決定。不過一旦頁表所在的地址空間的地址決定了,那麼頁目錄的地址也就決定了,除非他打算多使用一頁的地址空間儲存和現在一個頁表中完全相同的內容。    Win2k中把頁表映射到了從 0xC0000000到0xC03FFFFF 的4MB地址空間中,我們來計算一下負責這4M地址空間的那個頁表的地址,那個頁表就是和頁目錄重合的頁表。4MB地址空間的首地址0xC0000000顯然是由該頁表的第一項負責的,我們用這個地址來計算。PTE_Address=(VirtualAddress>>12)*4+0xC0000000,(0xC0000000>>12)*4+0xC0000000=0xC0000*4+0xC0000000=0x300000+0xC0000000=0xC0300000正是頁目錄的虛擬位址。    0xC0300000到0xC0300FFF這4KB的地址空間,作為普通一頁的話由一個PTE指明所在物理頁的物理地址,作為一個頁表所在頁的話由一個PDE指明所在物理頁的物理地址,作為頁目錄的話由CR3指明所在物理頁的物理地址。    0xC0300000到0xC0300FFF這4KB作為普通的一頁是由哪個PTE對應呢,PTE_Address=(VirtualAddress>>12)*4+0xC0000000,計算得到0xC0300C00。也就是說0xC0300C00處的4個位元組作為PTE,指明了0xC0300000到0xC0300FFF這4KB所在的物理頁的物理地址。    0xC0300000到0xC0300FFF這4KB作為一個頁表所在頁是由哪個PDE對應呢,PDE_Address=(VirtualAddress>>22)*4+0xC0300000,計算得到0xC0300C00。也就是說0xC0300C00處的4個位元組作為PDE,指明了0xC0300000到0xC0300FFF這4KB所在的物理頁的物理地址。    0xC0300000到0xC0300FFF這4KB作為頁目錄的話,由 CR3 指明所在物理頁的物理地址。所以 0xC0300C00 處的4個位元組的值,把標誌位清0的話,就等於 CR3 中的值。
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.