2013年页表408大题

某计算机主存按字节编址,逻辑地址和物理地址都是32位,页表项大小为4B。

1.若使用一级页表的分页存储管理方式,逻辑地址结构为

页号(20位)

页内偏移量(12位)

则页的大小是多少字节?页表最大占用多少字节?

【解析】页的大小为2^12B=4KB,页表最大占用页表最大占用2^20 *4B=2^22B=4MB

2.若使用二级页表的分页存储管理方式,逻辑地址结构为

页目录号(10位)

页表索引(10位)

页内偏移量(12位)

设逻辑地址为LA,请分别给出其对应的页目录号和页表索引的表达式。

【解析】

页目录号可表示为(((unsigned int)(LA))>>22)& 0x3FF

页表索引可表示为(((unsigned int)(LA))>>12)& 0x3FF

注:可用“无符号右移动>>”和“按位与&”操作取出某几个二进制位的值。

如01101101,00000000右移动——高位用0补齐,右边8位全舍去,LA>>8

得00000000,01101101,LA>>8

                     1111 1111  0xFF(按位与&:只有对应位都为1时“与”结果才为1)

结果是          01101101

3.采用(1)中的分页存储管理方式,一个代码段的起始逻辑地址为0000 8000H,其长度为8KB,被装载到从物理地址0090 0000H开始的连续主存空间中。页表从主存0020 0000H开始的物理地址处连续存放(我注:每个进程都有一个对应的页表),如下图所示(地址大小自下向上递增)。请计算出该代码对应的2个页表项的物理地址、这2个页表项中的页框号,以及代码页面2的起始物理地址。

【解析】代码段为8KB,而一个页面是4KB,所以代码段占2个页面。

代码页面1的逻辑地址为0000 8000H,表明其位于第8个页处,对应页表中的第8个页表项,所以第8个页表项的物理地址=页表始址0020 0000H+8×4=0020 0020H【特别注意对于“新地址的计算”,这里是十六进制加十进制的32,先把32换算成20H再进行计算即可,同时不要误以为是加32B】。

第一个页表的页框号为00900,第二个页表的页框号为00901,代码页面2的起始物理地址即第9个页表项的物理地址=页表始址+9×4=0020 0024H。代码压面2的起始物理地址=00901000H。

 

猜你喜欢

转载自blog.csdn.net/qq_35812205/article/details/106974486