作者svanavs (svanavs)
看板Grad-ProbAsk
標題Re: [理工] [OS]-台科95-資工
時間Tue Jul 21 03:47:39 2009
※ 引述《nowar100 (拋磚引玉)》之銘言:
: 先謝謝您幫忙解答
: 根據洪兔題庫
: (1) 2^28 * 35 bits
: 他的 35 是用 32+3 算出來的,可是我覺得應該是 20+3 吧
: 所以第一題我跟你想的一樣,我會寫 2^28 * 23 bits
我覺得是 2^28 * 40 bits
: (2)
: 1. 此程式占 16 MB / 4096 B = 2^12 pages
: 2. virtual addr space長這樣 : 12 + 16 + 12 bit
: 3. 一個 page table entry 占 32 bits
: level 1 僅占一個 entry = 32+1 bits
: level 2 有 2^12 個 entry = 2^12 * 32 bits
: total = 33 bits + 2^15 Bytes
因為 page table 是放在 main memory 裡
假設 資料是以 byte 為單位從 memory 抓出來
如果一個 page table entry 為 23 bits
則讀一個 entry 要抓 3 個 bytes
(所以一個 entry 實際佔 24 bits)
如果一個 page table entry 為 33 bits
則讀一個 entry 應至少要抓 5 個 bytes
(所以一個 entry 實際佔 40 bits)
該 process 用了 3 個連續的 16MB memory blocks
一個 memory block 可 paging 成
16MB / 4096 bytes = 2^12 個 pages
有三個 memory blocks 共有 3*2^12 個 pages
形成一個有 3*2^12 個 entries 的大 page table
一個 entry 包含 20 addr-bit + 3 bits = 23 bits < 24 bits
大 page table 共需要 24*3*2^12 個 bits
這個大 page table 再去 paging :
24*2^12 bytes / 2^12 bytes = 24 個小 page tables
題目說 40-bit virtual-addr 的前 12 個 bits 用在 level 1 的 indexing
而一個 page offset 需要 12 個 bits
則 40 bits 分成 :
P1 P2 Offset
12 16 12
因此
level 2 有 24 個 page tables
每個 page table 有 2^16 個 entries
每個 entry 有 20 addr-bit + 3 bits = 23 bits < 24 bits
共需要 24*2^16*24 bits = 12 MB
而
level 1 的 page table 有 24 個 entries
每個 entry 有 32 addr-bit + 1 valid-bit = 33 bits < 40 bits
共需要 24*40 bits = 320 bytes
所以,在 byte-addressible 的架構下
該 process 的 2-level page table 實際所佔記憶體空間約為 12 MB
以上是我的看法~ 有錯請鞭~
--
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 60.198.131.51
1F:推 nowar100:唔唔 好長 XD 07/21 12:19