• 大小: 4KB
    文件类型: .cpp
    金币: 1
    下载: 0 次
    发布日期: 2021-06-08
  • 语言: C/C++
  • 标签: FIFO  OPT  LRU  C++  

资源简介

操作系统课程FiFO,OPT,LRU三种页面置换算法用C++实现,代码清晰,有少量注释,希望给有上机的孩子们一些参考

资源截图

代码片段和文件信息

#include  
using namespace std;
class page
{
public:
int num;
int mark;
page()
{
num = 0;
mark = 0;
}
};
void FIFO(int input[] int n)
{
cout << “------FIFO-----------“ << endl;
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 < b;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 << frame[i].num << “ “;
cout << endl;
for (int i = a;i {
int j;
for (j = 0;j<3;j++)
if (input[i] == frame[j].num)
{
cout << input[i] << endl;
break;
}
if (j == 3)
{
error++;
frame[((error - 1) % 3)].num = input[i];//换掉最先进入的页  
cout << input[i] << “ | “;
for (int k = 0;k<3;k++)
cout << frame[k].num << ‘ ‘;
cout << endl;
}
}
cout << “frame Error:“ << error << endl;
cout << “frame Error Rate:“ << (float)error / n << endl;
}
void OPT(int input[] int n)
{
cout << “------OPT------------“ << endl;
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 < b;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 << frame[i].num << “ “;
cout << endl;
for (int i = a;i {
int j;
for (j = 0;j<3;j++)
if (input[i] == frame[j].num)
{
cout << input[i] << endl;
break;
}
if (j == 3)
{
error++;
for (j = 0;j<3;j++)
{
frame[j].mark = 21;
for (int k = n;k >= i;k--)//向后遍历,找到最长时间不用的页  
{
if (frame[j].num == input[k])
frame[j].mark = k;
}
}
if (frame[0].mark>frame[1].

评论

共有 条评论