#include<iostream>
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 << endl;
}// 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 << "共发生" << error << "次缺页中断,缺页率为" << (float)error / 11 << endl;
}// 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 << "共发生" << error << "次缺页中断,缺页率为" << (float)error / 11 << endl;
}// end method lru
int main()
{
opt(); // 最佳置换算法
fifo(); // 先进先出算法
lru(); // 最近最少使用算法
return 0;
}
操作系统实验三源代码加实验报告
4星 · 超过85%的资源 需积分: 10 175 浏览量
2014-12-02
19:35:29
上传
评论 1
收藏 83KB ZIP 举报
coco小圆
- 粉丝: 0
- 资源: 2
最新资源
- ActivePerl5.26.1.2601
- apk_com.huawei.ar.measure_120000320.apk
- ActivePerl-5.16.2.1602-MSWin32-x86-296513
- Hidove在线聚合图床网站源码 支持15个接口自由更换 上传API,bootstrap4简约界面
- 2_附件1:2024春广东开放大学作业及教学平台操作指引.docx
- Mysql数据库考试题
- Cadence-16-6-电阻封装与3D模型
- 2023年12月青少年软件编程Python等级考试五级真题(含答案和解析)
- 全国及31个省级社会消费品(商品)零售总额1981-2023年
- ntpdate centos离线安装三剑客 ntp-4.2.6p5-29.el7.centos.x86-64.rpm
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈