看板 Grad-ProbAsk 關於我們 聯絡資訊
※ 引述《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
nowar100:唔唔 好長 XD 07/21 12:19