美文网首页
页面置换算法

页面置换算法

作者: 骑着羊驼来看你 | 来源:发表于2018-09-05 14:56 被阅读0次

    页面置换算法

    当发生缺页中断时,如果操作系统内存中没有空闲页面,则操作系统必须在内存选择一个页面将其移出内存,以便为即将调入的页面让出空间。而用来选择淘汰哪一页的规则叫做页面置换算法

    缺页中断

    指的是当软件试图访问已映射在虚拟地址空间中,但是目前并未被加载在物理内存中的一个分页时,由中央处理器的内存管理单元所发出的中断。

    简而言之,缺页中断就是要访问的页不在主存,需要操作系统将其调入主存后再进行访问。

    最优页面置换算法

    最理想的状态下,我们给页面做个标记,挑选一个最远才会被再次用到的页面。当然,这样的算法不可能实现,因为不确定一个页面在何时会被用到。

    FIFO 及其改进

    这种算法的思想和队列是一样的,OS维护一个当前在内存中的所有页面的链表,最新进入的页面在尾部,最久的在头部,每当发生缺页中断,就替换掉表头的页面并且把新调入的页面加入到链表末尾。

    这个算法的问题,显然是太过于“公正了”,没有考虑到实际的页面使用频率。

    一种合理的改进:即给每个页面增加一个R位,每次先从链表头开始查找,如果R置位,清除R位并且把该页面节点放到链表结尾;如果R是0,那么就是又老又没用到,替换掉。

    时钟页面置换算法(clock)

    这种算法只是模型像时钟,其实就是一个环形链表的第二次机会算法,表针指向最老的页面。缺页中断时,执行相同的操作,包括检查R位等。

    LRU

    Least Recently Used的缩写,即最近最少使用,常用于页面置换算法和缓存淘汰算法

    实现:

    最常见的实现是使用一个链表保存缓存数据;

    1. 新数据插入到链表头部

    2. 每当缓存命中(即缓存数据被访问),则将数据移到链表头部

    3. 当链表满的时候,将链表尾部的数据丢弃

    相关文章

      网友评论

          本文标题:页面置换算法

          本文链接:https://www.haomeiwen.com/subject/zguawftx.html