• 大小: 74KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-06-05
  • 语言: 其他
  • 标签:

资源简介

先来先服务FCFS,最短寻道时间优先SSTF,SCAN和循环SCAN算法模拟磁道访问过程

资源截图

代码片段和文件信息

#include
#include

const MaxNumber=100;
int PageOrder[MaxNumber];
int Simulation[MaxNumber][MaxNumber];
int Blocks[MaxNumber];
int Count[MaxNumber];
int blocks;
int pages;
int PageNumLackNum;
double LackPageRate;
bool found;
int ijk;

void Input();
void FIFO();
void OPI();
void LRU();
void Show();

void main()
{
int choice;
cout<<“\n============= 虚拟内存页面置换算法===============\n\n“;
Input();
while(1)
{
cout<<“\n=========== 1-FIFO  2-OPI  3-LRU ============\n“;
cout<<“\n请输入页面置换算法相对应的序号退出请按0:“;
cin>>choice;
switch(choice)
{
case 1:FIFO();break;
case 2:OPI();break;
case 3:LRU();break;
default:break;
}
if(choice==0)
break;
}
}

void Input()
{
cout<<“请输入页面数个数:“;
cin>>pages;
cout<<“请输入最小物理块个数:“;
    cin>>blocks;
cout< while( blocks > pages) // 大于数据个数
{
        cout<<“页面个数超过页面个数,请重新输入:“;
        cin>>blocks;
}
cout<<“请输入页面访问序列:“;
    for( i=0;i {
cin>>PageOrder[i];
}

for( i=0;i   for( j=0;j Simulation[i][j]=-1;

//

}

void Show()
{
   for(i=0;i   {
   cout<    for(j=0;j      cout<   }
cout<<“\n缺页次数:“< LackPageRate=LackNum*100/pages;
cout<<“缺页率:“<}
void FIFO()
{
int pr=0;
int temp;
LackNum=0;
for( i=0;i   for( j=0;j Simulation[j][i]=-1;
    for( j=0;j   Blocks[j]=-1;
for( i=0;i Count[i]=0;
for( i=0;i {
for(j=0;j Count[j]++;
found=false;
    for(j=0;j {
    if(PageOrder[i]==Blocks[j])
{
//Blocks[j]=PageOrder[i];
         found=true;

}
    if(found)
continue;
LackNum++;
if(i pr=i;
else
{
     temp=0;
      for( k=0;k {
             if(Count[k]>temp)
{
temp=Count[k];
                    pr=k;
}
}
}
   Blocks[pr]=PageOrder[i];
Count[pr]=1;

for(j=0;j        Simulation[j][i]=Blocks[j];
}
cout< Show();

}


void OPI(){
int prtemp;
LackNum=0;
for( i=0;i   for( j=0;j Simulation[j][i]=-1;
    for( j=0;j   Blocks[j]=-1;
for( i=0;i {
found=false;
    for(j=0;j {
    if(PageOrder[i]==Blocks[j])
{
//Blocks[j]=PageOrder[i];
         found=true;

}
    if(found)
continue;
LackNum++;
for(j=0;j {
found=false;
for(k=i;k {
if(PageOrder[k]==Blocks[j])
{
Count[j]=k;
found=true;
break;
}
}
if(!found)
Count[j]=pages;
}
if(i pr=i;
else
{
     temp=0;
for(j=0;j {
                if( temp < Count[j] ) 
{
                    temp 

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件     143360  2011-06-19 15:47  页面置换算法 OS.doc

     文件       4141  2011-05-29 19:40  页面置换.cpp

----------- ---------  ---------- -----  ----

               147501                    2


评论

共有 条评论

相关资源