2020 操作系统 虚拟页式管理地址翻译 解答题
第 46 题

某 32 位系统采用基于二级页表的请求分页存储管理方式,按字节编址,页目录项和页表项长度均为 4 字节,虚拟地址结构如下所示。

页目录号(10位) 页号(10位) 页内偏移量(12位)

某 C 程序中数组 a[1024][1024]的起始虚拟地址为 1080 0000H,数组元素占 4 字节,该程序运行时,其进程的页目录起始物理地址为 0020 1000H,请回答下列问题。

(1) 数组元素 a[1][2]的虚拟地址是什么?对应的页目录号和页号分别是什么?对应的页目录项的物理地址是什么?若该目录项中存放的页框号为 00301H,则 a[1][2]所在页对应的页表项的物理地址是什么?

(2) 数组 a 在虚拟地址空间中所占区域是否必须连续?在物理地址空间中所占区域是否必须连续?

(3) 已知数组 a 按行优先方式存放,若对数组 a 分别按行遍历和按列遍历,则哪一种遍历方式的局部性更好?

虚拟页式管理 地址翻译

[tag_link]

1) ①页面大小=212 B = 4096B = 4KB。每个数组元素 4B,每个页面可以存放 4KB/4B=1024 个数组元素,正好是数组的一行,数组 a 按行优先方式存放。10800000H 的虚页号为 10800H,因此 a[0] 行存放在虚页号为 10800H 的页面中,a[1] 行存放在页号为 10801H 的页面中。a[1][2] 的虚拟地址为 10801000H+4×2=10801008H。②转换为二进制 0001 0000 1000 0000 0001 0000 0000 1000,根据虚拟地址结构可知,对应的页目录号为 042H,页号为 001H。③进程的页目录表起始地址为 00201000H,每个页目录项长 4B,因此 042H 号页目录项的物理地址是 00201000H+4×42H=00201108H。④页目录项存放的页框号为 00301H,二级页表的起始地址为 00301000H,因此 a[1][2]所在页的页号为 001H,每个页表项 4B,因此对应的页表项物理地址是 00301000H + 001H×4 = 00301004H。

2)根据数组的随机存取特点,数组 a 在虚拟地址空间中所占的区域必须连续,由于数组 a不止占用一页,相邻逻辑页在物理上不一定相邻,因此数组 a 在物理地址空间中所占的区域可以不连续。

3)由 1)可知每个页面正好可以存放一整行的数组元素,“按行优先方式存放”意味着数组的同一行的所有元素都存放在同一个页面中,同一列的各个元素都存放在不同的页面中,因此数组 a 按行遍历的局部性较好。