Windows頁目錄自對映方案

2021-05-27 19:09:00 字數 504 閱讀 5644

2010-10-02 01:22 7504人閱讀

舉報 潘愛民,2023年10月1日

首先,看下面的乙個巨集:

此巨集的含義是,給定乙個pte的虛擬位址,返回該pte所指頁面的虛擬位址。

舉例而言,假設pte的位址(虛擬位址)為0xc0390c84,即1100,0000,00|11,1001,0000,|1100,1000,0100,這裡「|」符號將它分為頁目錄索引、頁表索引、頁內偏移三部分。在windows中,頁目錄(cr3暫存器)的位址是0xc0300000,所以,處理器在訪問該pte的時候,首先從頁目錄頁面中,找到1100,0000,00項,即第0x300項。這一項由系統特別設定好,它指向頁目錄自身(後面進一步解釋為什麼這麼設定)。接下來查詢0xc0390c84的頁表索引,即11,1001,0000,處理器繼續在頁目錄頁面中查詢,找到11,1001,0000,即第0x390項,這一項指向乙個頁表頁面。最後,處理器再根據頁內偏移1100,1000,0100,即0xc84,定位到第0x321項。此pte的定址過程如下圖所示。

Windows頁目錄自對映方案

首先,看下面的乙個巨集 此巨集的含義是,給定乙個pte的虛擬位址,返回該pte所指頁面的虛擬位址。舉例而言,假設pte的位址 虛擬位址 為0xc0390c84,即1100,0000,00 11,1001,0000,1100,1000,0100,這裡 符號將它分為頁目錄索引 頁表索引 頁內偏移三部分。...

Windows頁目錄自對映方案

原位址 潘老師的一篇部落格,學習 首先,看下面的乙個巨集 此巨集的含義是,給定乙個pte的虛擬位址,返回該pte所指頁面的虛擬位址。舉例而言,假設pte的位址 虛擬位址 為0xc0390c84,即1100,0000,00 11,1001,0000,1100,1000,0100,這裡 符號將它分為頁目...

頁表自對映

今天查詢頁表對映資料時,無意發現乙個有趣的概念,就是頁表自對映。頁目錄基址記為pdt,頁目錄項記為pde,頁表項記為pte。bits m,n,value 表示取value從高m位到高n位的值。32位系統下,所有的pte所佔的空間剛好是4mb。如果將這些pte連續地放在記憶體中,那麼這4mb記憶體空間...