資源簡介
隨機給出一個頁面執行序列,如:1,5,3,4,2,1,3,4,5,7,9,……。要求計算以下幾種置換算法的缺頁數、缺頁率和命中率。
最佳置換算法OPT(Optimal)
先進先出算法FIFO(First In First Out)
最近最少使用算法LRU(Least Recently Used)

代碼片段和文件信息
#include
using?namespace?std;
int?array[]?=?{?1?5?3?4?2?5?3?4?5?2?1?};?//?將要執行的序列
class?Page
{
public:
int?num;?//?執行的進程序列號
int?time;?//?進程停留的時間
Page()
{
num?=?0;
time?=?0;
}
};
//?最佳置換算法
void?opt()
{
cout?<“最佳置換算法:“;
cout?<“共發生7次缺頁中斷“?<“中斷率為“?<(float)7?/?11?<}//?end?method?potimal
//?先進先出算法
void?fifo()
{
Page?frame[3];
int?error?=?0;?//?發生缺頁中斷的次數,初始化為0
for?(int?i?=?0;?i?3;?i++)
{
//?前三個引用,每次都將發生缺頁中斷
error++;
frame[i].num?=?array[i];
}
for?(int?i?=?3;?i?11;?i++)
{
int?j?=?0;
for?(;?j?3;?j++)
{
//?不發生缺頁中斷
if?(frame[j].num?==?array[i])
break;
}
//?將發生缺頁中斷
if?(j?==?3)
{
//?將最舊的頁置換掉
frame[error?%?3].num?=?array[i];
error++;
}
}
cout?<“先進先出算法:“;
cout?<“共發生“?<}//?end?method?fifo
//?最近最少使用算法
void?lru()
{
Page?frame[3];?//?三個頁
int?error?=?0;?//?發生缺頁中斷的次數,初始化為0
for?(int?i?=?0;?i?3;?i++)
{
for?(int?j?=?0;?j?3;?j++)
{
//?增加已經存在的進程在內存中的停留時間
if?(frame[j].num?!=?0)
frame[j].time++;
}
//?前三個引用,每次都將發生缺頁中斷
error++;
frame[i].num?=?array[i];
}
for?(int?i?=?3;?i?11;?i++)
{
//?增加每個進程在內存中的停留時間
for?(int?k?=?0;?k?3;?k++)
frame[k].time++;
int?j?=?0;
for?(;?j?3;?j++)
{
//?不發生缺頁中斷
if?(frame[j].num?==?array[i])
{
frame[j].time?=?0;
break;
}
}
//?將發生缺頁中斷
if?(j?==?3)
{
int?rNum?=?0;
//?找到在內存中停留時間最久的頁
for?(int?k?=?0;?k?3;?k++)
{
if?(frame[k].time?>?frame[rNum].time)
rNum?=?k;
}
//?替換頁面
frame[rNum].num?=?array[i];
frame[rNum].time?=?0;
//?中斷次數加1
error++;
}
}
cout?<“最近最少使用算法:“;
cout?<“共發生“?<}//?end?method?lru
int?main()
{
opt();?//?最佳置換算法
fifo();?//?先進先出算法
lru();?//?最近最少使用算法
return?0;
}
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件????????2245??2014-11-04?21:41??30920122202496康媛實驗三\main.cpp
?????文件???????96000??2014-11-04?22:01??30920122202496康媛實驗三\實驗報告3.docx
?????目錄???????????0??2014-11-04?22:01??30920122202496康媛實驗三\
- 上一篇:小球碰撞反彈
- 下一篇:elsevier投稿模板268502
評論
共有 條評論