第1题
某32位系统采用基于二级页表的请求分页存储管理方式,按字节编址,页目录项和页表项长度均为4字节,虚拟地址结构如下所示。
页目录号(10位) | 页号(10位) | 页内偏移量(12位) |
某C程序中数组a[1024][1024]的起始虚拟地址为10800000H,数组元素占4字节,该程序运行时,其进程的页目录起始物理地址为00201000H,请回答下列问题。
1)数组元素a[1][2]的虚拟地址是什么?对应的页目录号和页号分别是什么?对应的页目录项的物理地址是什么?若该目录项中存放的页框号为00301H,则a[1][2]所在页对应的页表项的物理地址是什么?
2)数组a在虚拟地址空间中所占的区域是否必须连续?在物理地址空间中所占区域是否必须连续?
3)已知数组a 按行优先方式存放,若对数组a 分别按行遍历和按列遍历,则哪种遍历方式 的局部性更好?
1)①页面大小=22B=4096B=4KB。每个数组元素4B,每个页面可以存放4KB/4B=1024个数组元素,正好是数组的一行,数组a按行优先方式存放。10800000H的虚页号为10800H,因此a[0]行存放在虚页号为10800H的页面中,a[1]行存放在页号为10801H的页面中。a[1][2]的虚拟地址为10801000H+4x2=10801 008H。
②转换为二进制0001000010 0000000001 000000001000,根据虚拟地址结构可知,对
应的页目录号为042H,页号为001H。
③进程的页目录表起始地址为00201000H,每个页目录项长4B,因此042H号页目录
项的物理地址是00201000H+4x42H=00201108H。
④页目录项存放的页框号为00301H,二级页表的起始地址为00301000H,因此a[1][2]
所在页的页号为001H,每个页表项4B,因此对应的页表项物理地址是00301 000H+001Hx4=00301 004H。
2 )根据数组的随机存取特点,数组a 在虚拟地址空间中所占的区域必须连续,由于数组a 不止占用一页,相邻逻辑页在物理上不一定相邻,因此数组a 在物理地址空间中所占的 区域可以不连续。
3)由 1)可知每个页面正好可以存放一整行的数组元素, “按行优先方式存放”意味着数 组的同一行的所有元素都存放在同一个页面中,同一列的各个元素都存放在不同的页面 中,因此数组a 按行遍历的局部性较好。