文档介绍:页面置换算法
页面置换算法,包括最优置换算法,LRU和FIFO三种算法。
1、编程实现上述三种算法中的两种,三种都实现可加分。默认为进程分配的内存块为4。
2、输入输出按照下面的示范进行设计
,提示用户选择算法的种类,1为最优算法,2为LRU算法,3为FIFO算法。
,然后再输入访问页面的序列,输出为淘汰页面的标号。例如
输入:
提示输入总数:14 //访问页面总数
提示输入序列号:0 2 1 7 6 0 8 3 4 3 2 0 1 2 //访问序列号
输出(按照LRU算法):
被淘汰的页面为:0 2 1 7 6 0 8 4 3
实现代码:
#include <iostream>
#include <fstream>
using namespace std ;
#define MAX 50 //输入页面的序列的最大数
#define PRO 4 //内存页面数
#define NUL -1 //页为空
int order[MAX] ; //记录访问页的序列
int totalPage ; //记录总的页面数
int page[PRO] ; //记录内存页面
void Init() ; //初始化系统页面
void Optimal() ; //最优算法
void LRU() ; //最近最久未使用算法
void FIFO() ; //先进先出算法
bool isFull() ; //判断内存页面是否已满
bool isInside( int _page ) ; //判断页_page是否存在页面中
int getPosition( int _page) ; //若内存未满,则返回内存页面中一个未使用有页面号,否则返回(NUl)空
int main()
{
//ifstream cin(""); //用文本输入
int flag = 1 ;
while(true)
{
int type ; //记录算法类型
cout<<"选择算法的种类,为最优算法,为LRU算法,为FIFO算法"<<endl;
cin>>type ;
if( flag == 1 )
{
cout << "输入总数:" ;
cin >> totalPage ;
cout << "输入序列号:" ;
for( int i = 0 ; i < totalPage ; i++ )
{
cin >> order[i] ;
}
}
Init() ;
switch( type )
{
case 1 :
cout<<"最优算法:";
Optimal() ;
break ;
case 2 :
cout<<"LRU算法:";
LRU() ;
break ;
case 3 :
cout<<"FIFO算法:";
FIFO() ;
break ;
default :
cout<<"请正确选择算法类型!"<<endl;
continue ;
}
cout<<endl;
cout<<"输入任意选择其它算法(输入