2010年第29题
某计算机采用二级页表的分页存储管理方式,按字节编址,页大小为 2102^{10}210B,页表项大小为 2B,逻辑地址结构为
逻辑地址空间大小为 2162^{16}216页,则表示整个逻辑地址空间的页目录表中包含表项的个数至少是( )
A. 64 \qquad B. 128 \qquad C. 256 \qquad D. 512
解析
本题考查计算机内存管理中的二级页表分页存储管理机制,涉及到如下知识点:
-
分页存储管理:分页存储管理将逻辑地址空间划分为固定大小的页,物理地址空间划分为相同大小的帧(物理块、页框)。逻辑地址由页号和页内偏移量组成。页表用于映射逻辑页号到物理帧号。
-
二级页表:二级页表用于减少大地址空间下单级页表的内存占用。逻辑地址分为三部分:页目录号、页号、页内偏移量。
- 页目录表是顶级表,每个表项指向一个页表;
- 页表是二级表,每个表项指向物理帧。
- 页目录表项数和页表项数由各自的地址位数决定。
-
逻辑地址:逻辑地址的位数由逻辑地址空间大小决定。地址各部分位数分配如下:
-
页内偏移量位数由页大小决定(2k2^k2k 字节页需要 kkk 位偏移)。
-
剩余位数用于页索引(页目录号和页号),在二级页表中需划分为两部分。
-
对于本题而言,题目一直逻辑地址空间大小为 2162^{16}216 页,此处特别注意,是以“页”为单位给出的逻辑地址空间。每个页大小为 2102^{10}210 B,因此总地址空间为 216×210=2262^{16} \times 2^{10} = 2^{26}216×210=226 B。所以,逻辑地址总位数为 26 位。
-
-
页表项大小与页大小约束:
- 在分页系统中,页表本身也存储在内存中,通常设计为不超过一页大小,以避免页表本身需要分页(即避免多级页表退化)。页表大小由页表项大小和项数决定:页表大小 = 页表项数 ×\times× 页表项大小。若页表大小超过页大小,则需更多级页表,但本题指定为二级页表,因此每个页表必须适应一页。
- 本题中页的大小为 2102^{10}210 B,页表项大小为 2 B,因此每个页表最大可容纳项数为 2102=29=512\frac{2^{10}}{2} = 2^9 = 5122210=29=512。
由以上知识点 3 可得到逻辑地址总位数为 26 位,由页大小可知内偏移量占 10 位,则剩余 16 位用于页目录号和页号。
又由于一张页表将来也要装入内存的一个页框,即页表最大容量就是一个页的大小,即每个页表 ≤210\leq 2^{10}≤210 B。每个页表项大小为 2 B,所以每个页表中最大项数为 512(292^929),由此可知,页号部分至少占 9 位。
为了最小化页目录表项数,需最大化每个页表项数(即最大化页号位数)。由上述分析已知,最大页号位数为 9 位,因此页目录号位数最小为 16−9=716 - 9 = 716−9=7 位,对应页目录表项数 27=1282^7 = 12827=128。
本题答案:B