操作系统实验(四) 虚拟内存
1、实验题目
页面置换算法模拟——OPT、FIFO和LRU算法
2、实验目的
了解虚拟存储技术的特点,掌握请求页式存储管理的页面置换算法,如最佳
(Optimal)置换算法、先进先出(Fisrt In First Out)置换算法和最近最久未使用(Least Recently Used)置换算法
3、实验内容
1)OPT算法:需要发生页面置换时,算法总是选择在将来最不可能访问的
页面进行置换。
2)FIFO算法:算法总是选择在队列中等待时间最长的页面进行置换。 3)LRU算法:如果某一个页面被访问了,它很可能还要被访问;相反,如果它长时间不被访问,那么,在最近未来是不大可能被访问的。
4、程序代码
#include
#define L 30///页面走向长度最大为30
using namespace std;
int M=4; ///内存块 struct P///定义一个结构体 {
int num,time; }p[30];
int Input(int m,P p[L])///打印页面走向状态 {
m=30; int i,j;
j=time(NULL);///取时钟时间
srand(j);///以时钟时间x为种子,初始化随机数发生器 cout<<\页面走向: \ for(i=0; i p[i].num=rand( );///产生1到10之间的随即数放到数组p中 p[i].time=0; cout< cout< } void print(P *page1)///打印当前的页面 { P *page=new P[M]; page=page1; for(int i=0; i cout< int Search(int e,P *page1 )///寻找内存块中与e相同的块号 { P *page=new P[M]; page=page1; for(int i=0; i int Max(P *page1)///寻找最近最长未使用的页面 用于OPT算法 { P *page=new P[M]; page=page1; int e=page[0].time,i=0; while(i if(e for( i=0; i int Count(P *page1,int i,int t,P p[L])///记录当前内存块中页面离下次使用间隔长度 用于OPT算法 { P *page=new P[M]; page=page1; int count=0; for(int j=i; j if(page[t].num==p[j].num )break;///当前页面再次被访问时循环结束 else count++;///否则count+1 } return count;///返回count的值 } int main() { int c=1; int m=0,t=0; float n=0;///缺页次数 m=Input(m,p);///调用input函数,返回m值 M=4; P *page=new P[M]; ///do while(c==1||c==2||c==3) { int i=0; for(i=0; i page[i].num=0; page[i].time=m-1-i; } cout<<\页面置换\