某计算机主存按字节编址,逻辑地址和物理地址都是32位,页表项大小为4字节。请回答下列问题。
(1) 若使用一级页表的分页存储管理方式,逻辑地址结构为:

则页的大小是多少字节?页表最大占用多少字节?
(2) 若使用二级页表的分页存储管理方式,逻辑地址结构为:

设逻辑地址为LA,请分别给出其对应的页目录号和页表索引的表达式。
(3) 采用(1)中的分页存储管理方式,一个代码段起始逻辑地址为0000 8000H, 其长度为8 KB,被装载到从物理地址0090 000H开始的连续主存空间中。页表从主存0020 0000H开始的物理地址处连续存放,如下图所示(地址大小自下向上递增)。请计算出该代码段对应的两个页表项的物理地址、这两个页表项中的页框号以及代码页面2的起始物理地址。

【答案】(1) 由于主存按字节编址,页偏移量为12位,故页大小为212B=4KB。页表项数为220,故该以及页表最大为220×4B=4MB。
(2) 由题,求页目录号只需要将逻辑地址右移22位,再与1111 1111 11(二进制)(转换为16进制为0x3FF)进行按位与运算,有:页目录号=((( unsigned int)(LA))>> 22 )& 0x3FF;
同理有:页表索引=((( unsigned int)(LA))>> 12 )& 0x3FF;
(3) 采用一级页表的分页存储管理方式,故逻辑地址前20为代表页号。代码页面1的逻辑地址为0000 8000H,则表明其位于第8个页处,对应页表中的第8个页表项,所以物理地址1(即第8个页表项的物理地址)=页表起始地址+8X页表项的字节数= 00200000H+8X4 = 0020 0020H;物理地址2=物理地址1+4= 0020 0024H。代码页面起始地址为0090 000H,前20位为页框号,则页框号1为0090 0H;页框号2为0090 1H;故代码页面2的起始物理地址为0090 1000H。
