某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分别按行遍历和按列遍历,则哪一种遍历方式的局部性更好?
【解析】按行遍历的局部性更好,二维数组 a 的一行的元素个数与每个页面存放的元素个数相同,故一行的所有元素均可以存放在同一个页面中,行遍历时遍历同一行中的所有元素访问的是同一个页面。