ImageVerifierCode 换一换
格式:DOCX , 页数:13 ,大小:220.44KB ,
资源ID:8518001      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/8518001.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(页面置换算法.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

页面置换算法.docx

1、页面置换算法操作系统课程设计报告题目: 页面置换算法 院 系:班 级: 姓 名学 号: 指导教师 页面置换算法设计报告一、概述通过模拟实现请求页式存储管理的几种基本页面置换算法,了解虚拟存储技术的特点,掌握虚拟存储请求页式存储管理中几种基本页面置换算法的基本思想和实现过程,并比较它们的效率。 二、设计的基本概念和原理基于一个虚拟存储区和内存工作区,设计下述算法并计算访问命中率。 1、基本概念1、先进先出的算法(FIFO)2、最近最久未使用算法(LRU)3、缺页次数:置换页面的次数4、缺页率=置换页面的次数/总页面2、基本原理1、先进先出的算法(FIFO):优先淘汰最早进入的页面,亦即在内存中驻

2、留时间最久的页面。2、最近最久未使用算法(LRU):选择最近最长时间未访问过的页面予以淘汰。三、总体设计数据结构:const int DataMax=100;const int BlockNum = 10;int DataShowBlockNumDataMax; / 用于存储要显示的数组bool DataShowEnableBlockNumDataMax; / 用于存储数组中的数据是否需要显示int DataDataMax; / 保存数据int BlockBlockNum; / 物理块int countBlockNum; / 计数器int N ; / 页面个数int M;/最小物理块数int

3、ChangeTimes;void DataInput(); / 输入数据的函数void DataOutput();void FIFO(); / FIFO 函数void LRU(); / LRU函数算法流程:(1)请输入最小物理块数(2)请输入页面的个数(3)请输入页面访问序列:(4)菜单选择算法流程图: 四、详细设计#include #include using namespace std;const int DataMax=100;const int BlockNum = 10;int DataShowBlockNumDataMax; / 用于存储要显示的数组bool DataShowEna

4、bleBlockNumDataMax; / 用于存储数组中的数据是否需要显示int DataDataMax; / 保存数据int BlockBlockNum; / 物理块int countBlockNum; / 计数器int N ; / 页面个数int M;/最小物理块数int ChangeTimes;void DataInput(); / 输入数据的函数void DataOutput();void FIFO(); / FIFO 函数void LRU(); / LRU函数/*int main() DataInput(); int menu; while(true) cout* 菜单选择 *en

5、dl; cout*endl; cout* 1-FIFO *endl; cout* 2-LRU *endl; cout* 0-EXIT *endl; cout*menu; switch(menu) case 1: FIFO(); break; case 2: LRU(); break; default: break; if(menu!=1&menu!=2&menu!=3) break; /*/void DataInput() ifstream myfile (a.txt); if(!myfile) cout Unable to open myfile; coutM; coutN; cout请输入

6、页面访问序列:endl; for(int i=0; iDatai;void DataOutput() int i,j; for(i=0; iN; i+) / 对所有数据操作 coutDatai ; coutendl; for(j=0; jM; j+) cout ; for(i=0; iN; i+) / 对所有数据操作 if( DataShowEnableji ) coutDataShowji ; else cout ; coutendl; cout缺页次数: ChangeTimesendl; cout缺页率: ChangeTimes*100/N%endl;void FIFO() int i,j

7、; bool find; int point; int temp; / 临时变量 ChangeTimes = 0; for(j=0; jM; j+) for(i=0; iN; i+) DataShowEnableji = false; / 初始化为false,表示没有要显示的数据 DataShowji=-1; Blockj=-1; for(i=0; iM; i+) counti = 0; for(i=0; iN; i+) / 对有所数据操作 / 增加count for(j=0; jM; j+) countj+; coutcountj ; coutendl; find = false; / 表示

8、块中有没有该数据 for(j=0; j M ) / 因为i是从0开始记,而M指的是个数,从1开始,所以i+1 /获得要替换的块指针 temp = 0; for(j=0; jM; j+) if( temp countj ) temp = countj; point = j; / 获得离的最远的指针 else point = i; / 替换 Blockpoint = Datai; countpoint = 0; / 更新计数值 / 保存要显示的数据 for(j=0; jM; j+) DataShowji = Blockj; DataShowEnableiM?(j=i?j:i):ji = true;

9、 / 设置显示数据 / 输出信息 cout endl; cout endl; DataOutput();void LRU() int i,j; bool find; int point; int temp; / 临时变量 ChangeTimes = 0; for(j=0; jM; j+) for(i=0; iN; i+) DataShowEnableji = false; / 初始化为false,表示没有要显示的数据 DataShowji=-1; Blockj=-1; / 初始化为false,表示没有要显示的数据 for(i=0; iM; i+) counti = 0 ; for(i=0; i

10、N; i+) / 对有所数据操作 / 增加count for(j=0; jM; j+) countj+; find = false; / 表示块中有没有该数据 for(j=0; j M ) / 因为i是从0开始记,而BlockNum指的是个数,从1开始,所以i+1 /获得要替换的块指针 temp = 0; for(j=0; jM; j+) if( temp countj ) temp = countj; point = j; / 获得离的最远的指针 else point = i; / 替换 Blockpoint = Datai; countpoint = 0; / 保存要显示的数据 for(j

11、=0; jM; j+) DataShowji = Blockj; DataShowEnableiM?(j=i?j:i):ji = true; / 设置显示数据 / 输出信息 cout endl; cout endl; DataOutput();5、测试与数据分析测试数据:3207 0 1 2 0 3 0 4 2 3 0 3 2 1 2 0 1 7 0 16、完成的情况、简要的使用说明完成情况:编写了先进先出的算法(FIFO)、最近最久未使用算法(LRU),得到了正确的结果使用说明:根据提示输入数据,可以得到书上的结果。7、结果分析运行程序选择1结果如下:运行程序选择2结果如下:8、总结在设计页

12、面置换程序的过程中,我遇到过许多问题,可是也学到了很多东西。本程序的设计实现主要是用C+语言实现,通过对程序算法的设计优化、输出显示的格式设计、输入过程中的异常处理等一些设计过程中的问题的考虑解决,在C+学习上也有了很大的进步。程序设计过程中开始遇到的最大的问题是算法的结构设计问题,课本上只给了设计要求及简单的算法,要真正实现还需要考虑很多方面。在算法的数据结构设计上考虑了很长时间。在程序设计中先后参考了很多网络资料,也参考了一些别人写的的程序,对一些算法的优越性等也作了一些考虑。此外考虑最多的就是异常错误处理的设计。一个好的程序必须能在各种环境下都有其相应的处理方式。C+语言明显要比c语言好

13、很多,其输入输出流就要比c的输入输出好用很多.其次就是函数的重载,让我的程序代码减少了很多。方便了设计。这次课程设计时间很紧,而且考试与课程设计夹杂在一起,所以选择了一个较为简单的课题,但是对于cpu进程调度算法还是认真的看了下,发现时间片轮转算法实现起来不难,最大的难点是进程排队非常麻烦,需要在执行过程中个动态的变化,动态的接受新资源的提交,想要模拟出来难度会非常大。所以请老师谅解。谢谢老师的指导。接下来还有考试,我要加油!九、参考资料 1 汤子瀛 梁红兵 哲凤屏 汤子灜.计算机操作系统(第三版).西安:西安电子科技大学出版社,2007.5. 2 谭浩强. C+面向对象程序设计.北京:清华大学出版社,2006.01.

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1