【操作系统原理-陈渝老师】第六章 虚拟内存下

目录

 

0.页面置换算法总览

1.最优页面置换算法

2.先进先出算法FIFO 

3.最近最久未使用算法LRU

4.时钟页面置换算法 


0.页面置换算法总览

我们有一系列的页面置换算法,如何有效地分析比较他们呢?
我们需要设置一定的实验环境.
我们当然可以写出一些页面置换算法然后进行测试,但是我们可以用更简单的方法进行测试.
我们可以设置模拟的环境,比如说一个正在运行的程序有一系列的内存访问,我们把内存地址
记录下来形成序列,以页号和偏移作为标记.这一系列的标记位就形成了一个访问轨迹,我们
在考虑页面置换算法的时候可以忽略偏移部分,只关注页号,因为只有在一个也不存在的时候
才会产生缺页中断,才需要去考虑是否需要将页置换出去,如果说要对一个页进行多次访问,
一般情况只有在第一次的时候才可能产生缺页异常,除非在后面这个页又被置换出去了,否则
之后内容被加载到内存中后很难产生缺页异常了.

至此,我们可以得到由页号组成的页面轨迹,可以将其抽象成一个轨迹list,我们可以基于这
个list来设计页面替换算法,以此来探讨在一定物理页的情况下,各个算法的缺页产生情况.

一般来说,更少的缺页就意味着更好的性能.

1.最优页面置换算法

需要预知未来,根据未来推测未来,未来是未知的,在现实中无法实现这种算法,
更多时候作为参考和验证算法的优劣.

2.先进先出算法FIFO 

3.最近最久未使用算法LRU

LRU的结果不错,代价也需要考虑,如果代价太大就不是一个合适的方法.
操作系统的设计首先要高效,第二要简洁,需要做一个平衡.
LRU的实现的开销很大.

4.时钟页面置换算法 

前置知识:
每次访问一个页的时候,硬件会自动将used bit置成1,表示这个页刚刚被访问过.



指针对于页表项的操作是:
顺时针探测,
如果页表项中的used bit是1,则将其置成0,然后继续探测;
如果页表项中的used bit是0,则将这个页表项替换出去,然后继续探测;
如图,如果从Page 0开始探测,那么它的探测过程是:
(1)Page 0的used bit会被置成0,探测Page 3;
(2)Page 3的used bit会被置成0,探测Page 1;
(3)Page 1会被替换出去,将当前需要访问的那个页加载进来;
(4)Page 7的used bit会被置成0,探测Page 4;
(5)Page 4会被替换出去,将当前需要访问的那个页加载进来.


问题:
是请页一次,指针跳一次吗?
按照老师说的这个思路,貌似是这样的.
在实际中,Clock产生的缺页异常的次数是向LRU贴近的.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值