【哈工大李治军操作系统听课笔记】L25 内存换出

1.页面换出

实际上上一节所说的页面换入过程实际上还缺少一个环节。因为物理内存是有限的,且相比于虚拟内存而言要小得多,我们不可能一直能换入页面,找到空闲的,没有映射过的虚拟页。所以更符合实际的做法是,如果找到了空闲的虚拟页框就直接建立映射,否则就需要从已有的映射中找到一页物理页,将其换出,腾出空闲页框供操作系统换入新的物理页。

在这里插入图片描述

2.基本页面换出算法

  • 先进先出FIFO

先进先出的FIFO是最容易想到的,每次淘汰最先放入的那个物理页。但这当然不可能是足够高效的算法。

  • 最优置换算法OPT

开天眼预知未来会放入的物理页,然后将未来最长时间不会放入的页换出。目前的人类科学还做不到。

  • 最近最少使用算法 LRU

虽然无法开天眼,但我们至少能从最近使用的规律中进行预测,将最近最少使用的那个物理页换出去。LRU算法的实现可以参考我的这篇文章
目前我们能够做到的最好的LRU算法可以做到换入和换出O(1)的时间复杂度。这在算法层面已经是我们能给出的最漂亮的算法了。但是这个实现在实际操作系统中其实不可行。因为每次进行一次LRU算法还是会造成几次的指针读写,也就是对内存的访问。说白了还是太复杂。如果采用LRU算法,整个计算机的工作效率就会降低很多。

  • Clock算法
    在这里插入图片描述

Clock算法是一种近似的LRU算法,这种算法足够简单,可以应用在实际的操作系统中。
具体算法内容请参考李治军《操作系统原理,实现与实践》P194页。

4. 系统颠簸

从进程自身角度而言,分配给进程的物理页个框数应该是越多越好的,但是物理内存的总容量是有限的,如果给每个进程分配的物理页框数量太多,系统能支持的并发进程数量就越少。但是如果给进程分配的页框个数过少,就会造成系统颠婆现象。
在这里插入图片描述

造成这种现象的原因是分配给进程的物理页框数量不够,无法覆盖当前进程的“局部”,导致换出去的页面有很快需要被访问从而又得换回来。频繁地发生缺页,频繁地需要换页。而此时CPU只能空闲等待,导致CPU工作效率下降。所以我们应当准确地估计当前的局部有多大,从而防止系统颠婆的情况发生。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值