操作系统——二级分页存储管理

695 阅读3分钟

操作系统——二级分页存储管理

1、页内地址 = 页内偏移量
2、物理块号 = 块号
3、一般题目会给定逻辑地址,求物理地址。则将逻辑地址转成2进制\color{red}{转成2进制}后的位数为 逻辑地址位数(由页号和页内地址组成\color{red}{由页号和页内地址组成}),若得知其中一个的位数,相减可得另一个的位数。
4、页目录表 = 一级页表 = 外层页表 = 顶层页表。
5、页的数量 = 页框的数量
6、一般物理块号在题目中会以二级页表\color{red}{二级页表}的方式给出。

页目录表

01006
11257
21693
......

页表0

02
14
26
......

页表1

0201
1210
2232
......

页表2

01501
11511
21523
......

地址格式

页目录号页号(页表索引)页内偏移量

公式

物理地址\color{red}{物理地址} = 物理块号(块号) * 页面大小 + 页内地址(页内偏移量)
页表大小\color{red}{页表大小} = 页表项的大小 * 页表项的个数
页号(多少位)\color{red}{页号(多少位)}

1、页号 = 逻辑地址 / 页面长度(向下取整)
2、页号 = 页面数量的2的次方数

页内地址(页内偏移量)\color{red}{页内地址(页内偏移量)}

1、页内地址(页内偏移量) = 逻辑地址 % 页面长度
2、页内地址(页内偏移量) = 页面大小的2的次方数

页的大小\color{red}{页的大小} = 2页内地址(页内偏移量)位数2^{页内地址(页内偏移量)位数}
页目录号大小\color{red}{页目录号大小} = 2页目录号位数2^{页目录号位数}
页目录表大小\color{red}{页目录表大小} = 页目录项大小 * 页目录号大小
逻辑地址\color{red}{逻辑地址} 可以分为 页号、页内偏移量\color{red}{页号、页内偏移量}
页号页内偏移量
内存提供的信息\color{red}{内存提供的信息}

1、块的数量 = 内存大小/页面大小
2、块号占的位数 = 块的数量的2的次方

题解

页目录表

01006
11257
21693
......

页表0

02
14
26
......

页表1

0201
1210
2232
......

页表2

01501
11511
21523
......

某计算机系统的主存按字节编址,逻辑地址和物理地址都是32位,其内存管理采用两级页表的分页存储管理方式。逻辑地址中页号为10位,页内偏移地址为10位。该计算机系统的两级页表结构如上图所示,图中数值均为十进制数。

(1)页目录号的位数为多少?页的大小为多少KB?

页目录号位数\color{red}{页目录号位数} = 逻辑地址位数 - 页号位数 - 页内偏移地址位数 = 32 - 10 - 10 = 12()\color{red}{12(位)}

页的大小\color{red}{页的大小} = 2页内地址(页内偏移量)位数2^{页内地址(页内偏移量)位数} = 2102^{10}B = 1KB。

(2)如果页目录项大小为4字节,则一个页目录表最大为多少KB?

页目录表大小\color{red}{页目录表大小} = 页目录项大小 * 页目录号大小(2页目录号位数2^{页目录号位数}) = 4 * 2122^{12} = 214B\color{red}{2^{14}B}

(3)设某逻辑地址为0x00200643,其页内偏移量是多少?该逻辑地址所对应的物理地址是多少? (历年真题•2022年10月)

逻辑地址 0x00200643 的 二进制为 1000000000011001000011\color {red}{1000000000011001000011}
而页内偏移量是10位,所以取该二进制的后10位 1001000011\color {red}{1001000011}
转为16进制是 0x243。
所以页内偏移量\color {red}{页内偏移量} = 0x243


因为在二进制情况下,页目录号\color{red}{页目录号} = 逻辑地址位数 - 页号位数 - 页内偏移地址位数 = 1000000000011001000011(的位数) - 10 - 10 = 10 = 2\color{red}{2}

根据上面的图片,则对应2号页表。

因为页号为10位,可得页号\color{red}{页号}为 0000000001 = 1

根据上面的图片,则对应2号页表中的 1511。

物理块号\color{red}{物理块号} = 1511

页面大小\color{red}{页面大小} = 2页内偏移量的位数2^{页内偏移量的位数} = 2102^{10} = 1024B

因为页内偏移量为10位,可得页内偏移量\color{red}{页内偏移量}为 1001000011 = 579

物理地址\color{red}{物理地址} = 物理块号(块号) * 页面大小 + 页内地址(页内偏移量) = 1511 * 1024 + 579 = 1547843 = 0x179e43