作業系統 頁儲存

2021-10-01 06:35:06 字數 1238 閱讀 9727

為了能知道每個程序的每個頁面在記憶體中的存放位置,作業系統需要為每個程序建立一張頁表。

如上圖所示頁表,記錄了頁面在記憶體中對應的記憶體塊號,頁表一般存放在記憶體中。在配置了頁表後,程序執行時,通過查詢該錶,即可找到每頁在記憶體中的記憶體塊號。可見頁表作用是實現從頁號到記憶體塊號的位址對映。這就是頁儲存。

頁儲存的特點:

頁號為什麼是隱含的?

因為要想知道頁面對應的實際記憶體塊,只需要知道塊號即可,而頁表項是連續的,因此只需要知道頁表在記憶體中的起始位址以及每個頁表項的長度即可

如何實現位址轉換?

實體地址 = 頁面始址 + 頁內偏移量

第一種計算方式:

第二種計算方式:

頁面大小一般為2的整數次冪

假設用32位表示邏輯位址,頁面大小為(2^k)b,則末尾k位代表頁內偏移量,其餘部分代表頁號

反過來說

如果有 k 位代表頁內偏移量,則每個頁面大小為 2^k 個記憶體單元

如果有 m 位代表頁號,則每個程序最多允許有 2^m 個頁面

從以上描述可以看出頁式儲存系統是一維的,只需要告訴系統邏輯位址,系統便可推算出頁號 、頁內偏移量等資訊從而找到對應實體地址。

區域性性原理

快表

基於區域性性原理,在慢表的基礎上,加乙個快表,在計算實體地址時候,先去訪問快表,如果快表命中,則直接得到實體地址,只需要進行一次訪存。如果快表未命中,則去訪問慢表,並將慢表頁表項複製到快表,需要進行兩次訪存。

兩級頁表

單級頁表的缺陷:

針對缺陷1:對單級頁表的頁表項進行分組,對分組後的頁表項建立頁目錄表

針對缺陷2:如上圖所示,可以在需要訪問頁面時才把頁面調入記憶體(虛擬儲存技術),在頁表項中增加乙個標誌位用於表示該頁面是否已被調入記憶體。若想訪問的頁面不在記憶體中,則會產生缺頁中斷(內中斷),然後作業系統會把目標頁面從外存調入記憶體。

兩級頁表的訪存

作業系統 頁式儲存方式,頁,頁表,頁表項

作業系統和計算機組成原理裡都講到記憶體管理的頁式管理,但是本人以及很多初次學習分頁的時候,都會迷茫頁表大小和頁表項大小之間的關係,本人仔細分析了後寫了這篇blog,僅當學習交流,個人理解之用,如果有錯或者分析不夠嚴謹,歡迎指正。按字 圖結合起來分析,相信還是比較容易看懂。頁 將程序劃分的塊,對應的大...

作業系統 頁式虛擬儲存位址變換

include stdio.h define n 64 模擬實驗中假定的頁表長度,即最多允許程式含有多少頁 假定頁面大小為1k define length 10 struct page n 頁表定義 int m m為該作業在主存中的主存塊塊數 int page length 頁表實際長度 int p...

作業系統,二級頁表儲存方式

標籤 空格分隔 作業系統 有乙個24bit的作業系統,4kb page 每個頁表佔4kb 4byte page table entry 每個頁表項佔4b 問 給你乙個虛擬位址,要求你求出其在記憶體中的實體地址 由每個頁表佔4kb,可得 4k b 212 24bi t4kb 212 4096 所以對映...