操作系统——二级分页存储管理
注
1、页内地址 = 页内偏移量
2、物理块号 = 块号
3、一般题目会给定逻辑地址,求物理地址。则将逻辑地址后的位数为 逻辑地址位数(),若得知其中一个的位数,相减可得另一个的位数。
4、页目录表 = 一级页表 = 外层页表 = 顶层页表。
5、页的数量 = 页框的数量
6、一般物理块号在题目中会以的方式给出。
页目录表
| 0 | 1006 |
| 1 | 1257 |
| 2 | 1693 |
| ... | ... |
页表0
| 0 | 2 |
| 1 | 4 |
| 2 | 6 |
| ... | ... |
页表1
| 0 | 201 |
| 1 | 210 |
| 2 | 232 |
| ... | ... |
页表2
| 0 | 1501 |
| 1 | 1511 |
| 2 | 1523 |
| ... | ... |
地址格式
| 页目录号 | 页号(页表索引) | 页内偏移量 |
|---|---|---|
公式
= 物理块号(块号) * 页面大小 + 页内地址(页内偏移量)
= 页表项的大小 * 页表项的个数
1、页号 = 逻辑地址 / 页面长度(向下取整)
2、页号 = 页面数量的2的次方数
1、页内地址(页内偏移量) = 逻辑地址 % 页面长度
2、页内地址(页内偏移量) = 页面大小的2的次方数
=
=
= 页目录项大小 * 页目录号大小
可以分为
| 页号 | 页内偏移量 |
|---|---|
1、块的数量 = 内存大小/页面大小
2、块号占的位数 = 块的数量的2的次方
题解
页目录表
| 0 | 1006 |
| 1 | 1257 |
| 2 | 1693 |
| ... | ... |
页表0
| 0 | 2 |
| 1 | 4 |
| 2 | 6 |
| ... | ... |
页表1
| 0 | 201 |
| 1 | 210 |
| 2 | 232 |
| ... | ... |
页表2
| 0 | 1501 |
| 1 | 1511 |
| 2 | 1523 |
| ... | ... |
某计算机系统的主存按字节编址,逻辑地址和物理地址都是32位,其内存管理采用两级页表的分页存储管理方式。逻辑地址中页号为10位,页内偏移地址为10位。该计算机系统的两级页表结构如上图所示,图中数值均为十进制数。
(1)页目录号的位数为多少?页的大小为多少KB?
= 逻辑地址位数 - 页号位数 - 页内偏移地址位数 = 32 - 10 - 10 =
= = B = 1KB。
(2)如果页目录项大小为4字节,则一个页目录表最大为多少KB?
= 页目录项大小 * 页目录号大小() = 4 * =
(3)设某逻辑地址为0x00200643,其页内偏移量是多少?该逻辑地址所对应的物理地址是多少? (历年真题•2022年10月)
逻辑地址 0x00200643 的 二进制为
而页内偏移量是10位,所以取该二进制的后10位
转为16进制是 0x243。
所以 = 0x243
因为在二进制情况下, = 逻辑地址位数 - 页号位数 - 页内偏移地址位数 = 1000000000011001000011(的位数) - 10 - 10 = 10 =
根据上面的图片,则对应2号页表。
因为页号为10位,可得为 0000000001 = 1
根据上面的图片,则对应2号页表中的 1511。
= 1511
= = = 1024B
因为页内偏移量为10位,可得为 1001000011 = 579
= 物理块号(块号) * 页面大小 + 页内地址(页内偏移量) = 1511 * 1024 + 579 = 1547843 = 0x179e43