學習分頁儲存管理的過程中,對於每個頁表項大小的下限如何確定這個問題不是很理解,經過一番周折終於弄懂,特此記錄。
問題描述
以32位邏輯位址空間、位元組編址單位、一頁4kb為例,位址空間有232b / 4 kb = 1m頁,需要log21m = 20位才能保證範圍容納所有頁面,而又因為以位元組作為編址單位,即頁表項的大小大於等於20 /8 = 3b.這個3b是個下界,可以選擇4b使得乙個頁面正好可以裝下1k個頁表項。
對於虛擬分頁儲存的每個程序來說,它的邏輯位址空間為32位,程序之間互不影響。
按位元組編址的意思是每乙個位址所對應的儲存單元可以存放乙個位元組的資料,也就是8位的資料。
分頁系統中乙個邏輯位址分為兩個部分,高位是頁號,低位是頁偏移量。因為是32位的邏輯位址空間,假設後12位表示頁偏移量,也就是乙個頁面所對應212個邏輯位址,相對應的就是包含212個儲存單元,按照上面的位元組編址,也就是說乙個頁面所包含的資料量是212b也即4kb。
乙個位址總共32位,現在後12位表示了頁容量的大小,前20位可以表示頁的編號。即可以包含220個頁面,總共是1m個,這裡的1m並不是儲存容量,而是數量單位。計算機中基本的儲存單元是b,即乙個位元組。一位元組只能包含8位,所以至少要3個位元組才可以將20位容納,所以頁表項所佔記憶體大小至少是3b。
乙個頁表有多個頁表項,要想準確定位每個頁表項從上述問題出發即可解決。
當乙個程序得到處理機的排程,其pcb中儲存的頁表始址和頁表長度就存到了處理機的頁表暫存器之中。根據邏輯位址所給出的頁號 * 頁表項的長度 + 始址就得到每個頁表項的位址,從頁表項位址的對應的資料單元取出資料。
這裡應注意的是,因為乙個位址所對應僅乙個位元組,而乙個頁表項的大小不一定小於乙個位元組,所以往往頁表項的位址並不是連續的,換算的時候需要乘以頁表項的長度。也就是說我們計算出來的是頁表項資料的基址而不是一對一的位址。
作業系統 頁式儲存方式,頁,頁表,頁表項
作業系統和計算機組成原理裡都講到記憶體管理的頁式管理,但是本人以及很多初次學習分頁的時候,都會迷茫頁表大小和頁表項大小之間的關係,本人仔細分析了後寫了這篇blog,僅當學習交流,個人理解之用,如果有錯或者分析不夠嚴謹,歡迎指正。按字 圖結合起來分析,相信還是比較容易看懂。頁 將程序劃分的塊,對應的大...
頁表項數如何計算 作業系統基礎34 頁表結構
下面將 組織頁表的一些最常用技術,包括分層分頁 雜湊頁表和倒置頁表。大多數現代計算機系統支援大邏輯位址空間 2 32 2 64 在這種情況下,頁表本身可以非常大。例如,假設具有 32 位邏輯位址空間的乙個計算機系統。如果系統的頁大小為4kb 2 12 那麼頁表可以多達 100萬的條目 2 32 2 ...
作業系統 頁式儲存 頁與塊之間的關係詳解
作業系統 頁式儲存 頁 塊 邏輯位址 實體地址 塊號 頁號 以下這些概念在剛開始學的時候簡直要逼瘋我了,因為不同書籍不同作者就會有不同的叫法,比如說頁內位址有叫頁偏移的,塊有叫頁框的。反正各種不爽。如果你也有這種狀況,那不好意思,我先得說明一下,你還是適應一下我的叫法。因為這篇文章我說了算 有沒有很...