操作系统页面置换算法
---之---
FIFO置换算法、OPTIMAL置换算法、LRU置换算法
页面置换算法在内存中没有空闲页面时被调用,其目的是选出一个被淘汰的页面,把内存和外存统一管理的目的是把那些访问概率高的页面放在内存,因此,页面置换算法因该置换那些访问概率低的页面,并把它们移除内存。
当进程产生缺页中断时,若内存已经没有空闲区域时,为了保证进程能够正常运行,系统必须依据一定的算法从内存中选择某页程序(基于请求分页存储管理方式)或数据送到磁盘的交换区,所采用的算法即是页面置换算法。
这里简单讲到三中简单的页面置换算法:FIFO置换算法、OPTIMAL置换算法、LRU置换算法
OPTIMAL置换算法(最佳置换算法)
最佳置换算法是一种理想化的置换算法,其置换的页面将是以后永久不使用的,或是将来很长时间内不再使用的页面(代码中置换的是引用串中较长时间不适用的页面)。它可以保证最低的缺页率。
FIFO置换算法(先进先出置换算法)
这种算法的出发点是先装入内存的页面先被置换。其总是先淘汰那些驻留时间最长的页面。
LRU置换算法(最近最久未使用置换算法)
该算法根据页面调入内存后的使用情况进行决策。由于无法预测各页面将来的使用情况,只能利用“最近的过去”作为“最近的将来”的近似。该算法赋予每个页面一个访问字段,用来记录一个页面自上次被访问以来所经历的时间T,当须淘汰一个页面时,选择现有页面中其T值最大的,即最近最久未使用的页面予以淘汰。
#include <iostream>
#define M 3 //物理块数
#define N 20 //页面引用串长度
using namespace std;
struct block
{
int iPageNum; //物理块里存储的页面号
int iBlockFlag; //在三种算法中用到的标记。例如在FIFO中为在内存中的时间
};
//算法模拟移位寄存器原理
void FIFO(int iTempPage[N],int flag[N],block myBlock[M]);//先进先出置换算法
void Optimal(int iTempPage[N],int flag[N],block myBlock[M]);//最佳置换算法
void LRU(int iTempPage[N],int fla