-
大小: 74KB文件類型: .rar金幣: 2下載: 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? {
????????????????????temp?
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件?????143360??2011-06-19?15:47??頁面置換算法?OS.doc
?????文件???????4141??2011-05-29?19:40??頁面置換.cpp
-----------?---------??----------?-----??----
???????????????147501????????????????????2
- 上一篇:基于交叉熵閾值法的快速迭代算法
- 下一篇:USB鼠標的全部源代碼
評論
共有 條評論