




免费预览已结束,剩余21页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
目 录 1 问题的提出 问题的提出 1 1 1 关于页面置换算法模拟程序问题的产生 1 1 2 任务分析 1 2 需求分析 需求分析 1 3 方案设计 方案设计 2 4 总体设计 总体设计 3 4 1 程序 N S 图 3 4 2 主要的函数 3 4 3 主要流程图及代码 4 4 3 1 FIFO 先进先出 4 4 3 2 LRU 最近最久未使用 5 4 3 3 OPT 最佳置换算法 7 4 4 实现结果 10 5 程序测试 程序测试 14 5 1 设计测试数据 14 5 2 测试结果及分析 15 摘 要 随着计算机的普及人们的物质生活得到了极大的满足 人们在精神生活方面同样也需 页面置换算法模拟程序 要提高 所以越来越多的人进行着各种各样的学习 操作系统是计算机教学中最重要 的环节之一 也是计算机专业学生的一门重要的专业课程 操作系统质量的好坏 直 接影响整个计算机系统的性能和用户对计算机的使用 一个精心设计的操作系统能极 大地扩充计算机系统的功能 充分发挥系统中各种设备的使用效率 提高系统工作的 可靠性 由于操作系统涉及计算机系统中各种软硬件资源的管理 内容比较繁琐 具 有很强的实践性 要学好这门课程 必须把理论与实践紧密结合 才能取得较好的学 习效果 本课程设计是学生学习完 操作系统教程 课程后 进行的一次全面的综合训练 通过课程设计 让学生更好地掌握操作系统的原理及实现方法 加深对操作系统基础理 论和重要算法的理解 加强学生的动手能力 熟悉页面置换算法及其实现 引入计算机系统性能评价方法的概念 关键词 关键词 编制页面置换算法模拟程序 打印页面 FIFO 页面算法 LRU 页面置换算法 OPT 页面置换算法 页面置换算法模拟程序 引 言 1 1 问题的提出 问题的提出 1 11 1 关于页面置换算法模拟程序问题的产生关于页面置换算法模拟程序问题的产生 在各种存储器管理方式中 有一个共同的特点 即它们都要求将一个作业 全部装入内存方能运行 但是有两种情况 1 有的作业很大 不能全部装 入内存 致使作业无法运行 2 有大量作业要求运行 但内存容量不足以 容纳所有这些作业 而虚拟内存技术正式从逻辑上扩充内存容量 将会解决以 上两个问题 从内存中调出一页程序或数据送磁盘的对换区中 通常 把选择换出的页面的 算法称为页面置换算法 Page Replacement Algorithms 进而页面置换算法 模拟程序能客观的将其工作原理展现在我们面前 1 21 2 任务分析任务分析 首先 定义宏变量 设置所占最大内存长度 编辑以时间为种子 初始化 随即发生器 进行相关页面输入程序的编写以及页面的打印 尔后 寻找最近 最近最久未使用的页面 记录当前内存块中页面离下次使用间隔长度等相关程 序的代码编写 最后 进行 FIFO LRU OPT 三种算法的编写 2 2 需求分析需求分析 1 用随机数方法产生页面走向 页面走向长度为 L 2 根据页面走向 分别采用 FIFO 和 LRU 算法进行页面置换 统计缺页率 为简化操作 在淘汰一页时 只将该页在页表中抹去 而不再判断它是 否被改写过 也不将它写回到辅存 3 假定可用内存块和页表长度 作业的页面数 分别为 m 和 k 初始时 作业页面都不在内存 随机数产生程序 int i j 页面置换算法模拟程序 j time NULL 取时钟时间 srand j 以时钟时间 x 为种子 初始化随机数发生器 cout 输出随机数 for i 0 i m i p i num rand 10 1 产生 1 到 10 之间的随即数放到数组 p 中 p i time 0 cout p i num 上述随机数发生函数产生的随机数为 0 0 1 0 稍另变化就可得到 0 n 1 之间的随机数 程序开始时 应对变量 Seed 实型 赋初值 根据页面置换算法的理论操作及要求 首先要进行页面长度的确定 定义 结构体用以储存数据 进行主界面代码及 FIFO LRU OPT 页面置换算法代码的 编写 3 3 方案设计 方案设计 首先 定义宏变量 设置所占最大内存长度 编辑以时间为种子 初始化随 即发生器 进行相关页面输入程序的编写以及页面的打印 其次 寻找最近最近最久未使用的页面 记录当前内存块中页面离下次使 用间隔长度等相关程序的代码编写 最后 进行 FIFO LRU OPT 三种算法的编写 程序运行平台 VC 6 0 具体操作如下 在 VC 6 0 的环境下准备用时钟函数调用库函数 include 取时钟时间并存入 t 调用库函数 t time NULL 用时间 t 初 始化随机数发生器调用 库函数 srand t 返回一个 1 10 之间的随机数 x rand 10 1 编写三种算法 页面置换算法模拟程序 4 4 总体设计 总体设计 4 14 1 程序程序 N SN S 图图 程序开始 输入选择项 进行判断 页面存在进入下一部操作此项不存 在 输入要输出的结果 输出结果 结束 4 24 2 主要的函数主要的函数 Input int m Pro p L 打印页面走向状态 void print Pro page1 打印当前的页面 int Search int e Pro page1 寻找内存块中与 e 相同的块号 int Max Pro page1 寻找最近最长未使用的页面 int Count Pro page1 int i int t Pro p L 记录当前内存块中页面 离下次使用间隔长度 int main 主函数 随机数发生器 include include 准备用时钟函数调用库函数 t time NULL 取时钟时间并存入 t 调用库函数 srand t 用时间 t 初始化随机数发生器调用库函数 x rand 10 1 返回一个 1 10 之间的随机数 页面置换算法模拟程序 4 34 3 主要流程图主要流程图及代码及代码 4 3 14 3 1 FIFOFIFO 先进先出 先进先出 设计原理 需要进行页面置换 即把内存中装入最早的那个页面淘 汰 换入当前的页面 算法流程图 Y N N Y 图 4 1FIFO 算法流程图 代码 if c 1 FIFO 页面置换 n 0 开始 页面走向存入数组 p 中 内存块用 page 表示初 始化为 0 当前 p 中第 i 个 元素是否已在内 存中 Page 是否有空 把 page 中最先装入的页 面置换出去 i 把 p i 的内容直接 装入最上面一个 空内存块 i 输出当前内存块状态 结束 i 页面置换算法模拟程序 cout endl cout endl cout FIFO 算法页面置换情况如下 endl cout endl cout endl while i 0 当前页面在内存中 cout p i num 输出当前页 p i num cout 不缺页 endl i i 加 1 else 当前页不在内存中 if t M t 0 else n 缺页次数加 1 page t num p i num 把当前页面放入内 存中 cout p i num print page 打印当前页面 t 下一个内存块 i 指向下一个页面 cout 缺页次数 n 缺页率 n m endl 4 3 24 3 2 LRULRU 最近最久未使用 最近最久未使用 设计原理 当需要淘汰某一页时 选择离当前时间最近的一段时间 内最久没有使用过的页先淘汰该算法的主要出发点是 如果某页被访问了 则 页面置换算法模拟程序 它可能马上还要被访问 或者反过来说如果某页很长时间未被访问 则它在最 近一段时间也不会被访问 算法流程图 Y N Y N 图 4 2 LRU 算法流程图 代码 if c 2 LRU 页面置换 n 0 cout endl 开始 页面走向存入数组 p 中 内 存块用 page 表示初始化为 0 当前 p 中第 i 个元 素是否已在内存 Page 是否有空 把 page 中最近最久未使 用的页面置换出去 i 把 p i 的内容直接 装入最上面一个 空内存块 i 输出当前内存块状态 结束 i 页面置换算法模拟程序 cout endl cout LRU 算法页面置换情况如下 endl cout endl cout endl while i 0 如果已在内存块中 page t time 0 把与它相同的内存块的时间 置 0 for a 0 a M a if a t page a time 其它的时间加 1 cout p i num cout 不缺页 endl else 如果不在内存块中 n 缺页次数加 1 t Max page 返回最近最久未使用的块号 赋值给 t page t num p i num 进行替换 page t time 0 替换后时间置为 0 cout p i num print page for a 0 a M a if a t page a time 其它的时间加 1 i cout 缺页次数 n 缺页率 n m endl 页面置换算法模拟程序 4 3 34 3 3 OPTOPT 最佳置换算法 最佳置换算法 设计原理 需要进行页面置换 把内存中以后一段时间都不使用或 是使用时间离现在最远的页面换出 流程图 Y N Y N 开始 页面走向存入数组 p 中 内 存块用 page 表示初始化为 0 当前 p 中第 i 个元 素是否已在内存 Page 是否有空 把 page 中以后一段时间都不使用 或是使用时间离现在最远的换出 i 把 p i 的内容直接 装入最上面一个 空内存块 i 输出当前内存块状态 结束 i 页面置换算法模拟程序 图 4 3 OPT 流程图 代码 if c 3 OPT 页面置换 n 0 cout endl cout endl cout OPT 算法置换情况如下 endl cout endl cout endl while i 0 如果已在内存块中 cout p i num cout 不缺页 endl i else 如果不在内存块中 int a 0 for t 0 t M t if page t num 0 a 记录空的内存块数 if a 0 有空内存块 int q M for t 0 tt q t 把空内存块中 块号最小的找出来 page q num p i num 页面置换算法模拟程序 n cout p i num print page i else int temp 0 s for t 0 t M t 寻找内存块中下次使用 离现在最久的页面 if temp Count page i t p temp Count page i t p s t 把找到的块号赋给 s page s num p i num n cout p i num print page i cout 缺页次数 n 缺页率 n m endl 4 44 4 实现结果实现结果 程序在运行的情况下 进入主界面输入菜单 如图 3 3 所示 输入 14 图 4 5 输入 14 后的输出图 输入 25 页面置换算法模拟程序 图 5 6 输入数据 25 后输出图 输入数据 18 图 5 7 输入数据 18 后的输出图 输入数据 图 5 8 输出图 选 1 进入 FIFO 页面置换 页面置换算法模拟程序 图 5 9 FIFO 的输出图 选 2 进入 LRU 页面置换 页面置换算法模拟程序 图 5 10 LRU 的输出图 输入 3 进入 OPT 页面置换 页面置换算法模拟程序 图 5 11 OPT 的输出图 5 5 程序测试 程序测试 5 15 1 设计测试数据设计测试数据 A 14 25 18 2 6 4 B 1 C 2 D 3 页面置换算法模拟程序 5 25 2 测试结果及分析测试结果及分析 1 测试 A 结果及分析 进入主菜单后输入 14 25 显示输入不满足要求 输入 18 显示相关信息 输入 2 6 不满足要求 输入 4 显示出相关信息 2 测试结果及分析 显示出 FIFO 页面置换算法的缺页信息及缺页率 3 测试 C 结果及分析 显示出 LRU 页面置换算法的缺页信息及缺页率 4 测试 D 结果及分析 显示出 OPT 页面置换算法的缺页信息及缺页率 页面置换算法模拟程序 结 论 通过这次课程设计 不仅让我了解了页面置换算法 开始我一味的进行 调试 急切的想侥幸调试出来 但由于没有进行深入的考虑 我调试了很久都 没没有成功 我仔细的分析题目 分析材料 在原由的基础上我进行了改正 我最后还是调试成功了 还是经过了一翻努力 这次操作系统实习 不仅让我 对操作系统这门课程有了更深入的研究 对很多重要的概念有了巩固和掌握 通过努力 三个页面置换算法程序都已经完成 此时此刻 我心里多了些成就 感 虽然自己所做的很少也不够完善 但毕竟也是努力的结果 主要有以下几点收 获 1 通过对上网和看书查阅相关资料 使自己对 VC 语言的基本框架有新 的了解 加深了对可视化程序的认识 2 在使用 VC 语言来实现功能时 不像以往用的其他语言 它比较简练 更容易理解 实用性很强 3 先进先出页面置换和 LRU 以及 OPT 算法各有特点 但是实践起来却很大 使自己对页面置换算法有了新的认识 一周半的课程设计就要结束了 不但对专业知识有了更深的理解 更使的自己 认识到实践的重要性 理论 实践相结合才能达到很好的学习效果 特别是程 序语言的学习 页面置换算法模拟程序 致 谢 本次课程设计能顺利完成 感谢学校的大力支持 感谢数学与计算机学院为 我们提供实练的机会 感谢老师的细心教导 此次的课程设计收获很多 虽然经过了一段漫长而又痛苦的过程 但是自 己还是完成了 这是与自己的努力是分不开的 但是自己在调试过程当中遇到 的一些问题 自己仍然不懂 是在同学 老师的帮助下完成的 在这里还要再 次对他们的付出表示崇高的敬意 页面置换算法模拟程序 参考文献参考文献 面向对象程序设计与 VisualC 6 0 教程 陈天华编著 C 程序设计 第三版 谭浩强编著 C 入门经典 面向对象程序设计与 C 实现 刘晋萍编著 计算机操作系统教程 徐甲同等编著 操作系统 罗宇等编著 操作系统实验教程 张丽芬 刘利雄 王全玉编著 计算机操作系统 梁红兵 哲风屏 汤子瀛 编著 操作系统教程 陈向群 杨芙清 编著 代码 include include include include define L 20 页面走向长度最大为 20 int M 内存块 struct Pro 定义一个结构体 int num time Input int m Pro p L 打印页面走向状态 cout 请输入实际页面走向长度 L 15 L m if m 20 m 15 cout 实际页面长度须在 15 20 之间 请重新输入 L else break while 1 int i j j time NULL 取时钟时间 srand j 以时钟时间 x 为种子 初始化随机数发生器 cout 输出随机数 for i 0 i m i p i num rand 10 1 产生 1 到 10 之间的随即数放到数组 p 中 p i time 0 cout p i num cout endl return m void print Pro page1 打印当前的页面 Pro page new Pro M page page1 for int i 0 i M i cout page i num cout endl int Search int e Pro page1 寻找内存块中与 e 相同的块号 Pro page new Pro M page page1 for int i 0 i M i if e page i num return i 返回 i 值 return 1 int Max Pro page1 寻找最近最长未使用的页面 Pro page new Pro M page page1 int e page 0 time i 0 while i M 找出离现在时间最长的页面 页面置换算法模拟程序 if e page i time e page i time i for i 0 i M i if e page i time return i 找到离现在时间最长的页面返回其块号 return 1 int Count Pro page1 int i int t Pro p L 记录当前内存块中页面离下次使用间隔长度 Pro page new Pro M page page1 int count 0 for int j i j L j if page t num p j num break 当前页面再次被访问时循环结束 else count 否则 count 1 return count 返回 count 的值 int main int c int m 0 t 0 float n 0 Pro p L m Input m p 调用 input 函数 返回 m 值 cout M if M 5 M 3 cout 内存块 m 须在 3 5 之间 请重新输入 m else break while 1 Pro page new Pro M do 页面置换算法模拟程序 for int i 0 i M i 初试化页面基本情况 page i num 0 page i time m 1 i i 0 cout 1 FIFO 页面置换 endl cout 2 LRU 页面置换 endl cout 3 OPT 页面置换 endl cout 按其它键结束程序 c system cls if c 1 FIFO 页面置换 n 0 cout endl cout endl cout FIFO 算法页面置换情况如下 endl cout endl cout endl while i 0 当前页面在内存中 cout p i num 输出当前页 p i num cout 不缺页 endl i i 加 1 else 当前页不在内存中 if t M t 0 else n 缺页次数加 1 page t num p i num 把当前页面放入内存中 cout p i num print page 打印当前页面 t 下一个内存块 i 指向下一个页面 页面置换算法模拟程序 cout 缺页次数 n 缺页率 n m endl if c 2 LRU 页面置换 n 0 cout endl cout endl cout LRU 算法页面置换情况如下 endl cou
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 非木浆净化工艺考核试卷及答案
- 豆制品酶法脱脂工艺优化实验工艺考核试卷及答案
- 陶瓷烧成工培训考核试卷及答案
- 碱金属卤化物硝化工艺考核试卷及答案
- 刨花板热压工数字化技能考核试卷及答案
- 项目部资金管理及新公司财务事项相关填空题测试卷
- 2025-2026学年赣美版(2024)小学美术三年级上册《活字印古籍》教学设计
- 银行移动营销试题及答案
- 金融专业自荐试题及答案
- 焊接专业试题及答案
- Unit 3 Places we live in单元整体公开课一等奖创新教学设计表格式(5课时)
- 人教版(2024)八年级上册数学全册教案
- 门式起重机安装、拆除专项施工方案
- 四川大学本科川化实习报告
- GB/T 10299-2011绝热材料憎水性试验方法
- GB 15766.1-2000道路机动车辆灯丝灯泡尺寸、光电性能要求
- 储备粮直属库原粮储存项目安全现状评价报告
- 第四章-清洁生产-清洁生产与循环经济课件
- 重庆医科大学护理学考研大纲
- 品管圈提高痰培养标本留取率
- 《新能源汽车电力电子技术》全册课件
评论
0/150
提交评论