- 在一个请求页式存储管理系统中,一个程序的页面访问顺序是:6、5、4、3、2、1、5、4、3、6、5、4、3、2、1、6、5。请采用LRU算法,对M=4(内存可分配空闲块数),求出缺页中断次数和缺页率。
LRU最近最久未使用算法:会选择最近最久未使用的页面予以淘汰。该算法赋予每个页面一个访问字段,用来记录一个页面自上次被访问以来所经历的时间t。当需淘汰一个页面时,选择现有页面中t值最大的页面予以淘汰。
人话就是在n个已分配的内存块数里,找出最久没用过的页号,淘汰掉。
页面置换调入内存和置换过程如下表,发生缺页中断次数为14次,缺页率为(14/17) *100% = 82.35% 。
页面号 页框号 | 6 | 5 | 4 | 3 | 2 | 1 | 5 | 4 | 3 | 6 | 5 | 4 | 3 | 2 | 1 | 6 | 5 |
1 | 6 | 6 | 6 | 6 | 2 | 2 | 2 | 2 | 3 | 3 | 3 | 3 | 3 | 5 | |||
2 | 5 | 5 | 5 | 5 | 1 | 1 | 1 | 1 | 6 | 2 | 2 | 2 | 2 | ||||
3 | 4 | 4 | 4 | 4 | 5 | 5 | 5 | 5 | 5 | 1 | 1 | 1 | |||||
4 | 3 | 3 | 3 | 3 | 4 | 4 | 4 | 4 | 4 | 6 | 6 | ||||||
是否缺页 | √ | √ | √ | √ | √ | √ | √ | √ | √ | √ | √ | √ | √ | √ |
- 有一个虚拟存储系统, 每个进程在内存分配3页数据区, 页面大小为1KB, 刚开始时数据区为空。假设该进程的虚地址访问流为:5200、1000、1300、200、2250、1022、1200、4350、600、3050、6010、2010、2300、4020
(1)请计算出该进程的页面访问序列。
(2)若系统采用先进先出(FIFO)淘汰算法置换页面,请分析并计算发生页面置换和缺页中断的次数。
(3)若系统采用最近最久未使用(LRU)淘汰算法置换页面,请分析并计算发生页面置换和缺页中断的次数。
(1) 要访问的逻辑页码 = 虚地址 div 页面大小
5200 div 1024 = 5
1000 div 1024 = 0......
计算得到该进程的页面访问序列如下:
5 0 1 0 2 0 1 4 0 2 5 1 2 3
(2)FIFO 置换算法:发生页面置换的次数为7次,缺页次数为10次。
页面号 页框号 | 5 | 0 | 1 | 0 | 2 | 0 | 1 | 4 | 0 | 2 | 5 | 1 | 2 | 3 |
1 | 5 | 5 | 5 | 2 | 2 | 2 | 5 | 5 | 5 | 3 | ||||
2 | 0 | 0 | 0 | 4 | 4 | 4 | 1 | 1 | 1 | |||||
3 | 1 | 1 | 1 | 0 | 0 | 0 | 2 | 2 | ||||||
是否缺页 | √ | √ | √ | √ | √ | √ | √ | √ | √ | √ | ||||
是否置换 | √ | √ | √ | √ | √ | √ | √ |
(3)LRU置换算法:
页面号 页框号 | 5 | 0 | 1 | 0 | 2 | 0 | 1 | 4 | 0 | 2 | 5 | 1 | 2 | 3 |
1 | 5 | 5 | 5 | 2 | 4 | 4 | 5 | 5 | 3 | |||||
2 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | ||||||
3 | 1 | 1 | 1 | 2 | 2 | 2 | 2 | |||||||
是否缺页 | √ | √ | √ | √ | √ | √ | √ | √ | √ | |||||
是否置换 | √ | √ | √ | √ | √ | √ |
发生页面置换的次数为6次,缺页次数为9次。