操作系统课程设计完整版 内含代码

上传人:桔**** 文档编号:550506471 上传时间:2023-06-22 格式:DOCX 页数:14 大小:41.30KB
返回 下载 相关 举报
操作系统课程设计完整版 内含代码_第1页
第1页 / 共14页
操作系统课程设计完整版 内含代码_第2页
第2页 / 共14页
操作系统课程设计完整版 内含代码_第3页
第3页 / 共14页
操作系统课程设计完整版 内含代码_第4页
第4页 / 共14页
操作系统课程设计完整版 内含代码_第5页
第5页 / 共14页
点击查看更多>>
资源描述

《操作系统课程设计完整版 内含代码》由会员分享,可在线阅读,更多相关《操作系统课程设计完整版 内含代码(14页珍藏版)》请在金锄头文库上搜索。

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

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

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

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

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

6、;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=0;iM;i+)if(i!=val)bi.t

7、ime+;)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(ai,b);/记录当前的内存单元中的页面

8、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);)Myprintf2;printf(n调入队列为:,for(i=0;iK+1;i+)printf(%3d”,queuei);printf(n 缺页次数为:6dn 缺页率:16.6f,K+1,(float)(K+

9、1)/N);printf(n 是否继续!t y?);char y;if(getch()=y)(system(cls);printf(n);goto start;)elseprintf(n);printf(程序结束n);)九程序运行结果口吐 :Docueii,ts and. Settirks.Ad*inistrator:Debugvf.双迎使用LRU页面调度算法新存状态为:JCXJCXJCXJCXJCJCJCJCJCJCJCJCJCMMMMMMMMMMMMMMMMMLMZMLMZMLMZMLMZMLXXXXXXXXHMH:3:G:t:5:3:2:4:5:G:5:n i ini n i n i -n c i r i r ilO IO IJI O I J I -J I -J I O I D l D l!:G:t:t:t:2:2:2:6:G:!5!5!5!4!4!4!4!入备否8. 700000十实验体会通过本次课程设计,对LRU页面调度算法有了更深入的理解和掌握,进一 步的巩固和复习了操作系统中关于LRU页面调度算法的知识,进一步的了 解了结构化、模块化程序设计的方法,提高了编写和调试程序的技巧,谢 谢老师的细心指导。如有侵权请联系告知删除,感谢你们的配合!

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 学术论文 > 其它学术论文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号