2017-05-05 98 views
2

現在我正在學習內存管理OS分層頁表

在分層頁表結構,如果有32位機,page-size4KBpage-entry大小4B

爲什麼地址位分成10-10-12

我知道20 - 1212位是offset值由4K字節 - > 2^12

但爲什麼20個比特變成10-10

是它不可能11-9或12-8?

回答

1

因爲他們正在使用兩級頁表。 20-12將只使用1級頁表並消耗內存。

前10位(0-9)PGDIR中的對應條目。該條目將指向一個頁表,在該頁表中,您將訪問對應於第二個10位的條目。 (10-19)

動機:
考慮開銷來存儲所有需要的頁表以維護一個進程。
#pages * size_entry = 2^20 * 4 = 4MB

這是很多!
但是,如果我們使用了第一級頁表,它有1024個條目,每個指向額外的1024個頁表?就像以前那樣是1024 * 1024 = 1M條目。

現在的內存開銷是多少? 1K * 4 + 1 * 4 = 4KB + 4B = 4KB