题目
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 分别按行遍历和按列遍历,则哪一种遍历方式的局部性更好?【
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 分别按行遍历和按列遍历,则哪一种遍历方式的局部性更好?【
题目解答
答案
解析】(1) 页面大小= 212 B = 4KB,数组元素占 4 字节,每个页面存放 1K 个数组元素,1080000H 的虚页号为 1080H,注意到二维数组 a 的一行的元素个数与每个页面存放的元素个数相同,故 a[0]存放的虚页号为 1080H,a[1]存放的虚页号为 1081H,a[1][2]的虚拟地址为 1081 0000H + 2*4 = 1081 0008H1081 0008H = 0001 0000 1000 0001 0000 0000 0000 1000,对应的页目录号为 66,页号为 16页目录的长度为 4B,66 号页目录项的物理地址是 0020 1000H + 66*4 = 0020 1108H该目录项中存放的页框号是 00301H,则该页框的起始地址是 0030 1000H,a[1][2]所在页面的页号为 16,每个页表项为 4B,对应的页表项物理地址为 00301000H+16*4 = 0030 1040H(2) 在虚拟地址空间中所占区域必须连续,在物理地址空间中所占区域可以不连续(3) 按行遍历的局部性更好,二维数组 a 的一行的元素个数与每个页面存放的元素个数相同,故一行的所有元素均可以存放在同一个页面中,行遍历时遍历同一行中的所有元素访问的是同一个页面。