


版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、操作系统课程设计LRU页面调度算法学 号:姓 名:学 院:专 业:一班 级:指导老师:期:目录一、实验题目 1二、课程设计的目的 1三、设计容 1四、设计要求 1五、设计思想 1六、主要数据结构及其说明 2七、硬件支持 3八、源程序文件 3九、程序运行结果 7十、实验体会 8一 实验题目LRU 页面调度算法二 课程设计的目的 操作系统课程设计是计算机专业重要的教学环节,它为学生提供了一个既 动手又动脑,将课本上的理论知识和实际有机的结合一起,独立分析和解 决实际问题的机会。1. 进一步巩固和复习操作系统的基础知识。2. 培养学生结构化程序、模块化程序设计的方法和能力。3. 提高学生调试程序的技
2、巧和软件设计的能力。4.提高学生分析问题、解决问题以及综合利用 C 语言进行程序设计的能力。三 设计容程序应模拟实现 LRU 算法思想,对 n 个页面实现模拟调度。四 设计要求1不同的功能使用不同的函数实现(模块化),对每个函数的功能和调用接 口要注释清楚。对程序其它部分也进行必要的注释。2对系统进行功能模块分析、画出总流程图和各模块流程图。3用户界面要求使用方便、简洁明了、美观大方、格式统一。所有功能可以 反复使用,最好使用菜单。4通过命令行相应选项能直接进入某个相应菜单选项的功能模块。 5所有程序需调试通过。五 设计思想最近最久未使用(LRU)页调度算法是选择最近最久未使用的页面予以淘汰。
3、 算法赋予每个页面一个访问字段, 用来记录一个页面自上次被访问以来所经 历的时间,当所要访问的页面在存块中时,就不淘汰页面,否则,淘汰页面 中时间最长的,即淘汰最近最久未使用的页面。:开始输入页面号Lru(ai,b)输出 queuei缺页次数和缺 页率n算法流程图六主要数据结构及其说明程序执行是稳定的,高效的。在 LRU算法中,要找出最近最久未使用的页 面的话,就必须设置有关的访问记录项, 且每一次访问这些记录项,叶面都必须更新这些记录项。这个记录项在此程序中为:typedef struct pageint num;/* 记录页面号 */ int time;/* 记录调入存时间 */Page;
4、/ 页面逻辑结构,结构为方便算法实现设计 如此,显然要花费较大的系统开销(包括时间和空间上的),这也是实际系 统中不采用 LRU 算法的直接原因,但由于其页面置换的优越性,实际系统中常使用 LRU 的近似算法七 硬件支持 为了了解一个进程在存中的各个页面各有多少时间未被进程访问, 以及如何 快速的知道哪一页是最近最久未使用的页面,须有两类硬件之一的支持:寄 存器或栈。寄存器:为了记录某进程在存中各页的使用情况, 须为每个在存中的页面配 置一个移位寄存器。栈:可利用一个特殊的栈来保存当前使用的各个页面的页面号。 每当进程访 问某页面时,便将该页面的页面号从战中移出,将它压入栈顶。因此,栈顶 始终
5、是最新被访问页面的编号,而栈底则是最近最久未使用页面的页面号。八 源程序文件 #include<stdio.h> #include<conio.h> #include<stdlib.h>#define M 3 /物理块数#define N 10 / 页面数#define Myprintf1printf("t*ttnn");/#define Myprintf2printf("f*nn");/表格控制表格控制typedef struct pageint num;/* 记录页面号 */Page;/ 页面逻辑结构,结构为方便算
6、法实现设计Page bM;/ 存单元数int cMN;/ 暂保存存当前的状态:缓冲区int queue100;/ 记录调入队列int K;/ 调入队列计数变量/ 初始化存单元、缓冲区void Init(Page *b,int cMN)int i,j;for(i=0;i<N;i+)bi.num=-1;bi.time=N-i-1;for(i=0;i<M;i+)for(j=0;j<N;j+)cij=-1;/ 取得在存中停留最久的页面,默认状态下为最早调入的页面int GetMax(Page *b)int i;int max=-1;int tag=0;for(i=0;i<M;i
7、+)if(bi.time>max)max=bi.time;tag=i;return tag;/ 判断页面是否已在存中int Equation(int fold,Page *b)int i;for(i=0;i<M;i+)if(fold=bi.num)return i;return -1;/LRU 核心部分void Lru(int fold,Page *b)int i;int val;val=Equation(fold,b);if(val>=0)bval.time=0;for(i=0;i<M;i+)if(i!=val)bi.time+;else记录调入页面queue+K=f
8、old;/val=GetMax(b);bval.num=fold;bval.time=0;for(i=0;i<M;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;i<N;i+)scanf("%d",&ai);Init(b,c); / 调用for(i=0;
9、i<N;i+)Lru(ai,b);c0i=ai;/ 记录当前的存单元中的页面for(j=0;j<M;j+)cji=bj.num;/ 结果输出printf("存状态为 :n");Myprintf2;for(j=0;j<N;j+)printf("|%2d",aj);printf("|n");Myprintf2;for(i=0;i<M;i+)for(j=0;j<N;j+) if(cij=-1) printf("|%2c",32);else printf("|%2d",ci
10、j);printf("|n");Myprintf2;printf("n 调入队列为: ");缺页for(i=0;i<K+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");九 程序运行结果欢迎使用LW1页面调度算法HU JOI JIXJI请输入所要访问的各个贝面号,3456内存状态为:I3!G!6!3!2I4!5I6!5! 3 :!&I6!6:£!2I2I2I6IGII
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 【甘南】2025年甘肃甘南州州直机关事业单位公开选聘工作人员25人笔试历年典型考题及考点剖析附带答案详解
- 【白银】2025年天津市和平区面向靖远籍未就业高校毕业生招聘事业单位工作人员5人笔试历年典型考题及考点剖析附带答案详解
- 宜昌市市直事业单位2025年统一公开招聘笔试历年典型考题及考点剖析附带答案详解
- 口腔急救知识课件
- 2025年新初二英语人教新版尖子生专题复习《完形填空》
- 食品加工厂节能减排2025年节能减排效果评估与持续改进报告
- 企业纠纷处理管理办法
- 企业加强债权管理办法
- 工业互联网平台联邦学习隐私保护在城市公共安全应急管理中的应用现状与趋势报告
- 临沂共用食堂管理办法
- 看场工作合同协议
- 工艺验证检查指南2025
- 安徽亳州谯城在建风电场项目“9.5”较大高处坠落事故调查报告警示教育专题学习
- 预防给药错误
- 石化公司安全生产管理制度汇编
- 支气管激发试验临床应用中国专家共识(2024版)
- DB4401∕T 11-2018 建筑废弃物运输 车辆标志与监控终端、车厢规格与密闭
- 2025年陕西精益化工有限公司招聘笔试参考题库含答案解析
- 出租屋孩子意外免责协议书
- 培养指导青年教师协议书
- 国家职业技术技能标准 6-28-02-01 燃气储运工 人社厅发202188号
评论
0/150
提交评论