问答题 考虑一个系统,该系统采用基于页的内存映射,并使用一级页表。假设页表总是在内存中。
问答题 如果一次存储器访问需要200ns,那么一次需要调页的存储器访问要多长时间?
【正确答案】400ns。
【答案解析】
问答题 现在增加一个MMU,在命中或未命中时有20ns的开销。如果假设有85%的存储器访问命中都在MMU TLB中,那么存储器的有效访问时间是多少?
【正确答案】15%×420ns+85%×220ns=250ns。
【答案解析】
问答题 解释TLB命中率如何影响存储器的有效访问时间。
【正确答案】TLB命中率越高,有效访问时间就越短,因为额外访问一次存储器需要200ns,对于有效访问时间的惩罚影响很大。
【答案解析】
问答题 假设某操作系统存储器采用页式存储管理,页的大小为64B,假定一进程的代码段长度为702B,页表见表1,该进程在联想存储器中的页表见表2。现进程有如下的访问序列:其逻辑地址为八进制的105,217,567,1120,2500。试问给定的这些地址能否转换?若能,请说明地址转换过程及相应的物理地址。若不能,则说明理由。
{{B}}表1 内存中的页表{{/B}}
页号 页帧号
0 F0
1 F1
2 F2
3 F3
4 F4
5 F5
6 F6
7 F7
8 F8
9 F9
10 F10
{{B}}表2 联想存储器中的页表{{/B}}
页号 页帧号
0 F0
1 F1
2 F2
3 F3
4 F4
【正确答案】由题设可知,页面大小为64B,故页内偏移的长度为6位,该进程所需的页数为[*]=11页,其编号为0~10。 1)二进制逻辑地址105的二进制表示如下: 001 000101 即其逻辑页号为1,此页号可在联想寄存器的页表中找到,得页帧号为F1,页内位移为5(十进制)。 2)八进制逻辑地址217的二进制表示如下: 010 001111 即其逻辑页号为2,此页号可在联想寄存器的页表中找到,得页帧号为F2,页内位移为15(十进制)。 3)八进制逻辑地址567的二进制表示如下: 101 110111 即其逻辑页号为5,此页号可在内存中的页表找到,得页帧号为F5,页内位移为55(十进制)。 4)八进制逻辑地址1120的二进制表示如下: 001001 010000 即其逻辑页号为9,此页号可在内存中的页表中找到,得页帧号为F9,页内位移为16(十进制)。 5)八进制逻辑地址2500的二进制表示如下: 010101 000000 即其逻辑页号为21,此页号已超出页表长度,故产生缺页中断。
【答案解析】
问答题 某系统采用可变分区内存管理方式,按地址从低到高排列的空闲分区的大小为10KB、4KB、20KB、18KB、7KB、9KB、12KB、15KB。 对于下列顺序的内存请求: 12KB、10KB、15KB、18KB、12KB 分别使用首次适应算法、最佳适应算法、最差适应算法和下次适应算法说明空间的取用情况,并说明对暂不能分配情况的处理方法。
【正确答案】[*] 1)首次适应算法的空闲区按地址递增顺序排列,分配过程如下。 ①12KB:按地址顺序查找过10KB和4KB两个空闲块,大小都不满足,查找到20KB空闲块大小满足,分配12KB后,还剩余8KB的空闲分区仍留在空闲链中。 ②10KB:按地址顺序查找,第一块空闲块10KB,刚好满足大小,分配10KB,无剩余。 ③15KB:按地址顺序查找,10KB、4KB和8KB大小都不满足,查找到18KB时,满足要求,分配15KB,还剩余3KB的空闲分区仍留在空闲链中 ④18KB:按地址顺序查找,10KB、4KB、8KB、3KB、7KB、9KB、12KB和15KB大小都不满足,此次内存分配失败,将其挂入等待内存资源的队列,等以后回收空闲分区时,如果存在回收区域空闲区相邻的情况,则合并为一个大的空闲区,当有大于18KB的空闲区时,就可以唤醒这个等待进程。 ⑤12KB:按地址顺序查找,10KB、4KB、8KB、3KB、7KB和9K/B大小都不满足,查找到12KB时,刚好满足要求,分配12KB,无剩余。 2)最佳适应算法的空闲区按容量大小递增顺序排列,分配过程如下: ①12KB:按容量大小递增顺序查找过4KB、7KB、9KB和10KB,大小都不满足,查找到12KB时,刚好满足要求,分配12KB,无剩余。 ②10KB:按容量大小递增顺序查找过4KB、7KB和9KB,大小都不满足,查找到10KB时,刚好满足要求,分配10KB,无剩余。 ③15KB:按容量大小递增顺序查找过4KB、7KB和9KB,大小都不满足,查找到15KB时,刚好满足要求,分配15KB,无剩余。 ④18KB:按容量大小递增顺序查找过4KB、7KB和9KB大小都不满足,查找到18KB时,刚好满足要求,分配18KB,无剩余。 ⑤12KB:按容量大小递增顺序查找过4KB、7KB和9KB,大小都不满足,查找到20KB时,满足要求,分配12KB,剩余8KB的空闲分区仍留在空闲链中,插入到7KB空闲块和9KB空闲块之间。 3)最差适应算法的空闲区按容量大小递减顺序排列,分配过程如下: ①12KB:找到最大空闲区块20KB,满足要求,分配12KB,剩余8KB的空闲分区仍留在空闲链中,插入到9KB空闲块和7KB空闲块之间。 ②10KB:找到最大空闲区块18KB,满足要求,分配10KB,剩余8KB的空闲分区仍留在空闲链中,同样插入到9KB空闲块和7KB空闲块之间。 ③15KB:找到最大空闲区块15KB,刚好满足要求,分配15KB,无剩余。 ④18KB:找到最大空闲区块12KB,不满足要求,分配失败,将其挂入等待内存资源的队列,等以后回收空闲分区时,如果存在回收区域空闲区相邻的情况,则合并为一个大的空闲区,当有大于18KB的空闲区时,就可以唤醒这个等待进程。 ⑤12KB:找到最大空闲区块12KB,刚好满足要求,分配12KB,无剩余。 4)下次适应算法的空闲区按地址递增顺序排列,分配过程如下: ①12KB:按地址顺序循环查找过10KB和4KB两个空闲块,都不够大,查找到20KB空闲块,大小满足,分配12KB后,还剩余8KB的空闲分区仍留在空闲链中。 ②10KB:从上次找到的空闲区的下一个分区开始循环查找,查找到18KB,大小满足,分配10KB后,剩余8KB的空闲分区仍留在空闲链中。 ③15KB:从上次找到的空闲区的下一个分区开始循环查找,查找过7KB、9KB和12KB,大小都不满足,查找到15KB时,刚好满足要求,分配15KB,无剩余。 ④18KB:从上次找到的空闲区的下一个分区开始循环查找,查找过10KB、4KB、8KB、8KB、7KB、9KB和12KB,大小都不满足,循环了一遍都未找到满足要求的空闲区,分配失败,其挂入等待内存资源的队列,等以后回收空闲分区时,如果存在回收区域空闲区相邻的情况,则合并为一个大的空闲区,当有大于18KB的空闲区时,就可以唤醒这个等待进程。 ⑤12KB:还从上次找到的空闲区的下一个分区开始循环查找,查找过10KB、4KB、8KB、8KB、7KB和9KB,大小都不满足,查找到12KB,大小满足,分配12KB,无剩余。
【答案解析】