作者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