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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

操作系统课程设计LRU算法完整版内含代码.docx

1、操作系统课程设计LRU算法完整版 内含代码操作系统课程设计 LRU页面调度算法学 号: 姓 名: 学 院: 专 业: 班 级: 指导老师: 日 期: 目 录一、实验题目 1二、课程设计的目的 1三、设计内容 1四、设计要求 1五、设计思想 1六、主要数据结构及其说明 2七、硬件支持 3八、源程序文件 3九、程序运行结果 7十、实验体会 8一 实验题目LRU页面调度算法二 课程设计的目的操作系统课程设计是计算机专业重要的教学环节,它为学生提供了一个既 动手又动脑,将课本上的理论知识和实际有机的结合一起,独立分析和解 决实际问题的机会。1.进一步巩固和复习操作系统的基础知识。2. 培养学生结构化程

2、序、模块化程序设计的方法和能力。3.提高学生调试程序的技巧和软件设计的能力。4.提高学生分析问题、解决问题以及综合利用C语言进行程序设计的能力。三 设计内容程序应模拟实现LRU算法思想,对n个页面实现模拟调度。四 设计要求1不同的功能使用不同的函数实现(模块化),对每个函数的功能和调用接口要注释清楚。对程序其它部分也进行必要的注释。2对系统进行功能模块分析、画出总流程图和各模块流程图。3用户界面要求使用方便、简洁明了、美观大方、格式统一。所有功能可以反复使用,最好使用菜单。4通过命令行相应选项能直接进入某个相应菜单选项的功能模块。5所有程序需调试通过。五 设计思想最近最久未使用(LRU)页调度

3、算法是选择最近最久未使用的页面予以淘汰。算法赋予每个页面一个访问字段,用来记录一个页面自上次被访问以来所经历的时间,当所要访问的页面在内存块中时,就不淘汰页面,否则,淘汰页面中时间最长的,即淘汰最近最久未使用的页面。yn算法流程图六 主要数据结构及其说明程序执行是稳定的,高效的。在LRU算法中,要找出最近最久未使用的页面的话,就必须设置有关的访问记录项,且每一次访问这些记录项,叶面都必须更新这些记录项。这个记录项在此程序中为:typedef struct pageint num;/*记录页面号*/int time;/*记录调入内存时间*/Page;/页面逻辑结构,结构为方便算法实现设计如此,显

4、然要花费较大的系统开销(包括时间和空间上的),这也是实际系统中不采用LRU算法的直接原因,但由于其页面置换的优越性,实际系统中常使用LRU的近似算法。七 硬件支持为了了解一个进程在内存中的各个页面各有多少时间未被进程访问,以及如何快速的知道哪一页是最近最久未使用的页面,须有两类硬件之一的支持:寄存器或栈。寄存器:为了记录某进程在内存中各页的使用情况,须为每个在内存中的页面配置一个移位寄存器。栈:可利用一个特殊的栈来保存当前使用的各个页面的页面号。每当进程访问某页面时,便将该页面的页面号从战中移出,将它压入栈顶。因此,栈顶始终是最新被访问页面的编号,而栈底则是最近最久未使用页面的页面号。八 源程

5、序文件#include#include#include#define M 3 /物理块数#define N 10 /页面数#define Myprintf1 printf(t*ttnn);/表格控制#define Myprintf2 printf(*nn);/表格控制typedef struct pageint num;/*记录页面号*/int time;/*记录调入内存时间*/Page;/页面逻辑结构,结构为方便算法实现设计Page bM;/内存单元数int cMN;/暂保存内存当前的状态:缓冲区int queue100;/记录调入队列int K;/调入队列计数变量/初始化内存单元、缓冲区v

6、oid Init(Page *b,int cMN)int i,j;for(i=0;iN;i+)bi.num=-1;bi.time=N-i-1;for(i=0;iM;i+)for(j=0;jN;j+)cij=-1;/取得在内存中停留最久的页面,默认状态下为最早调入的页面int GetMax(Page *b)int i;int max=-1;int tag=0;for(i=0;imax)max=bi.time;tag=i;return tag;/判断页面是否已在内存中int Equation(int fold,Page *b)int i;for(i=0;i=0)bval.time=0;for(i=

7、0;iM;i+)if(i!=val)bi.time+;else queue+K=fold;/记录调入页面val=GetMax(b);bval.num=fold;bval.time=0;for(i=0;iM;i+)if(i!=val)bi.time+;/主程序void main() start:K=-1;int i,j;int aN;Myprintf1;printf(nttt欢迎使用LRU页面调度算法nn);Myprintf1;printf(请输入所要访问的各个页面号:n);for(i=0;iN;i+)scanf(%d,&ai);Init(b,c); /调用for(i=0;iN;i+)Lru(a

8、i,b);c0i=ai;/记录当前的内存单元中的页面for(j=0;jM;j+)cji=bj.num;/结果输出printf(内存状态为:n);Myprintf2;for(j=0;jN;j+)printf(|%2d,aj);printf(|n);Myprintf2;for(i=0;iM;i+)for(j=0;jN;j+) if(cij=-1)printf(|%2c,32);elseprintf(|%2d,cij);printf(|n);Myprintf2;printf(n调入队列为:);for(i=0;iK+1;i+)printf(%3d,queuei);printf(n缺页次数为:%6dn缺页率:%16.6f,K+1,(float)(K+1)/N);printf(n是否继续!t y?);char y;if(getch()=y) system(cls);printf(n);goto start;elseprintf(n);printf(程序结束n);九 程序运行结果十 实验体会通过本次课程设计,对LRU页面调度算法有了更深入的理解和掌握,进一步的巩固和复习了操作系统中关于LRU页面调度算法的知识,进一步的了解了结构化、模块化程序设计的方法,提高了编写和调试程序的技巧,谢谢老师的细心指导。

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

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