OS_作业3
第一题
(1)进程整个的地址空间为 $2^{32}$ 字节,一页有 $2^{22}$ 字节
(2)
第一级页表的起始基地址:
- 根据页表项宇地址空间是线性映射的,
0x80000000
对应0x80000000 >> 12
个页表项- 由于一个页表项占4B空间,偏移为
0x80000000 >> 12 * 4
,即0x200000
- 起始基地址为
0x80200000
通过逻辑地址
0x80200000
读出第一级页表所在的物理页框号(0x80200800存入数据为0x80200000该起始基地址,绕了两圈又回来了)注:根据线性映射,每个虚拟地址都存在于某个页表内,可能是页目录项所在页表还是页表项所在页表。但是每个虚拟地址存在其对应的物理地址的条件是其对应的每一级页表都存在相应的的物理页表可供查询。
(3)
0x0访问缺失
0x00803004
- 页目录项的物理地址:0x1008
- 页表项的物理地址:0x500c
- 获取的物理地址:0x20004
0x00402001
- 页目录项的物理地址:0x1004
- 页表项的物理地址:0x1008
- 获取的物理地址:0x5001
注:根据实际物理页表的基地址加上偏移量寻找表项或者物理地址
(4)
逻辑地址:0x00c01028
第二题
一个地址对应一字节(8位),每个页表项大小是4字节,四字节对齐
大尾端符合直观读取数据
Load [0x00001022]
- 页目录项的物理地址:0x0020_0000
- 地址数据:0x0010_0007,有效位为1
- 页表项的物理地址:0x0010_0004
- 地址数据:0x0000_4067,有效位为1,读写位为1
- 物理地址:0x0000_4022
- 读入数据:20
Store [0x00C07222]
- 页目录项的物理地址:0x0020_000C
- 地址数据:0x0010_3007,有效位为1
- 页表项的物理地址:0x0010_301C
- 地址数据:0xEEFF_0001,有效位为1,读写位为0
- 物理地址:0xEEFF_0222
- Error
Store[0x00C005BF]
- 页目录项的物理地址:0x0020_000C
- 地址数据:0x0010_3007,有效位为1
- 页表项的物理地址:0x0010_3014
- 地址数据:0x6677_8899,有效位为1,读写位为0
- 物理地址:0x6677_85BF
- Error
Load [0x00003013]
- 页目录项的物理地址:0x0020_0000
- 地址数据:0x0010_0007,有效位为1
- 页表项的物理地址:0x0010_000C
- 地址数据:0x0000_4007,有效位为1,读写位为1
- 物理地址:0x0000_4013
- 读入数据:19
Load [0xFF80078F]
- 页目录项的物理地址:0x0020_0FF8
- 地址数据:0x001F_E007,有效位为1
- 页表项的物理地址:0x001F_E000
- 地址数据:0x0415_0000,有效位为0,读写位为0
- Error
Load [0xFFFFF005]
- 页目录项的物理地址:0x0020_0FFF
- 越界
- Error
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Ascendira!