《操作系统 - 清华大学》6 -2:局部页面置换算法:先进先出页面置换算法 (FIFO)

文章目录

  • [1. 先进先出算法的工作原理](#1. 先进先出算法的工作原理)
  • [2. 先进先出算法特征](#2. 先进先出算法特征)
  • [3. 先进先出算法示例](#3. 先进先出算法示例)

1. 先进先出算法的工作原理

先进先出算法就是说选择在内存中驻留时间最长的页面,如果要淘汰一个页面的话,要选择这个页面淘汰,也就意味着其实在系统中维护了一个表,这个表记录了当前在内存中这些页的驻留时间,以时间排序,比如链表的头放当前驻留时间最长的页面,链表的尾巴放最短页面,当发生缺页中断时候,需要把驻留时间最长的页面置换出去,就相当于是把链表首这个页面给置换出去。那如果把新页加进来,这个页的位置应该添加在这个链表的尾部,这样就形成先进先出算法的大致过程。

这个算法实现起来很简单,维护一个 List 就 OK 了, 产生缺页中断的次数其实是比较多的 ,而且还有很特殊现象------Belady 的现象 ,这个现象会产生一种很奇怪的事情,比如一般来说当给一个运行的程序分为更多的物业的时候,按道理来说应该它缺页次数是变得少了,如果是采用 FIFO 算法的话,那可能出现给它物理页帧越多,反而产生缺页次数越大这种现象,这种称为Belady 现象。

2. 先进先出算法特征

3. 先进先出算法示例

FIFO 算法的特点是要把驻留时间最长的页替换出去,还是拿例子来说明问题,看看在刚才同样一个防问序列下面,如果采取 FIFO 算法,那么它的大致执行过程:

  1. 在0 时刻,物理页里面已经放了 a b c d 四个虚拟页

  2. 接下来访问 c a d b ,其实这个几个页都在物理业中存在了,没问题,不会产生缺页中断

  3. 第五个时刻访问 e 的时候,e 不在物业帧里面存着,需要把某一页替换出去,替换哪一页?

    需要注意前面假设在最开始时候,就是 0 时刻之前,按照顺序先 a 再 b,再 c, 再 d 顺序,把这4个虚拟页放到物理页中来,所以说驻留时间最长页是 a,所以根据 FIFO 算法特点,应该把最久页面给换出去,所以说替换的是 a。

  4. 再接下第六时候,访问是 b, b 本来就在这里面,所以它不会产生缺页中断

  5. 又访问 a ,但在第五时刻, a 已经被换出,所以说再访问 a 的时候,a 已经不带物理内存中了,那又要开始替换,需要把最久的那个页给换出去。在内存中驻留最久页 是 b,所以需要把 b 给换出去,把 a 给换进来,这产生第二次缺页中断。

  6. 再接下来,又要访问 b,b 刚被换出去,那为此又不得不产生下次中断和页面置换,那下次又换出哪个?根据前面假设,就是 c 在内存中驻留时间最长,所以把 c 换出去。

但接下来访问的是 c d,依此类推会不停地产生中断,在这种访问序列情况下,采用 FIFO 页面置换算法,其实产生 5次缺页中断,比刚才最优置换算法要多好几次,这也是 FIFO 的算法的特点。实现简单,但产生缺页次数比较多

相关推荐
冷冷清清中的风风火火6 小时前
linux 里的创建了一个tomcat用户 怎么禁止该用户使用crontab 功能
linux·tomcat·firefox
头发尚存的猿小二9 小时前
Linux--文件系统
linux·运维·服务器
易保山10 小时前
MIT6.S081 - Lab7 Multithreading(进程调度)
linux·操作系统·c
杨凯凡10 小时前
Linux入门指南:从零开始探索开源世界
linux
Liuzhengyue_11 小时前
Linux shell脚本编程
linux·运维·服务器
babytiger12 小时前
在 VMware 中为 Ubuntu 24.04 虚拟机设置共享文件夹后,在虚拟机中未能看到共享的内容
linux·运维·ubuntu
回眸&啤酒鸭12 小时前
【回眸】Linux 内核 (十六) 之 多线程编程 下
linux·物联网
Wayne_Greet12 小时前
Linux服务器——Samba服务器
linux·运维·服务器
Y淑滢潇潇12 小时前
RHCSA Linux系统 数据流和重定向 tee 命令
linux·运维·云计算
栩栩云生12 小时前
📥 x-cmd install | ugm - 你的 UNIX 用户和组信息一览表,尽在终端!
linux·unix·命令行