FIFO、LRU、OPT页面调度算法及例子

网上很多介绍3种页面置换算法的例子和过程是不正确的, 本文根据《操作系统概念》第七版对三种算法做介绍,并给出正确的例子以验证算法。

一、FIFO先进先出页面置换算法,创建一个FIFO队列来管理内存中的所有页。在计算缺页率的时候最好把每一次页面调度的队列写出来,这样不容易出错。

下面举例说明:

假设页帧为3,引用串为:7,0,1,2,0,3,0,4,2

页面走向:7,0,1,2,0,3,0,4,2,

-----------------------------------------------

物理页:   7,7,7,2,2,2,2,4,4,

0,0,0,0,3,3,3,2,

1,1,1,1,0,0,0,

FIFO队列:7, 7,7,0,0,1,2,3,0,

0,0,1,1,2,3,0,4,

1,2,2,3,0,4,2,

首先7,0,1页面依次进入页帧,队列变为7,0,1,下一个引用2要调入,则队列头部的7出队,队列变为0,1,2,物理页内将7换成2,下一个引用0调入,已经存在页帧中,队列不变,下一个3调入,队列头的0出队,3入队列尾,队列变为1,2,3,页帧将0变为3。后面同理依次进行。

二、LRU是Least Recently Used 近期最少使用算法 ( 待更新 )

三、OPT是最佳页面替换算法(待更新)

下面举一些例子及答案,可根据上述算法验证调度算法的正确性。

1、在一个请求分页系统中,假如一个作业的页面走向为:1,2,3,6,4,7,3,2,1,4,7,5,6,5,2,1。当分配给该作业的物理块数为4时,分别采用最佳置换算法、LRU和FIFO页面置换算法,计算访问过程中所发生的缺页次数和缺页率。

答:最佳置换算法的情况如下表


页面走向


1


2


3


6


4


7


3


2


1


4


7


5


6


5


2


1


物理页0


1


1


1


1


1


1


1


1


1


1


1


1


1


1


1


1


物理页1


2


2


2


2


2


2


2


2


2


2


2


2


2


2


2


物理页2


3


3


3


3


3


3


3


4


4


5


5


5


5


5


物理页3


6


4


7


7


7


7


7


7


7


6


6


6


6


缺页否


Y


Y


Y


Y


Y


Y


N


N


N


Y


N


Y


Y


N


N


N

缺页次数为9,缺页率为9/16

LRU算法的情况如下表:


页面走向


1


2


3


6


4


7


3


2


1


4


7


5


6


5


2


1


物理页0


1


1


1


1


4


4


4


4


1


1


1


1


6


6


6


6


物理页1


2


2


2


2


7


7


7


7


4


4


4


4


4


2


2


物理页2


3


3


3


3


3


3


3


3


7


7


7


7


7


1


物理页3


6


6


6


6


2


2


2


2


5


5


5


5


5


缺页否


Y


Y


Y


Y


Y


Y


N


Y


Y


Y


Y


Y


Y


N


Y


Y

缺页次数为14,缺页率为14/16

FIFO算法的情况如下表:


页面走向


1


2


3


6


4


7


3


2


1


4


7


5


6


5


2


1


物理页0


1


1


1


1


4


4


4


4


4


4


4


5


5


5


5


5


物理页1


2


2


2


2


7


7


7


7


7


7


7


6


6


6


6


物理页2


3


3


3


3


3


2


2


2


2


2


2


2


2


2


物理页3


6


6


6


6


6


1


1


1


1


1


1


1


1


缺页否


Y


Y


Y


Y


Y


Y


N


Y


Y


N


N


Y


Y


N


N


N

缺页次数为10,缺页率为10/16

二、在一个请求分页系统中,假如一个作业的页面走向为:4,3,2,1,4,3,5,4,3,2,1,5。当分配给该作业的物理块数M为4时,分别采用最佳置换算法、LRU和FIFO页面置换算法,计算访问过程中所发生的缺页次数和缺页率。

答:最佳置换算法的情况如下表:


页面走向


4


3


2


1


4


3


5


4


3


2


1


5


物理页0


4


4


4


4


4


4


4


4


4


4


1


1


物理页1


3


3


3


3


3


3


3


3


3


3


3


物理页2


2


2


2


2


2


2


2


2


2


2


物理页3


1


1


1


5


5


5


5


5


5


缺页否


Y


Y


Y


Y


N


N


Y


N


N


N


Y


N

缺页次数为6,缺页率为6/12

LRU置换算法的情况如下表:


页面走向


4


3


2


1


4


3


5


4


3


2


1


5


物理页0


4


4


4


4


4


4


4


4


4


4


4


5


物理页1


3


3


3


3


3


3


3


3


3


3


3


物理页2


2


2


2


2


5


5


5


5


1


1


物理页3


1


1


1


1


1


1


2


2


2


缺页否


Y


Y


Y


Y


N


N


Y


N


N


Y


Y


Y

缺页次数为8,缺页率为8/12

FIFO算法的情况如下表:


页面走向


4


3


2


1


4


3


5


4


3


2


1


5


物理页0


4


4


4


4


4


4


5


5


5


5


1


1


物理页1


3


3


3


3


3


3


4


4


4


4


5


物理页2


2


2


2


2


2


2


3


3


3


3


物理页3


1


1


1


1


1


1


2


2


2


缺页否


Y


Y


Y


Y


N


N


Y


Y


Y


Y


Y


Y

缺页次数为10,缺页率为10/12

版权声明:本文为博主原创文章,转载请注明出处:http://blog.csdn.net/lingzhm

时间: 2024-10-10 13:07:33

FIFO、LRU、OPT页面调度算法及例子的相关文章

FIFO、LRU、OPT页面调度算法及样例

网上非常多介绍3种页面置换算法的样例和过程是不对的, 本文依据<操作系统概念>第七版对三种算法做介绍,并给出正确的样例以验证算法. 一.FIFO先进先出页面置换算法,创建一个FIFO队列来管理内存中的全部页. 在计算缺页率的时候最好把每一次页面调度的队列写出来,这样不easy出错. 以下举例说明: 如果页帧为3,引用串为:7,0,1,2,0.3,0,4,2 页面走向:7.0.1,2.0,3.0,4,2. ---------------------------------------------

操作系统的页面置换C++算法:OPT FIFO LRU CLOCK 计算缺页率

暴力直接上代码,主要是用了vector来实现,有些方法比较费时,不太好,请各位大神斧正.这是个人的作业,  这是代码下载页http://download.csdn.net/detail/l631068264/7644569   里面还有多级反馈队列进程调度的MFC版 #include <iostream> #include <algorithm> #include <vector> #include <stdio.h> #include <stdlib

Linux内核中几个比较有意思的解释(进程调度算法,页面调度算法,非线性工作集)

1.O(1)调度器的时间计算公式与CFS调度器 Linux 2.6.23之前普遍采用了O(1)调度器,它是一种基于优先级的时间片调度算法,所谓的O(1)只是它的一些精巧的数据结构使然,在不考虑动态补偿/惩 罚的情况下,只要优先级确定,那么时间片就是固定的.2.6.23以后的CFS呢,它是一种基于权重的非时间片调度算法,进程每次执行的时间并不是固定 的,而是根据进程数在一个准固定周期内按照其权重比例的时间,依然以时间片为术语,CFS下,进程每次运行的时间与进程的总量有关.       即便在不考虑

缓存失效策略(FIFO,LRU,LFU)

当缓存需要被清理时(比如空间占用已经接近临界值了),需要使用某种淘汰算法来决定清理掉哪些数据.常用的淘汰算法有下面几种: 1. FIFO:First In First Out,先进先出.判断被存储的时间,离目前最远的数据优先被淘汰. 2. LRU:Least Recently Used,最近最少使用.判断最近被使用的时间,目前最远的数据优先被淘汰. 3. LFU:Least Frequently Used,最不经常使用.在一段时间内,数据被使用次数最少的,优先被淘汰.

个人设置页面布局 小例子

效果图: layout布局: <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent&

FIFO、LRU、OPT三种置换算法之间的性能比较

1 #include <set> 2 #include <ctime> 3 #include <queue> 4 #include <cstdio> 5 #include <utility> 6 #include <cstdlib> 7 #include <iomanip> 8 #include <iostream> 9 #include <fstream> 10 #define sec secon

深入理解【缺页中断】及FIFO、LRU、OPT这三种置换算法

缺页中断(英语:Page fault,又名硬错误.硬中断.分页错误.寻页缺失.缺页中断.页故障等)指的是当软件试图访问已映射在虚拟地址空间中,但是目前并未被加载在物理内存中的一个分页时,由中央处理器的内存管理单元所发出的中断. 通常情况下,用于处理此中断的程序是操作系统的一部分.如果操作系统判断此次访问是有效的,那么操作系统会尝试将相关的分页从硬盘上的虚拟内存文件中调入内存.而如果访问是不被允许的,那么操作系统通常会结束相关的进程. 虽然其名为“页缺失”错误,但实际上这并不一定是一种错误.而且这

操作系统 页面置换算法LRU和FIFO

LRU(Least Recently Used)最少使用页面置换算法,顾名思义,就是替换掉最少使用的页面. FIFO(first in first out,先进先出)页面置换算法,这是的最早出现的置换算法.该算法总是淘汰最先进入内存的页面,即选择在内存中驻留时间最长的页面给予淘汰. FIFO置换算法有这样一个奇怪现象:内存空间块数越多,缺页中断率可能相反的越高(缺页中断次数越高). LFU(Least Frequently Used)最近最少使用算法,它是基于“如果一个数据在最近一段时间内使用次

C#语言中的动态数组(ArrayList)模拟常用页面置换算法(FIFO、LRU、Optimal)

目录 00 简介 01 算法概述 02 公用方法 03 先进先出置换算法(FIFO) 04 最近最久未使用(LRU)算法 05 最佳置换算法(OPT) 00 简介 页面置换算法主要是记录内存的忙闲状态,为进程分配和释放内存.当主存的空间太小而无法装入所有的进程时,就需要在内存和硬盘之间进行调度操作. 多数操作系统只采用某种特定的页面置换算法进行置换,无法预先探测当前运行进程的页面访问模式,因此不能根据不同的页面访问模式,选用不同的页面置换算法.当然,如果能对不同的访问模式选取相应的页面置换算法,