2017-06-13 58 views
-3

我有這個問題的答案,但我仍然不明白其中的一些。你能解釋他們嗎?虛擬內存和每個項目的大小

考慮一個具有16位虛擬地址的系統,其中12位用於頁面偏移量。對於以下每個問題,請回答問題並簡要說明您的答案,如果答案無法從所提供的信息中確定,則表明爲「未知」。 (a)虛擬頁面有多大? 2^12字節

(b)物理頁面有多大? 2^12字節

(c)單個進程的虛擬地址空間有多大(以字節爲單位)? 2^16字節

(d)存在多少個物理頁面? 未知

(e)在系統上運行的所有進程中,全局存在多少個虛擬頁面? 未知

回答

0

a+b) 12位用於偏移量。你可以用12位來解決多少個地址?回答:2^12。這就是爲什麼頁面大小爲2^12 = 4096 bytes = 4KB

c)您可以用16位來解決多少個地址? 2^16 B這是虛擬地址。

d) #frames = main-memory-size/page-size由於不知道物理內存大小而未知。

e)取決於系統中的進程數量。

0

在虛擬地址,

頁的尺寸偏移帳戶的字節數一個頁面內,因爲一個偏移指向物理存儲器中的一個字節。這裏是12位,因此一頁中的數字字節是2^12(a)

頁碼的大小佔虛擬內存中總頁數的幀數。這裏頁面大小是4位長,16-12,所以總頁數是2^4

(b)由於頁大小等於頁框大小,因此它等於2^12字節。

(c)虛擬地址空間=總頁號*頁大小= 2^4 * 2^12 = 2^16(可以直接從虛擬地址的位的數目來計算)。

(d)您無法從虛擬地址空間中分辨幀數。具有虛擬地址空間的點是能夠分配比可用物理尺寸大得多的內存。

(e)每個進程最多可以有2^4個虛擬頁面。所以虛擬頁面的總數取決於進程的數量。