資源簡介
操作系統實踐作業
四種頁面調度算法
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)//
評論
共有 條評論