问答题
考虑一个系统,该系统采用基于页的内存映射,并使用一级页表。假设页表总是在内存中。
问答题
如果一次存储器访问需要200ns,那么一次需要调页的存储器访问要多长时间?
问答题
现在增加一个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,无剩余。
【答案解析】