2013年页表408大题

知识回顾

(1)某个页表项的物理地址=页表始址+k×页表项大小

-------------注:这个k往往要从条件的类似“代码的逻辑地址的页号”信息中获得。

(2)

真题

某计算机主存按字节编址,逻辑地址和物理地址都是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

第三问:第k个页表项的物理地址

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

请计算出该代码对应的2个页表项的物理地址、这2个页表项中的页框号,以及代码页面2的起始物理地址。

2013年页表408大题_第1张图片

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

代码页面1的逻辑地址为0000 8000H,表明其位于第8个页处,对应页表中的第8个页表项,所以第8个页表项的物理地址=页表始址0020 0000H+8×4(从0020 0000H的页表始址看出物理地址是32位=4B)=0020 0020H

特别注意对于“新地址的计算”,这里是十六进制加十进制的32,先把32换算成20H再进行计算即可,同时不要误以为是加32B】。

第一个页表的页框号为00900,第二个页表的页框号为00901,

页面2的页表项物理地址即第9个页表项的物理地址=页表始址+9×4=0020 0024H。

代码页面2的起始物理地址=00901000H。

2013年页表408大题_第2张图片

 

你可能感兴趣的:(操作系统)