请求页式管理缺页中断模拟设计--fifo、opt课程设计内容摘要:

for(物理块每个元素检查 ) { 武汉理工大学《计算机操作系统教程》课程设计报告书 9 for(从该页后面的那个页开始计算权值 ) 权值累加。 } 得到最大权值所在的物理块,即是下次需要 替换的页 替换该页,加入内存 } if(该页不在内存,并且内存物理块没有满 ) { 缺页累加 直接加载进内存 } } 输出缺页次、缺页率和淘汰页号次序。 } main 函数 利用页式管理 control 类建立一个对象,来实现 FIFO、 OPT。 4 使用说明及运行分析 使用说明及运行 运行程序 根据提示输入调入页面数和可使用的物理块数, 再选择是用户输入还是计算机随机产生页面号。 观察页面调度过程, 处理完各页面后,统计并显示缺页次数 、 缺页率 和淘汰页面号次序。 测试实例和 运行结果 FIFO 算法 输入给定的 页面数: 10 输入给作业分配内存的 物理块数: 3 随机生成页面请求序列,如图 2: 0 1 7 3 9 0 6 9 8 7 武汉理工大学《计算机操作系统教程》课程设计报告书 10 图 2 运行 结果如图 3 图 3 OPT 算法 输入给定的页面数: 15 输入给作业分配内存的物理块数: 3 随机生成页面请求序列,如图 4: 0 1 7 3 9 0 6 9 8 7 图 4 运行结果如图 5 图 5 武汉理工大学《计算机操作系统教程》课程设计报告书 11 结论 与分析 从运行结果看出程序能满足模型设计的要求,提示用户对请求序列的大小和可用内存数量进行限制,并提示用户输入 请求序列号,或系统随机生成序列,按照不同的替换算法处理并且显示请求页面的调入和替换情况。 通过以上运行,比较各种算法的缺页次数和缺页率,可以看出 OPT 替换算法具有最小的缺页率。 虽理论上最优,但是实际却无法实现该算法。 5 自我评价与总结 在 完成了模拟系统的设计和实现 后 , 觉得自己确实获益匪浅。 首先,值得肯定的是 : 能够一开始就清晰分析了程序的设计流程及实现要求与原理,利用 流程图,较好地理解了请求分页的工作流程; 俩个主要 算法设计 较 合理,实现 容易 ;结果显示 清楚 ,能 较好的反映 各请求页面的存在和替换信息。 此外还借助 C++语言的类class 封装的方法将页式管理整个操作封装起来,容易补充,数据更安全,有益于继承,使功能更强大。 然而, 设计不足的地方 也是存在的 : 模拟系统中,用的是一个数组 (数据分配连续 )来模拟内存空间而 实际 系统 请 求分页存储管理时 ,所分配的内存是不连续的 ,或许可能用链表的形式可以改进 ;另外, 在设计 OPT 算法时,语句嵌套太多,不利于程序的阅读,而且参数和标志的变量的设计不太合理,也加深了程序不利于阅读。 最后,没能实现内存很直观的调度过程的呈现。 其次, 在 设计过程中 ,为了 较好地 完成 设计 , 也参阅 和 回忆 结合 了其他相关知识, 操武汉理工大学《计算机操作系统教程》课程设计报告书 12 作系统相关知识 为主要架构 , 高级 语言 c++知识 为工具。 此 过程 的学习 ,丰富 和巩固 了 操作系统的 理论知识,对课堂上不明确和不懂的知识 ,如请求分页的工作流程 ,都得到了 很好 补充 学习 ,同时也增加了 c++语言本身的应用能力 ,极大提高了自身学习该门语言的热情。 懂得了编译、调试过程中错误的判断与矫正,积累了不少经验。 再其次,想补充的是 其他可用算法 的实现 :请求分页内存管理的页面替换还可以用LRU(最近最久未使用页面置换算法 )和轮转法( Round Robin)。 LRU 的基本思想是: 当需要淘汰某一页时,选择离当前时间最近的一段时间内最久没有使用过的页先淘汰。 即当需要淘汰一页时,选择 最长时间未使用 的页。 它是基于假设: 如果 某页被访问 ,它可能马上 还要被访问 ;相反,如果某页 长时间未被访问 ,它可能 最近也不可能被访问。 就是本质上与 OPT 算法相反的过程。 最后,个人认为 课程设计的范围还可以放的更广些,例如就实现内存页式(或段式)的管理,可以一起包含些内容,如地址的转换,空间的分配与回收,和虚存调度等,这样可以更概括的,更有逻辑,更全面的加深对计算机各个逻辑块的工作原理。 武汉理工大学《计算机操作系统教程》课程设计报告书 13 附 录: F1 参考文献 [ 1]张尧学,史美林编著.计算机操作系统教程(第 三 版).清华大学出版社. 2020 [ 2] 闵联营 , 何克右 主编 . C++程序设计教程 . 武汉理工 大 学出版社 . 2020 F2 源代码 以下文件在 中 includeiostream includeiomanip//格式化输出 include//随机数的头文件 using namespace std。 struct page{ int page_num。 //////页面号 int memory_num。 /////页面对应的内存物理块号 int is_in_memory。 /////状态标志,判断页面是否在内存 }。 class control{ public:。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。