为了方便...
方法一:增加标记位
为了方便讨论,驻留集的页表中每个记录增加标记位,表示本轮该页面是否被访问,若该页面被访问,则标记位为1,否则标记位为0。这样每次访问某页只需要将该页的页表项中的访问位设为1,每次扫描将访问位为1的页表项的访问位修改为0,将访问位为0的页表项的页框回收。
初始时系统空闲页框链表中页框号依次为32、15、21、41。进程P依次访问的<虚拟页号,访问时刻>是:<1, 1>、<3, 2>、<0, 4>、<0, 6>、<1, 11>、<0, 13>、<2, 14>。模拟完整过程如下:
方法二:仿照LRU算法
仿照LRU算法,通过移动链表结点调整结点访问优先级。用蓝色标记页框链表中本轮被访问过的页框,黄色标记页框链表中本轮未被访问过的页框,所有黄色结点构成空闲页框链表,所有蓝色结点构成驻留集。这样每次访问某页只需要将该页被分配的页框号移动到链表尾,并标记为蓝色,每次扫描将页框链表中所有结点恢复成黄色。
初始时系统空闲页框链表中页框号依次为32、15、21、41。进程P依次访问的<虚拟页号,访问时刻>是:<1, 1>、<3, 2>、<0, 4>、<0, 6>、<1, 11>、<0, 13>、<2, 14>。模拟完整过程如下:
注:题45图(a)和题45图(b)中空闲页框链表中结点的括号内数字表示最近一次页框号被分配的页号。
(1) 访问<0, 4>时,对应的页框号是21。
初始时进程驻留集为空,系统空闲页框链表中页框号依次为32、15、21、41,时刻4是第一轮的第三次访问,且访问的页号与前两次均不同。而0页对应的页框为空闲链表中的第三个空闲页框号是21。
(2) 访问<1, 11>时,对应的页框号是32。
第三轮初始时系统空闲页框链表中页框号依次为41、32(1)、15(3),括号内数字表示最近一次页框号被分配的页号,时刻11是第三轮的第一次访问,而且访问页面1之前被分配的页框号为32,将页框32重新放入驻留集中。
(3) 访问<2, 14>时,对应的页框号是41。
第三轮初始时系统空闲页框链表中页框号依次为41、32(1)、15(3),括号内表示最近一次页框号分配的页号,时刻14是第三轮的第三次访问,页面2从来没有被访问过,因此从空闲页框链表中取出链表头的页框41,页框号为41。
(4) 该策略适合于时间局部性好的程序。
如果程序的时间局部性越好,从空闲页框链表中重新取回的机会越大,该策略的优势越明显。
登录后提交答案
暂无评论,来抢沙发