0
據我所知,(英特爾)虛擬地址轉換過程爲:如何翻譯虛擬地址?
1.傳入虛擬地址被分爲頁表號,頁號,和偏移量。
2. CPU中的進程desriptor基址寄存器(PDBR)告訴目錄開始的位置。
3.頁表號被乘以4以用作目錄的偏移量,並且查找目錄條目。
4.該目錄條目包含頁表的地址,以及有效性和保護信息。如果此信息表明頁表不在內存中或者保護不正常,則轉換停止並引發異常。
5.將頁碼乘以4以用作頁表中的偏移量,並查找頁表項。
6.頁表項包含頁面地址,有效性和保護信息。如果此信息表明頁面不在內存中或者保護不正常,則翻譯將停止並引發異常。
7.偏移量用作頁面的索引。
8.數據在最終到達的地址。
這都有道理高達第6步在那裏我感到困惑,因爲 表項格式僅指定,這意味着它只能訪問最多1兆字節物理頁幀地址20位,或者它左移12位(乘以4096:頁面大小)才能訪問4千兆字節
是的,但這並不意味着頁面必須在1兆邊界(2^20)內? – 2012-04-06 04:44:43
沒有。所有頁面從4K邊界開始,所以沒有理由存儲低12位。 – stark 2012-04-06 04:54:29
所以20位確實被左移了12位 – 2012-04-06 04:56:57