2012-04-06 111 views
0

據我所知,(英特爾)虛擬地址轉換過程爲:如何翻譯虛擬地址?

1.傳入虛擬地址被分爲頁表號,頁號,和偏移量。

2. CPU中的進程desriptor基址寄存器(PDBR)告訴目錄開始的位置。

3.頁表號被乘以4以用作目錄的偏移量,並且查找目錄條目。

4.該目錄條目包含頁表的地址,以及有效性和保護信息。如果此信息表明頁表不在內存中或者保護不正常,則轉換停止並引發異常。

5.將頁碼乘以4以用作頁表中的偏移量,並查找頁表項。

6.頁表項包含頁面地址,有效性和保護信息。如果此信息表明頁面不在內存中或者保護不正常,則翻譯將停止並引發異常。

7.偏移量用作頁面的索引。

8.數據在最終到達的地址。

這都有道理高達第6步在那裏我感到困惑,因爲 表項格式僅指定,這意味着它只能訪問最多1兆字節物理頁幀地址20位,或者它左移12位(乘以4096:頁面大小)才能訪問4千兆字節

回答

0

這是32位翻譯過程。每個頁表項是32位,但低12位用於標誌。高20位是頁面地址。

+0

是的,但這並不意味着頁面必須在1兆邊界(2^20)內? – 2012-04-06 04:44:43

+0

沒有。所有頁面從4K邊界開始,所以沒有理由存儲低12位。 – stark 2012-04-06 04:54:29

+0

所以20位確實被左移了12位 – 2012-04-06 04:56:57