某使用二级页表的系统的虚地址是32位。地址的前8位是一级页表的索引,后10位指定二级页表项。试问:
问答题     页的大小有多少B?
 
【正确答案】214
【答案解析】
问答题     一级页表的长度是多少?
 
【正确答案】28
【答案解析】
问答题     二级页表的长度是多少?
 
【正确答案】210
【答案解析】
问答题     虚地址空间中有多少页?
 
【正确答案】218
【答案解析】
问答题   某计算机有64位虚地址空间,且页大小是2048B。每个页表项长为4B。因为所有页表都必须包含在一页中,所以使用多级页表。问一共需要多少级?
 
【正确答案】6
【答案解析】
问答题   在某页式系统中,相联寄存器存放了最活跃的页表项,并且将全部的页表都存储在主存中。查询相联寄存器要花60ns,查询主存中页表要花200ns。当相联寄存器的命中率为40%时,问有效访问时间是多长?
 
【正确答案】144ns
【答案解析】
问答题   在某页式系统中,联想存储器存放了最活跃的页表项,并且将全部的页表都存储在主存中。查询联想存储器要花90ns,查询主存中页表要花190ns。问命中率为多少时,有效访问时间是120ns?
 
【正确答案】70%
【答案解析】
问答题   用C语言函数模拟简单分段系统的存储器管理硬件,编写一个函数Trans,把分段的虚地址转换成物理地址,并返回一个int类型的物理地址。假设已经编写了一个处理分段错误的函数Fault。segTable变量包含了段表。
    Struct SegTableType {
    int loc;    /*段起始地址*/
    int len;    /*段的字节数即长度*/
    };
    Struct VirtualAddressType {
    int seg;    /*段地址*/
    int off;    /*偏移量*/
    };
    Struct SegTableType segTable[NUMBER_SEGMENTS];
    Void Fault();    /*处理分段错误*/
 
【正确答案】函数代码如下: int Trans(struct VirtualAddressType virtAddr) { int physAddr=-1; if(virtAddr.off>=segTable(virtAddr.seg).len) fault(); else physAddr=segTable(virtAddr.seg).loc+virtAddr.off; return physAddr; }
【答案解析】