问答题
一个系统采用段页式存储方式,有16位虚地址空间,每个进程包含两个段,并且一页大小为212字节。段表和页表如图所示(所有的值为二进制,并且段长以页为单位)。下列哪些二进制虚地址会产生缺段中断或缺页中断?哪些二进制虚地址能转换为物理地址?如果可以转换,请写出物理地址。
(1)00010100 01010111(提示:产生缺段中断或缺页中断?)
(2)11100100 11111111(提示:转换后的物理地址是什么?)
(3)¨110100 11000111(提示:产生缺段中断或缺页中断?)
(4)00110010 11000111(提示:转换后的物理地址是什么?)
(5)请问该系统最大物理内存是多少?
段表 | 页表0 | 页表1 |
段号 | 段长 | 页表地址 | 页号 | 存储块 | 状态 | 页号 | 存储块 | 状态 |
0 | 111 | 指向页表 | 000 | 101011 | 1 | 000 | 010100 | 0 |
| | 0的指针 | 001 | 001010 | 0 | 001 | 110101 | 1 |
1 | 110 | 指向页表 | 010 | 001011 | 1 | 010 | 110100 | 0 |
| | 1的指针 | 011 | 100110 | 1 | 011 | 011001 | 0 |
| | 100 | 001100 | 0 | 100 | 110011 | 1 | |
| | 101 | 110110 | 1 | 101 | 001001 | 0 | |
| | 110 | 111010 | 0 | 110 | 000101 | 1 | |
| | 111 | 011101 | 0 | 111 | 100010 | 1 | |
【正确答案】由给出的虚地址为16位,已知每页大小为212,可知页内偏移须占12位,段长以页为单位,可知页号只需3位就可以,另一位就是段号,所以16位的地址格式中段号占1位(最高位),段内页号占3位,页内偏移为12位。
(1)00010100 01010111,第一位为0,表示段号为0,有此段号,接着后面3位为001,段0的长度为111,此页号小于111,再从页表0中找到001页.发现其状态位为0表示没有在内存中,故产生缺页中断。
(2)1110010011111111,第一位为1,表示段号为1,有此段号,接着后面3位为110,段1的长度为110,此页号小于等于110,再从页表1中找到110页,其状态位为1表示在内存中,故找到其物理块号为000101,加上后面的12位页面偏移,得到物理地址为:000101010011111111。
(3)11110100 11000111,第一位为1,表示段号为1,有此段号,接着后面3位为111,段1的长度为110,此页号大于段长,故应产生越界中断,在此题中只能选择缺段中断。
(4)00110010 11000111,第一位为0,表示段号为0,有此段号.接着后面3位为011,段0的长度为111,此页号小于111.再从页表0中找到011页,其状态位为1表示在内存中,故找到其物理块号为100110.加上后面的12位页面偏移,得到物理地址为:100110010011111111。
(5)在给出的页表中,物理块号占6位,表明可以有26个物理块,每一块的大小是212字节,可知该机器的最大物理内存是26*212=256 KB。
【答案解析】[解析] 解此类题,首先搞清楚虚地址中哪几位是代表段号,哪几位代表页号,哪几位代表页内位移,一般可由已知条件得出,对于段页式的存储方式,给出虚地址,首先判断是否会产生越界中断,一段号是否大于已有段号,二给出的页号是否大于段长;其次判断是否会产生缺段中断,看给出的段号在内存中是否存在,如不存在产生缺段中断;再次判断是否会产生缺页中断,给出的页号在内存中是否存在,如果不存在产生缺页中断;最后如果题中还有存取权限控制,判断是否产生保护性中断。如果前面几种情况都没有出现,则根据题意找到相对应的物理块号,与页内位移形成相应的物理地址。此题中将地址越界与缺段中断混为一起,多有不妥。