北邮-操作系统试验-页面置换算法(共19页).docx

上传人:飞****2 文档编号:14035196 上传时间:2022-05-02 格式:DOCX 页数:19 大小:197.12KB
返回 下载 相关 举报
北邮-操作系统试验-页面置换算法(共19页).docx_第1页
第1页 / 共19页
北邮-操作系统试验-页面置换算法(共19页).docx_第2页
第2页 / 共19页
点击查看更多>>
资源描述

《北邮-操作系统试验-页面置换算法(共19页).docx》由会员分享,可在线阅读,更多相关《北邮-操作系统试验-页面置换算法(共19页).docx(19页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、精选优质文档-倾情为你奉上课本第九章21题 实验ytinrete1实验目的:学习页面置换算法2实验内容Write a program that implements the FIFO and LRU page-replacement algorithms presented in this chapter. First, generate a random page reference string where page numbers range from 0.9. Apply the random page-reference string to each algorithm and re

2、cord the number of page faults incurred by each algorithm. Implement the replacement algorithms such that the number of page frames can vary from 1.7. Assume that demand paging is used.写一个程序来实现本章中介绍的FIFO和LRU页置换算法。首先产生一个随机的页面引用序列,页面数从09。将这个序列应用到每个算法并记录发生的页错误的次数。实现这个算法时,要将页帧的数量设为可变(从17)。假设使用请求调页。3 设计说

3、明FIFO算法:每次请求先查找是否有空块,有则替换,并标记为最晚到达,若没有则从标记中寻找最新到达的块,替换,并更新标记表。标记数字越小,到达时间最早。LRU算法:每次请求先查找是否有空块,有则替换,并标记为最近使用时间最短者,若没有则从标记中寻找最近使用时间最长者,替换,并更新标记表。标记数字越小,最近使用频率越低。4实验环境windows7 ultimate x64 with sp1Dev-c+5 程序源码#include#include#include#include #include #include using namespace std;typedef struct block/页

4、帧块结构 int num;int lable;block;int page_size, frame_size;/序列数,页帧大小 vector order;/存放序列vector frame;/页帧 void page_replacement (int kind)/kind=1为FIFO,kind=2为LRU/初始化frame.clear();block init;init.num=-1;init.lable=-1;for(int i=0; iframe_size; i+)frame.push_back(init);int error=0;/错误次数int seq=0;/标记数字int pos

5、ition=-1;/匹配位置 for(int i=0; iorder.size(); i+)position=-1;couti:引用请求为 order.at(i) :endl;cout引用前页帧情况(-1为空):;for(int j=0; jframe.size(); j+)cout(frame.at(j).num, ;if(order.at(i)=(frame.at(j).num)position=j;coutendl;if(-1!=position)cout匹配成功!endl;/更新标记这也是LRU算法比FIFO唯一多出来的地方if(kind=2)int temp=(frame.at(po

6、sition).lable;(frame.at(position).lable=seq+1;for(int j=0; jtemp)(frame.at(j).lable-;/多余部分结束elsecout匹配失败!endl;error+;/开始置换/先查找空页for(int j=0; jframe.size(); j+)if(-1=(frame.at(j).num)position=j;break;if(-1!=position)/有空页 (frame.at(position).num=order.at(i);/置换seq+;(frame.at(position).lable=seq;/标记数字e

7、lse/没有空页 for(int j=0; jframe.size(); j+)/找相应的置换项if(1=(frame.at(j).lable)position=j;break;(frame.at(position).num=order.at(i);/置换(frame.at(position).lable=seq+1;/标记进入顺序 for(int j=0; jframe.size(); j+)/更新标记(frame.at(j).lable-; cout引用后页帧情况(-1为空):;for(int j=0; jframe.size(); j+)cout(frame.at(j).num, ;co

8、utendlendl;coutendl算法结束,总页错误的次数为:errorendlendl; int main()coutpage_size;if(page_size=0)cout序列数有误;return 0;coutframe_size;if(frame_size7)cout页帧数有误;return 0;int number;srand(unsigned(time(NULL);/设置随机数种子for(int i=0; ipage_size; i+)number=rand()%10;/页面数从0到9order.push_back(number);/* 课本例子,使用这个时将上面的随机数注释掉

9、order.push_back(7);order.push_back(0);order.push_back(1);order.push_back(2);order.push_back(0);order.push_back(3);order.push_back(0);order.push_back(4);order.push_back(2);order.push_back(3);order.push_back(0);order.push_back(3);order.push_back(2);order.push_back(1);order.push_back(2);order.push_back

10、(0);order.push_back(1);order.push_back(7);order.push_back(0);order.push_back(1);*/coutendl随机生成的页面引用序列为:endl;for(int i=0; iorder.size(); i+)coutorder.at(i);if(order.size()-1!=i)cout, ;coutendlendl;page_replacement (1);coutendlendl;page_replacement (2);system(pause);return 0; 6 结果测试首先以课本上为例:20个序列:7, 0, 1, 2, 0, 3, 0, 4, 2, 3, 0, 3, 2, 1, 2, 0, 1, 7, 0, 1帧序列为3FIFO错误数15,置换顺序课件与课本完全相符。LRU错误数12,置换顺序课件与课本完全相符。其他随机数实验其他随机数实验专心-专注-专业

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁