预览加载中,请您耐心等待几秒...
1/8
2/8
3/8
4/8
5/8
6/8
7/8
8/8

在线预览结束,喜欢就下载吧,查找使用更方便

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

操作系统课程设计 LRU页面调度算法 学号: 姓名: 学院: 专业: 班级: 指导老师: 日期:目录 TOC\o"1-1"\h\uHYPERLINK\l_Toc22329一、实验题目ﻩPAGEREF_Toc223291 HYPERLINK\l_Toc17887二、课程设计得目得 PAGEREF_Toc178871 HYPERLINK\l_Toc27452三、设计内容ﻩPAGEREF_Toc274521 HYPERLINK\l_Toc20390四、设计要求ﻩPAGEREF_Toc203901 HYPERLINK\l_Toc27540五、设计思想 PAGEREF_Toc275401 HYPERLINK\l_Toc10299六、主要数据结构及其说明ﻩPAGEREF_Toc102992 HYPERLINK\l_Toc15649七、硬件支持 PAGEREF_Toc156493 HYPERLINK\l_Toc26955八、源程序文件 PAGEREF_Toc269553 HYPERLINK\l_Toc489九、程序运行结果ﻩPAGEREF_Toc4897 HYPERLINK\l_Toc1960十、实验体会 PAGEREF_Toc19608一实验题目 LRU页面调度算法 二课程设计得目得 操作系统课程设计就是计算机专业重要得教学环节,它为学生提供了一个既 动手又动脑,将课本上得理论知识与实际有机得结合一起,独立分析与解 决实际问题得机会。 1、进一步巩固与复习操作系统得基础知识。 2、培养学生结构化程序、模块化程序设计得方法与能力。 3、提高学生调试程序得技巧与软件设计得能力。 4、提高学生分析问题、解决问题以及综合利用C语言进行程序设计得能力。 三设计内容 程序应模拟实现LRU算法思想,对n个页面实现模拟调度。 四设计要求 1.不同得功能使用不同得函数实现(模块化),对每个函数得功能与调用接口要注释清楚。对程序其它部分也进行必要得注释。 2.对系统进行功能模块分析、画出总流程图与各模块流程图。 3.用户界面要求使用方便、简洁明了、美观大方、格式统一。所有功能可以反复使用,最好使用菜单。 4.通过命令行相应选项能直接进入某个相应菜单选项得功能模块。 5.所有程序需调试通过。 五设计思想 最近最久未使用(LRU)页调度算法就是选择最近最久未使用得页面予以淘汰。算法赋予每个页面一个访问字段,用来记录一个页面自上次被访问以来所经历得时间,当所要访问得页面在内存块中时,就不淘汰页面,否则,淘汰页面中时间最长得,即淘汰最近最久未使用得页面。 Lru(a[i],b) Init(b,c) 输入页面号 开始 输出queue[i]缺页次数与缺页率 就是否继续? y n 结束 算法流程图 六主要数据结构及其说明 程序执行就是稳定得,高效得。在LRU算法中,要找出最近最久未使用得页面得话,就必须设置有关得访问记录项,且每一次访问这些记录项,叶面都必须更新这些记录项。这个记录项在此程序中为: typedefstructpage { intnum;/*记录页面号*/ inttime;/*记录调入内存时间*/ }Page;//页面逻辑结构,结构为方便算法实现设计 如此,显然要花费较大得系统开销(包括时间与空间上得),这也就是实际系统中不采用LRU算法得直接原因,但由于其页面置换得优越性,实际系统中常使用LRU得近似算法。 七硬件支持 为了了解一个进程在内存中得各个页面各有多少时间未被进程访问,以及如何快速得知道哪一页就是最近最久未使用得页面,须有两类硬件之一得支持:寄存器或栈。 寄存器:为了记录某进程在内存中各页得使用情况,须为每个在内存中得页面配置一个移位寄存器。 栈:可利用一个特殊得栈来保存当前使用得各个页面得页面号。每当进程访问某页面时,便将该页面得页面号从战中移出,将它压入栈顶。因此,栈顶始终就是最新被访问页面得编号,而栈底则就是最近最久未使用页面得页面号。 八源程序文件 #include<stdio、h> #include<conio、h> #include<stdlib、h> #defineM3//物理块数 #defineN10//页面数 #defineMyprintf1 printf("\t************************\t\t\n\n");//表格控制 #defineMyprintf2 printf("******************************\n\n");//表格控制 typedefstructpage { intnum;/*记录页面号*/ inttime;/*记录调入