存储管理的页面置换算法

存储管理的页面置换算法在考试中常常会考到,操作系统教材中主要介绍了3种常用的页面置换算法,分别是:先进先出法(FIFO)、最佳置换法(OPT)和最近最少使用置换法(LRU)。大家要理解3种置换算法的含义,然后能熟练地运用在具体的练习中就可以了。

  1. 为什么要进行页面置换

在请求分页存储管理系统中,由于使用了虚拟存储管理技术,使得所有的进程页面不是一次性地全部调入内存,而是部分页面装入。

这就有可能出现下面的情况:要访问的页面不在内存,这时系统产生缺页中断。操作系统在处理缺页中断时,要把所需页面从外存调入到内存中。如果这时内存中有空闲块,就可以直接调入该页面;如果这时内存中没有空闲块,就必须先淘汰一个已经在内存中的页面,腾出空间,再把所需的页面装入,即进行页面置换。

有助于理解的关键词有:请求分页、虚拟存储、缺页中断、页面置换。

  1. 常用的页面置换算法

教材中介绍的常用页面置换算法有:先进先出法(FIFO)、最佳置换法(OPT)和最近最少使用置换法(LRU)。

  1. 先进先出法(FIFO

算法描述:由于认为最早调入内存的页不再被使用的可能性要大于刚调入内存的页,因此,先进先出法总是淘汰在内存中停留时间最长的一页,即先进入内存的页,先被换出。先进先出法把一个进程所有在内存中的页按进入内存的次序排队,淘汰页面总是在队首进行。如果一个页面刚被放入内存,就把它插在队尾。

【例1】教材第4章课后习题。

考虑下述页面走向:1,2,3,4,2,1,5,6,2,1,2,3,7,6,3,2,1,2,3,6。当内存块数量分别为3,5时,试问先进先出置换算法(FIFO)的缺页次数是多少?(注意,所有内存块最初都是空的,凡第一次用到的页面都产生一次缺页。)

:当内存块数量分别为3时,FIFO算法的执行过程如下图所示。


页面


1


2


3


4


2


1


5


6


2


1


2


3


7


6


3


2


1


2


3


6


块1


1


1


1


4


4


4


6


6


6


3


3


3


2


2


2


6


块2


2


2


2


1


1


1


2


2


2


7


7


7


1


1


1


块3


3


3


3


5


5


5


1


1


1


6


6


6


3


3


缺页


?


?


?


?


?


?


?


?


?


?


?


?


?


?


?


?

打叉的表示发生了缺页,共缺页16次。

提示:当FIFO算法执行到蓝色的4号页面时,这时内存中有三个页面,分别是1,2,3。按照FIFO算法,在内存中停留时间最长的页面被淘汰。三个页面在内存中的停留时间用绿色区域标记出来了,可见,1号页面是停留时间最长的,因此要淘汰1号页面。

当内存块数量分别为5时,共缺页10次。FIFO算法的执行过程如下。


页面


1


2


3


4


2


1


5


6


2


1


2


3


7


6


3


2


1


2


3


6


块1


1


1


1


1


1


6


6


6


6


6


块2


2


2


2


2


2


1


1


1


1


块3


3


3


3


3


3


2


2


2


块4


4


4


4


4


4


3


3


块5


5


5


5


5


5


7


缺页


?


?


?


?


?


?


?


?


?


?

优缺点:先进先出法(FIFO)简单易于实现,但是性能不好,存在Belady现象。例如对于以下页面:1,2,3,4,1,2,5,1,2,3,4,5,当内存块为3时,出现9次缺页中断;当内存块为4时,出现10次缺页中断。缺页率随着内存块增加而增加的现象,称为Belady现象。有兴趣的同学可以试一试,看看是不是这样的。

  1. 最佳置换法(OPT

算法描述:最佳置换算法(OPT)在为调入新页面而必须预先淘汰某个老页面时,所选择的老页面应在将来不被使用,或者是在最远的将来才被访问。采用这种算法,能保证有最小缺页率。

【例2】教材第4章课后习题。

考虑下述页面走向:1,2,3,4,2,1,5,6,2,1,2,3,7,6,3,2,1,2,3,6。当内存块数量分别为3,5时,试问最佳置换法(OPT)的缺页次数是多少?(注意,所有内存块最初都是空的,凡第一次用到的页面都产生一次缺页。)

:当内存块数量分别为3时,OPT算法的执行过程如下图所示。


页面


1


2


3


4


2


1


5


6


2


1


2


3


7


6


3


2


1


2


3


6


块1


1


1


1


1


1


1


3


3


3


3


6


块2


2


2


2


2


2


2


7


2


2


2


块3


3


4


5


6


6


6


6


1


1


缺页


?


?


?


?


?


?


?


?


?


?


?

打叉的表示发生了缺页,共缺页11次。

提示:当OPT算法执行到蓝色的4号页面时,这时内存中有三个页面,分别是1,2,3。按照OPT算法,在最远的将来才被访问的页面先淘汰。这三个页面在未来页面走向序列的位置用绿色区域标记出来了,可见,3号页面是最晚被访问到的,因此要淘汰3号页面。到了最后一个6号页面时,由于没有后续的页面序列了,可以随机选择一个页面淘汰。

当内存块数量分别为5时,共缺页7次。OPT算法的执行过程如下。


页面


1


2


3


4


2


1


5


6


2


1


2


3


7


6


3


2


1


2


3


6


块1


1


1


1


1


1


1


1


块2


2


2


2


2


2


2


块3


3


3


3


3


3


块4


4


4


6


6


块5


5


5


7


缺页


?


?


?


?


?


?


?

优缺点:OPT算法因为要需要预先知道一个进程在整个运行过程中页面走向的全部情况,因此只是一种理想状态,实际是行不通的。一般用算法来衡量(如通过模拟实验分析或理论分析)其他算法的优劣。

  1. 最近最少使用置换法(LRU

算法描述:最近最少使用置换法(LRU)是选择在最近一段时间里最久没有使用过的页面予以淘汰。借鉴FIFO算法和OPT算法,以“最近的过去”作为“不久将来”的近似。

【例3】教材第4章课后习题。

考虑下述页面走向:1,2,3,4,2,1,5,6,2,1,2,3,7,6,3,2,1,2,3,6。当内存块数量分别为3,5时,试问最近最少使用置换法(LRU)的缺页次数是多少?(注意,所有内存块最初都是空的,凡第一次用到的页面都产生一次缺页。)

:当内存块数量分别为3时,LRU算法的执行过程如下图所示。


页面


1


2


3


4


2


1


5


6


2


1


2


3


7


6


3


2


1


2


3


6


块1


1


1


1


4


4


5


5


5


1


1


7


7


2


2


2


块2


2


2


2


2


2


6


6


6


3


3


3


3


3


3


块3


3


3


1


1


1


2


2


2


2


6


6


1


1


缺页


?


?


?


?


?


?


?


?


?


?


?


?


?


?


?

打叉的表示发生了缺页,共缺页15次。

提示:当LRU算法执行到蓝色的4号页面时,这时内存中有三个页面,分别是1,2,3。按照LRU算法,在最近一段时间里最久没有使用过的页面予以淘汰。这三个页面在4号页面之前的页面走向序列中的位置用绿色区域标记出来了,可见,1号页面是最久没有被使用过的,因此要淘汰1号页面。

当内存块数量分别为5时,共缺页8次。LRU算法的执行过程如下。


页面


1


2


3


4


2


1


5


6


2


1


2


3


7


6


3


2


1


2


3


6


块1


1


1


1


1


1


1


1


1


块2


2


2


2


2


2


2


2


块3


3


3


3


6


6


6


块4


4


4


4


3


3


块5


5


5


5


7


缺页


?


?


?


?


?


?


?


?

优缺点:LRU算法是经常采用的页面置换算法。缺点是实现上需要大量的硬件支持。

3. 需要注意的问题

    1. 不要把存储管理的页面置换算法与处理机调度算法混淆。有的同学可能会将FIFO和FCFS弄混,FIFO是先进先出页面置换算法,FCFS是先来先服务的作业调动算法,虽然道理相似,却用在不同的地方。
    2. 缺页率。教材中提到了缺页率,没有给出它的概念。缺页率=缺页次数/页面总数。以上面3个例题为例,缺页率如下:

算法


FIFO


OPT


LRU


内存块为3


16/20=80%


11/20=55%


15/20=75%


内存块为5


10/20=50%


7/20=35%


8/20=40%

影响缺页率的因素有分配给进程的内存块数和页面尺寸等。一般来说,内存块数多,页面增大,使得发生缺页的可能性下降。但是这不是绝对的,还存在着Belady现象。

(3)衡量页面置换算法好坏的标准是:好的算法能适当减少缺页率,避免系统“抖动”。

说明:以上内容仅作为教学辅导材料,不作为考核内容。

http://blog.csdn.net/pbymw8iwm/article/details/6799247

存储管理的页面置换算法

时间: 2024-12-22 06:08:20

存储管理的页面置换算法的相关文章

页面置换算法(最佳置换算法、FIFO置换算法、LRU置换算法、LFU置换算法)

页面置换产生的原因是:分页请求式存储管理(它是实现虚拟存储管理的方法之一,其中一个特性是多次性-->多次将页面换入或换出内存) 效果最好的页面置换算法:最佳置换算法 比较常用的页面置换算法有:FIFO置换算法.LRU置换算法.LFU置换算法 最佳置换算法:不可能实现-->是衡量其他置换算法的方法. FIFO置换算法:先进先出置换算法,淘汰最先进入内存的页面,即选择在内存中驻留时间最久的页面予以淘汰.(实现简单) LRU置换算法:最近最久未使用置换算法,该算法赋予每个页面一个访问字段,用来记录一

虚存管理页面置换算法 — FIFO和RUL算法模拟实现

本篇博文为追忆曾经写过的算法系列第一篇(20081021) 温故知新 目的: 为了解决内存容量有限与多作业运行的冲突,运用了虚拟存储技术,能从逻辑上对内存进行扩充,达到扩充内存的效果.分页存储管理是实现虚拟存储的一种方案.通过模拟算法的实验,加深理解,虚拟存储器的基本原理和方法. 要求: 1.请求分页的置换算法(FIFO && RUL算法实现):2.按给定的顺序列,输出页面调度过程包括命中 / 缺页,调入/调出:3.计算缺页率,频率. 说明: vp_list[N] //访问序列 bs[M]

操作系统之页面置换算法

在请求分页存储管理系统中,由于使用了虚拟存储管理技术,使得所有的进程页面不是一次性地全部调入内存,而是部分页面装入.这就有可能出现下面的情况:要访问的页面不在内存,这时系统产生缺页中断.操作系统在处理缺页中断时,要把所需页面从外存调入到内存中.如果这时内存中有空闲块,就可以直接调入该页面:如果这时内存中没有空闲块,就必须先淘汰一个已经在内存中的页面,腾出空间,再把所需的页面装入,即进行页面置换. 常见的页面置换算法有:先进先出法(FIFO).最佳置换法(OPT)和最近最少使用置换法(LRU).

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

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

存储器管理之页面置换算法

地址映射过程中,若在页面中发现所要访问的页面不再内存中,则产生缺页中断.当发生缺页中断时操作系统必须在内存选择一个页面将其移出内存,以便为即将调入的页面让出空间.而用来选择淘汰哪一页的规则叫做页面置换算法.常见的置换算法有: 1)最佳置换算法(OPT)(理想置换算法) 这是一种理想情况下的页面置换算法,但实际上是不可能实现的.该算法的基本思想是:发生缺页时,有些页面在内存中,其中有一页将很快被访问(也包含紧接着的下一条指令的那页),而其他页面则可能要到10.100或者1000条指令后才会被访问,

页面置换算法

地址映射过程中,若在页面中发现所要访问的页面不再内存中,则产生缺页中断.当发生缺页中断时操作系统必须在内存选择一个页面将其移出内存,以便为即将调入的页面让出空间.而用来选择淘汰哪一页的规则叫做页面置换算法.常见的置换算法有: 1)最佳置换算法(OPT)(理想置换算法) 这是一种理想情况下的页面置换算法,但实际上是不可能实现的.该算法的基本思想是:发生缺页时,有些页面在内存中,其中有一页将很快被访问(也包含紧接着的下一条指令的那页),而其他页面则可能要到10.100或者1000条指令后才会被访问,

操作系统原理(二)——内存管理之页面置换算法

页面置换算法 1. 总述 为提高内存利用率,解决内存供不应求的问题,更加合理的使用内存,人们创造了分页式内存抽象.同时有一个虚拟内存的概念,是指将内存中暂时不需要的部分写入硬盘,看上去硬盘扩展了内存的容量,所以叫做“虚拟”内存.使用虚拟内存,应用程序可以使用比实际物理内存更大的内存空间.可以认为这个更大的内存空间就在硬盘上,只有将某一部分需要被用到时,才被写入真实内存:当它暂时不再被用到时,又被写回硬盘.分页式内存管理将物理内存分为等大的小块,每块大小通常为1K.2K.4K等,称为页帧:逻辑内存

操作系统页面置换算法(opt,lru,fifo,clock)实现

#include <iostream> #include<map> #include<set> #include <algorithm> #include<cstdio> #include<cstring> #include<cmath> #define N 200 using namespace std; int page[N];//页面引用号 int block[N];//物理块,内存 int dist[N][N];/

虚拟内存之页面置换算法

四种页面置换算法: 最佳(OPT,Optional) 最近最少使用(LRU,Least Recently Used) 先进先出(FIFO,First In First Out) 时钟(Clock) 一.最佳置换算法 OPT 策略选择置换下次访问距当前时间最长的那些页,可以看出该算法能导致最少的缺页中断,但是由于它要求操作系统必须知道将来的事件,显然这是不可能实现的.但它仍然能作为一种标准来衡量其他算法的性能. 二.最近最少使用算法 LRU 策略置换内存中上次使用距当前最远的页.根据局部性原理,这