91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

資源簡介

模擬操作系統中請求調頁存儲管理方式,中的OPT LRU FIFU 三種算法的實現

資源截圖

代碼片段和文件信息

//BY?Wutingt
#include?
#include
#include
#include
#define?Bsize?4

typedef?struct?BLOCK//聲明一種新類型--物理塊類型
{??
int?pagenum;//頁號
int?accessed;//訪問字段,其值表示多久未被訪問

}BLOCK;

int?pc;//程序計數器,用來記錄指令的序號
int?n;//缺頁計數器,用來記錄缺頁的次數
static?int?temp[320];//用來存儲320條隨機數
BLOCK?block[Bsize];?//定義一大小為4的物理塊數組
//*************************************************************
void?init();?????//程序初始化函數
int?findExist(int?curpage);//查找物理塊中是否有該頁面
int?findSpace();//查找是否有空閑物理塊
int?findReplace();//查找應予置換的頁面
void?display();//顯示
void?suijishu();//產生320條隨機數顯示并存儲到temp[320]
void?pagestring();//顯示調用的頁面隊列
void?OPT();//OPT算法
void?LRU();//?LRU算法
void?FIFO();//FIFO算法
//*************************************************************
void?init()?
{??
???for(int?i=0;i???{
???block[i].pagenum=-1;
???????block[i].accessed=0;
???????pc=n=0;
???}
}
//-------------------------------------------------------------
int?findExist(int?curpage)
{
?
????for(int?i=0;?i {
if(block[i].pagenum?==?curpage?)
????????return?i;//檢測到內存中有該頁面,返回block中的位置
}
????return?-1;
}
//-------------------------------------------------------------
int?findSpace()
{???
for(int?i=0;?i {
???if(block[i].pagenum?==?-1)
????????return?i;//找到空閑的block,返回block中的位置
}?

????return?-1;

}
//-------------------------------------------------------------
int?findReplace()
{
???int?pos?=?0;
???for(int?i=0;?i???{
???if(block[i].accessed?>block[pos].accessed)
?????????pos?=?i;//找到應予置換頁面,返回BLOCK中位置
???}
?return?pos;
}
//-------------------------------------------------------------
void?display()
{
???for(int?i=0;?i???{
???if(block[i].pagenum?!=?-1)
???{ printf(“?%02d“block[i].pagenum);}
???}
???cout<}
//-------------------------------------------------------------
void?suijishu()
{???int?flag=0;
????cin>>pc;
????cout<<“******按照要求產生的320個隨機數:*******“<????for(int?i=0;i<320;i++)
{????
temp[i]=pc;
if(flag%2==0)?pc=++pc%320;
????????if(flag==1)?pc=rand()%?(pc-1);
????????if(flag==3)?pc=pc+1+(rand()%(320-(pc+1)));
????????flag=++flag%4;
printf(“?%03d“temp[i]);
????????if((i+1)%10==0)?cout< }?
}
//-------------------------------------------------------------
void?pagestring()
{???
for(int?i=0;i<320;i++)
{
???printf(“?%02d“temp[i]/10);
???????if((i+1)%10==0)?cout< }

}
//-------------------------------------------------------------
void?OPT()
{
int?existspaceposition?;
int?curpage;
????for(int?i=0;i<320;i++)
{???
if(i%100==0)?getch();
pc=temp[i];?
????curpage=pc/10;
????exist?=?findExist(curpage);
????????if(exist==-1)
{
space?=?findSpace();
????????????if(space?!=?-1)
{
block[space].pagenum?=?curpage;??
????????????????display();
????n=n+1;
}
????????????else
{
for(int?k=0;k {
for(int?j=i;j<320;j++)
{

評論

共有 條評論