頁式管理 實體地址計算問題小結

2021-07-23 09:41:26 字數 983 閱讀 1913

本篇總結的起因是:2023年真題裡面的一道小題。

簡述就是:頁式管理,頁號20位,頁內偏移12位,按照位元組編址。乙個**段的起始邏輯位址是0000,8000h,長度是8kb,被裝載到從實體地址0090,0000h開始的連續主存空間中。頁表從主存0020,0000h開始的實體地址處連續存放。計算該**段對應的兩個頁表項的實體地址,頁框號和**頁面2的實體地址(頁面1,2連續存放)。

8k

b=213

b ,將213

加到0090,0000h上,然後得到的是0090,2000h。因為16進製制下,000表達的最高位權重是211

。 再繼續往下做結果都是錯的。

那麼這麼加的問題出在**了呢?

我們知道位元組是遞增編號,當前這個編號是0090,2000h,再跨度8k個位元組,加起來為什麼恰恰是錯誤的結果呢?

答案是,這種加法根本就是沒錯的!給定乙個基址br

,跨度δ 後,下乙個位址是br

+δ是最樸素的數學加法怎麼會錯呢對吧!

錯的是,應該加的是4kb,而不是8kb。

這麼明顯的錯卻總是忽略。當前的0090,0000h指向的是頁面首位址,那麼下乙個頁面的位址自然是跨度乙個頁面大小的位置,肯定是+4k啊!

這便是本篇的重點,注意這個加和的細節,包括在計算頁表項實體地址也是如此。

這道題目的全解:0090,0000h + 4k = 0090,1000h

這裡還想強調的是,000h,共12位可以表示212

b,高位是211

。因為低位12位是頁內偏移,因此頁框號分別是:00900h,00901h。

再回看頁表項的儲存。基址是0020,0000h,由起始的邏輯位址0000,8000h,可以得到虛擬頁號是:00008h。頁表項從0開始編號,那麼00008是第八個頁表項。所以實體地址是:0020,0000h + 8 * 4b = 0020,0020h,下乙個頁表項的位址是:0020,0024h,因為乙個頁表項占用4b.

彙編學習筆記 2 2實體地址計算

要理解段位址偏移,首先要了解,為啥要計算段位址。舉個例子 8086cpu有20位位址匯流排,一次可以傳送20為位址,達到1mb的定址能力,但是,該cpu內部又是16位結構,一次處理傳輸和暫存的位址為16位,只能傳送16位的位址,定址能力只有64k,因此,通常8086cpu採用的是在內部用兩個16位位...

頁表實現從邏輯位址到實體地址的轉換

頁表的作用是實現從頁號到物理塊號的位址對映。以邏輯位址的頁號檢索頁表,得到該頁的物理塊號 同時將頁內位址直接送入實體地址暫存器的塊內位址欄位中。這樣物理塊號和塊內位址拼接成了實際訪問記憶體的位址,從而完成了從邏輯位址到實體地址的轉換 邏輯位址 頁號 頁內位址 實體地址 塊號 頁內位址 例題題目及解答...

記憶體管理 實體地址擴充套件(PAE)分頁機制

摘要 intel通過在處理器上把管腳數從 32增加到 36,以提高處理器的定址能力,使其達到 2 36 64gb,然而線性位址的位數仍然是32位,為此,需引入一種新的分頁機制。從pentium pro處理器開始,intel引入一種pae機制,另外一種叫做頁大小擴充套件機制 pse 在pentium ...