//
//作業系統和計算機組成原理裡都講到記憶體管理的頁式管理,但是本人以及很多初次學習分頁的時候,都會迷茫頁表大小和頁表項大小之間的關係,本人仔細分析了後寫了這篇blog,僅當學習交流,個人理解之用,如果有錯或者分析不夠嚴謹,歡迎指正。
//按字、圖結合起來分析,相信還是比較容易看懂。
號單元開始編址,稱之為目標模組的相對位址,即為邏輯位址。
頁:將程序劃分的塊,對應的大小就叫頁面大小。
頁框:將記憶體劃分的塊。
頁和頁框二者一一對應,乙個頁放入乙個頁框,(理論上)頁的大小和頁框的大小相等。 頁表
:就是乙個頁和頁框一一對應的關係表。【存放在記憶體中】
關係表只是起到乙個索引的作用,說白了就是能根據關係錶能查到某乙個頁面和哪乙個頁框所對應。 //
//已知條件:邏輯位址32
位、頁面大小
4kb、頁表項大小
4b,按位元組編址
。分析:
首先32
位的虛擬位址可表示的程序大小應該是2^32b = 4gb(暫時別去想頁號p佔多少位,w佔多少位)
2.(根據頁的定義和頁面大小的定義)將程序進行分頁:
3.我們已經知道了頁面的數目為:2^20頁。現在的迷茫點就在於頁表項的問題上。
上圖在頁表上已經給出了幾個資料:20位,
12位,
32位,2^20
項。一一解釋如下【請結合上圖乙個乙個資料分析】:
2^20
項:因為頁表的作用是要將頁面的頁框一一對應起來,所以,每乙個頁面在頁表中都應該有乙個頁表項:用來表示乙個頁號對應一頁頁框號(記憶體中的塊號),故應
該有2^20項。【不應該有問題吧,就好像乙個班有50個同學,每個人都應該有乙個位址一樣】
20位:已經很顯然了,需要表示出2^20個頁表項,就至少需要20
位的位址。為什麼只取
20位而不是
21位,
22位呢,本人現在還沒想這個問題,就暫時定為恰好取
20位即可。
32位:已知條件裡告訴了頁表項大小為4b
,那麼自然就應該是
32位了。
12位:32位
-20位
= 12
位。為什麼頁框號位址為
12位,只能表示2^12個頁框,要小於2^20個頁面呢,因為並不是程序的每乙個頁面都要調入記憶體。其實32
位、12
位、20
位這三個資料還是有一
定依據的,在二級分頁的時候就會發現「哦,原來剛剛好」。此處暫不討論二級分頁。
4.通過上面的分析我們得出了哪些資料:
邏輯位址32
位,程序大小:
4gb。
頁面:大小4kb
,數量:2^20頁。
頁表項:4b
,數量:2^20
項。所以頁表就需要4b*2^20
= 4mb的空間儲存(這就是書中說:頁表項大小為4mb
的由來)進一步,主存的頁框大小和頁面大小是相等的,也為
4kb,所以將頁表存在主存就需要占用
4mb/4kb = 1024
頁(因為頁表也是存在主存中的,而主存也是按頁框劃分的。這的確是一種資源浪費,所以就需要建立二級頁面,將其大小控制在
1頁之內,將二級頁面存入主存即可)
頁 頁表 頁表項
作業系統和計算機組成原理裡都講到記憶體管理的頁式管理,但是本人以及很多初次學習分頁的時候,都會迷茫頁表大小和頁表項大小之間的關係,本人仔細分析了後寫了這篇blog,僅當學習交流,個人理解之用,如果有錯或者分析不夠嚴謹,歡迎指正。按字 圖結合起來分析,相信還是比較容易看懂。號單元開始編址,稱之為目標模...
作業系統 頁式儲存方式,頁,頁表,頁表項
作業系統和計算機組成原理裡都講到記憶體管理的頁式管理,但是本人以及很多初次學習分頁的時候,都會迷茫頁表大小和頁表項大小之間的關係,本人仔細分析了後寫了這篇blog,僅當學習交流,個人理解之用,如果有錯或者分析不夠嚴謹,歡迎指正。按字 圖結合起來分析,相信還是比較容易看懂。頁 將程序劃分的塊,對應的大...
linux 頁 頁表 頁框 塊
基本介紹 我們知道,在linux作業系統中,cpu在執行乙個程序的時候,都會訪問記憶體。但cpu並不是直接訪問物理記憶體位址,而是通過虛擬位址空間來間接的訪問物理記憶體位址。所謂的虛擬位址空間,是作業系統為每乙個正在執行的程序分配的乙個邏輯位址,在32位機上,其範圍從0 4g 1。作業系統通過將虛擬...