资源简介
操作系统实践作业
四种页面调度算法
FIFO,NUR,OPT等
代码片段和文件信息
#include
#include
#include
using namespace std;
#define M 320
int N;
struct Pro
{
int numtimefre;//数据,时间,标志
};
int Search(int ePro *page1 )//验证驻留集中页面与新添加页面是否相同
{
Pro *page=new Pro[N];
page=page1;
for(int i=0;i if(e==page[i].num)
return i;
return -1;
}
void print(Pro *page1)//打印当前的页面
{
Pro *page=new Pro[N];
page=page1;
int i=0;
for(i=0;i cout< cout< }
int Max(Pro *page1)//找出离现在时间最长的页面
{
Pro *page=new Pro[N];
page=page1;
int e=page[0].timei=0;
while(i {
if(e e=page[i].time;
i++;
}
for( i=0;i {
if(e==page[i].time)
return i;
}
return -1;
}
/*int Min(Pro *page1)//找出使用频率最小的page
{
Pro *page=new Pro[N];
page=page1;
int e=page[0].frei=0;
while(i {
if(e>page[i].fre)
e=page[i].fre;
i++;
}
int h=0;
for( i=0;i {
if(e==page[i].fre)
return i;
}return -1;
}*/
int Compfu(Pro *page1int iint tPro p[M])//查询待使用的页面,返回存在驻留集中并且最后使用的页面
{
Pro *page=new Pro[N];
page=page1;
int count=0;
for(int j=i;j {
if(page[t].num==p[j].num )break;
else count++;
}
return count;
}
int main()
{
cout<<“可用内存页面数“< cin>>N;
Pro p[400];
Pro *page=new Pro[34];
char c;
int m=0t=0;
float n=0;
int i=0nrand=0;//产生随机数方法1
srand((unsigned)time(NULL));
for(i=0;i<320;i++)
{
p[i].num=rand()%32+1;
cout< }
cout<
/* int num[330];//产生随机数方法2
int n1=0;
int nrand=0;
nrand=rand()%32767;
n1=319*nrand/32767+1;
// if( n1==320) n1=319;
int i=0;
for(i=0;i<320;i+=4)
{
num[i]=n1;
num[i+1]=num[i]+1;
nrand=rand()%32767;
num[i+2]=num[i]*nrand/32767;
num[i+3]=num[i+2]+1;
nrand=rand()%32767;
n1=nrand*(318-num[i+2])/32767+num[i+2]+2;
}
for(i=0;i<320;i++)
{
p[i].num=num[i]/10;
p[i].num=p[i].num%32+1;
// if(p[i].num==32)
// p[i].num=0;
cout< }*/
// cout<
do{
for(i=0;i {
page[i].num=0;
page[i].time=0;
page[i].fre=0;
}
i=0;
cout<<“f:FIFO“< cout<<“l:LRU“< cout<<“o:OPT“< cout<<“n:NUR“< cout<<“按其它键结束“< cin>>c;
if(c==‘f‘)//FIFO页面置换
{
n=0;
while(i<320)
{
if(Search(p[i].numpage)>=0)//
评论
共有 条评论