資源簡(jiǎn)介
操作系統(tǒng)課程FiFO,OPT,LRU三種頁(yè)面置換算法用C++實(shí)現(xiàn),代碼清晰,有少量注釋?zhuān)Mo有上機(jī)的孩子們一些參考
代碼片段和文件信息
#include??
using?namespace?std;
class?page
{
public:
int?num;
int?mark;
page()
{
num?=?0;
mark?=?0;
}
};
void?FIFO(int?input[]?int?n)
{
cout?<“------FIFO-----------“?< int?error?=?0;
page?frame[3];//頁(yè)幀??
int?a?=?0?b?=?0;
while?(a
{
int?temp?=?input[a];
int?flag?=?0;
for?(int?i?=?0;i? {
if?(temp?==?frame[i].num)?{?flag?=?1;break;?}
}
if?(!flag)
{
error++;
frame[b].num?=?temp;
b++;
}
a++;
}
for?(int?i?=?0;i?3;i++)????????//輸出三幀剛填滿時(shí)情況
cout?<ame[i].num?<“?“;
cout?< for?(int?i?=?a;i {
int?j;
for?(j?=?0;j<3;j++)
if?(input[i]?==?frame[j].num)
{
cout?< break;
}
if?(j?==?3)
{
error++;
frame[((error?-?1)?%?3)].num?=?input[i];//換掉最先進(jìn)入的頁(yè)??
cout?< for?(int?k?=?0;k<3;k++)
cout?<ame[k].num?<‘?‘;
cout?< }
}
cout?<“frame?Error:“?< cout?<“frame?Error?Rate:“?<(float)error?/?n?<}
void?OPT(int?input[]?int?n)
{
cout?<“------OPT------------“?< int?error?=?0;
page?frame[3];
int?a?=?0?b?=?0;
while?(a
{
int?temp?=?input[a];
int?flag?=?0;
for?(int?i?=?0;i? {
if?(temp?==?frame[i].num)?{?flag?=?1;break;?}??
}
if?(!flag)
{
error++;
frame[b].num?=?temp;
b++;
}
a++;
}
for?(int?i?=?0;i?3;i++)
cout?<ame[i].num?<“?“;
cout?< for?(int?i?=?a;i {
int?j;
for?(j?=?0;j<3;j++)
if?(input[i]?==?frame[j].num)
{
cout?< break;
}
if?(j?==?3)
{
error++;
for?(j?=?0;j<3;j++)
{
frame[j].mark?=?21;
for?(int?k?=?n;k?>=?i;k--)//向后遍歷,找到最長(zhǎng)時(shí)間不用的頁(yè)??
{
if?(frame[j].num?==?input[k])
frame[j].mark?=?k;
}
}
if?(frame[0].mark>frame[1].
評(píng)論
共有 條評(píng)論