OS-李治军-L25-内存换出

内存换出

有换入就应该有换出!等价交换!
必须要选择一个页换出,选择哪一页淘汰emm?
下面介绍淘汰算法。

一、FIFO
先来的先走。

二、MIN
内存当中,将来最久没有使用过的page滚蛋。

效果很好,但是我们做不到,我们不知道将来会有什么东西过来。

三、LRU
用过去的历史预测我来,选最近最长一段时间没有使用过的页面淘汰。
这利用了程序的局部性原理。

实现:
每个页上维护一个时间戳。将时间戳小的踢出去!但可行性低,因为实现代价大,要维护一个表,每执行一条指令,就要改表,需要花较多的时间。而且可能时间戳会发生溢出。

近似实现Clock算法:每个页上增加一个引用位,并且形成一个环形链表。每次访问过一页的时候,将其set为1。在淘汰的时候,如果是1就清0并找下一位。就是说,被使用过的页面有一次复活机会。这个近似的目标是,换出最近没有被使用的一个页面出去。

但如果缺页很少,会发生什么?大量的引用位是1,极端一点变成全部都是1,变成每次按顺序的换出,退化成FIFO。

原因来源于,记录了太长的历史信息,雨露均沾大家全是1,因此要定时清除1。这样一看更像clock了,大雾。

还有一个问题的,要给进程分配多少页框?
分配得多,我们的算法就没有用了
分配的少,cpu利用率会出问题,出现页面抖动的现象

posted @ 2020-10-28 15:33  HermioneGranger  阅读(109)  评论(0)    收藏  举报