已阅读5页,还剩15页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1 燕山大学课程设计说明书 课程设计名称 操作系统 题目 模拟页式存储管理 班级 10 计算机科学 2 班 开发小组名称 页式存储模拟小组 课题负责人 贾文浩 课题组成员 姓名 贾文浩 学号 100104010095 班级 10 计算机科学 2 班 自评成绩 A 课题开发日期 2013 年 1 月 7 日 2013 年 1 月 11 日 2 目录目录 1 概述 3 1 1 目的 3 1 2 主要完成的任务 3 1 3 使用的开发工具 3 1 4 解决的主要问题 3 2 使用的基本概念和原理 4 3 总体设计 4 3 1 基本技术路线的确定 4 3 2 软件的总体结构 模块关系 总体流程的确定 4 3 3 创立的线程的确定 5 4 详细设计 5 4 1 利用线程操作的函数 5 4 2 模块内部的流程和实现算法 5 4 3 设计的过程 构件 函数及参数的确定和解释 7 5 编码设计 9 5 1 开发环境的设置和建立 9 5 2 程序设计时要注意的事项 9 5 3 关键构件 插件的特点和使用 10 5 4 主要程序的代码设计及注释 10 5 5 技术难点 经常犯的错误 17 6 测试时出现过的问题及其解决方法 17 7 软件使用说明 18 7 1 基本功能 18 7 2 需要运行的环境 19 8 总结 20 9 参考文献 20 3 模拟页式存储管理 1 1 概述概述 1 11 1 目的目的 通过使用程序设计语言设计一个程序 模拟页式存储管理中的 FIFO LRU LFU OPT 四个页面置换算法运行的过程 在实践中深刻理解页面置换算法及操作系统这门课程 提 高动手能力 1 21 2 主要完成的任务主要完成的任务 通过使用程序设计语言设计一个程序 模拟页式存储管理中 FIFO LRU LFU OPT 四页面置换算法运行的过程 要求 1 采用四个线程同时完成每个算法 2 能够设定驻留内存页面的个数 内存的存取时间 缺页中断的时间 快表的时间 并提供省缺值 3 能够随机输入存取的逻辑页面的页号序列 4 能够随机产生存取的逻辑页面的页号序列 5 能够设定页号序列中页面个数和范围 6 提供良好图形界面 同时能够展示四个算法运行的结果 7 计算每种页面置换算法每个页面的存取时间 8 能够将每次的实验输入和实验结果存储起来 下次运行时或以后可查询 9 完成多次不同设置的实验 总结实验数据 看看能得出什么结论 1 31 3 使用的开发工具使用的开发工具 使用的平台为 visual c 6 0 1 41 4 解决的主要问题解决的主要问题 实现 FIFO LRU LFU OPT 四个算法 模拟页式存储管理 提供良好的界面 4 2 2 使用的基本概念和原理使用的基本概念和原理 该程序主要用到线程函数 线程的基本概念为 线程是进程中的实体 一个进程可以 拥有多个线程 一个线程必须有一个父进程 线程不拥有系统资源 只有运行必须的一些 数据结构 它与父进程的其它线程共享该进程所拥有的全部资源 原理 线程可以创建和撤消线程 从而实现序的并发执行 一般 线程具有就绪 阻 塞和运行三种基本状态 在多中央处理器的系统里 不同线程可以同时在不同的中央处理 器上运行 甚至当它们属于同一个进程时也是如此 大多数支持多处理器的操作系统都提 供编程接口来让进程可以控制自己的线程与各处理器之间的关联度 有时候 线程也称作 轻量级进程 就象进程一样 线程在程序中是独立的 并发的执行路径 每个线程有它自 己的堆栈 自己的程序计数器和自己的局部变量 但是 与分隔的进程相比 进程中的线 程之间的隔离程度要小 它们共享内存 文件句柄和其它每个进程应有的状态 3 3 总体设计总体设计 3 13 1 基本技术路线的确定基本技术路线的确定 主要采用 c 语言面向对象编程 3 23 2 软件的总体结构 模块关系 总体流程的确定软件的总体结构 模块关系 总体流程的确定 软件总共分为 3 块 第一块为参数设定 第二块为执行过程的演示 第三块为缺页率 缺页次数 置换率 置换次数的显示 第一个模块的参数的设定决定第二个和第三个模块 的结果显示 总体流程图如下 图一 流程图 开始 设定参数 过程演示 显示相关率 结束 5 3 33 3 创立的线程的确定创立的线程的确定 该程序要创立四个线程 threadFIFO threadLRU threadLFU threadOPT 4 4 详细设计详细设计 4 14 1 利用线程操作的函数利用线程操作的函数 使用的主要的函数为 CreateThread NULL 0 threadFIFO LPVOID LFU 线程的创建 CreateThread NULL 0 threadOPT LPVOID OPT 线程的创建 DWORD WINAPI threadFIFO LPVOID lparam FIFO 线程的定义 DWORD WINAPI threadLRU LPVOID lparam LRU 线程的定义 DWORD WINAPI threadLFU LPVOID lparam LFU 线程的定义 DWORD WINAPI threadOPT LPVOID lparam OPT 线程的定义 4 24 2 模块内部的流程和实现算法模块内部的流程和实现算法 参数设定模块 该模块主要分为内存页面数 页面数 页面序列 内存存取时间 缺 页中断时间 快表时间的设定 如图二 图二 参数设置对话框 内存页面数 页面数 页面序列 内存存取时间 缺页中断时间 快表时间它们分别 6 关联的变量如下图三 图三 相关变量 其中生成序列函数如下 UpdateData 1 myt2 SetSize total CString str1 CString str2 srand unsigned time NULL 尽量做到真正的随机数 for int i 0 iInsertString 1 str2 语句 如图四 7 图四 演示模块 显示相关率的模块包含了 16 个编辑框 用来分别显示四个算法的四个相关的数据 通 过调用 ab SetWindowText str2 来在编辑框上显示相关的计算数据 如图五 图五 4 34 3 设计的过程 构件 函数及参数的确定和解释设计的过程 构件 函数及参数的确定和解释 首先把程序分成参数设置模块 演示模块 数据显示模块 然后排放相应的控件 其 中参数设置模块单独设计了一个对话框用来设置参数 其中参数设置模块主要用到了编辑框和按钮 编辑框用来输入数据 按钮用来响应相 关命令 演示模块用了列表框控件 用来清晰显示页面调度情况 以及使用的时间等 其中进 度条来动态显示函数运行的进程 显示模块主要为编辑框 用来显示计算的结果 用到的函数主要有 A 将字符串序列转换成整型的数组 B 随机产生整型数组并转换成字符串 C 四个线程函数 A 将字符串序列转换成整型的数组 void CMyDlg Ok if m random char str new char m random GetLength 1 int i for i 0 i m random GetLength i 先转换成字符串数组 8 str i m random i str i GetPage str else MessageBox 请输入页面序列 void CMyDlg GetPage char pagestr 将字符数组转换成整型数组 CString str int count 0 for unsigned i 0 i 0 myt SetSize count 1 mytlru SetSize count 1 mytlfu SetSize count 1 mytopt SetSize count 1 m total count count 0 str str1 for i 0 i strlen pagestr i if pagestr i 9 else if str myt SetAt count atoi str 字符转换成整型数 并存到了数组里 mytlru SetAt count atoi str mytlfu SetAt count atoi str mytopt SetAt count atoi str str1 str str count B 随机产生整型数组并转换成字符串 srand unsigned time NULL 尽量做到真正的随机数 for int i 0 i total i myt2 SetAt i rand b a 1 1 str2 Format d myt2 GetAt i str1 str1 str2 C 四个线程函数的主要参数为结构体对象 由于线程函数需要操作多个对象 有编辑框 列表框 进度条获得存取时间等等 但是线程函数只能传递一个参数 于是就采用了结构 体 把那几个需要用到的变量都封装到结构体里 然后通过传递一个结构体对象就可以方 便操作了 5 5 编码设计编码设计 5 15 1 开发环境的设置和建立开发环境的设置和建立 开发环境为 VISUAL C 6 0 程序类型为基于对话框程序 5 25 2 程序设计时要注意的事项程序设计时要注意的事项 1 充分考虑实际应用 2 用到的变量 对象等要及时初始化 3 实现的功能要合理 10 5 35 3 关键构件关键构件 插件的特点和使用插件的特点和使用 Listbox 控件 列表框中的项目是通过程序插入到其中的 用户无法向清单中输入数据 当选择其中的项目 并在用户单击一个按钮或者执行某个操作时 由应用程序完成对指定 项目的具体操作 本程序中未涉及到后者 通过调用 InsertString 函数可以向列表框控 件中插入字符串 ResetContent 函数可以清空里面的内容 Static 控件 静态文本控件通常用来显示相关的提示信息 还可以通过 SetWindowText 函数在控件上面显示相关内容 ProgressCtrl 控件 进度条控件用来显示进度 通过 SetPos 函数可以设定进度 Edit 控件 通常用来输入文本 也可以通过 SetWindowText 函数在控件上面显示相 关内容 Button 控件主要是用来响应相关事件的 如单击事件 5 45 4 主要程序的代码设计及注释主要程序的代码设计及注释 四个算法的基本思想就是依次取出页面序列中的数据 与内存中的内容进行比较 如果相 等 则不缺页 取出序列中下一个数据 并把标记位置的那个参数加 1 再进行比较 如 果不行等即缺页 找到应替换的位置 用序列中元素替换之 继续取出序列中的下一个元 素进行比较 知道比较完所有元素 FIFO 算法核心部分 while countSetPos pos bool x false str for int k 0 kGetAt count 说明找到了 命中 不用替换 Sleep fasttime savetime time fasttime savetime x true break if x 11 m 位置向后移动一位 else 缺页 替换 Sleep absenttime 3 savetime 两次页表 在内存中 1 次内存 1 次中断 time absenttime 3 savetime int a a count m memory mym SetAt a myt GetAt count absent int b for int j 0 jInsertString 1 str2 在列表框中输出 count LRU 算法核心部分 while countSetPos pos bool x true str for int i 0 iGetAt count 12 Sleep fasttime savetime time fasttime savetime myb SetAt i 0 使用了一次 标记为 0 for int j 0 j memory j if j i myb SetAt j myb GetAt j 1 未使用的标记 1 m x false break if x 缺页处理 找到位置 替换之 int c 0 d if count m memory a count m else d myb GetAt 0 for int h 0 h memory h 找出标记最大的数 即最近最久未使 用 if dGetAt count myb SetAt a 0 for i 0 i memory i 13 if i a myb SetAt i myb GetAt i 1 替换 myb SetAt a 0 重新标记为 0 absent for int j 0 jInsertString 1 str2 count LFU 算法核心部分 基本上与 LRU 差不多 不同的是 如果替换的话 LFU 不用重新标记为 0 缺页的时候找到的便是使用频率最少的 while countSetPos pos str bool x true for i 0 iGetAt count mym GetAt i Sleep fasttime savetime time fasttime savetime 14 for int j 0 j memory j if j i myb SetAt j myb GetAt j 1 x false m break if x Sleep absenttime 3 savetime time absenttime 3 savetime int c 0 d if count m GetAt count a count m else d myb GetAt 0 for int j 0 j memory j if dGetAt count for int j 0 j memory j if j a myb SetAt j myb GetAt j 1 15 myb SetAt a 1 absent for int h 0 hInsertString 1 str2 count OPT 算法核心部分 while countSetPos pos bool needchange true str for i 0 iGetAt count 在内存中 Sleep fasttime savetime time fasttime savetime needchange false m break if needchange 缺页需要替换 16 Sleep absenttime 3 savetime time absenttime 3 savetime if count m GetAt count else int match 0 bool flag true for int i count 1 i totali 找到替换位置 for int j 0 jGetAt i mym GetAt j findBest SetAt j true match break for i 0 iGetAt count break absent for int j 0 jInsertString 1 str2 count 5 55 5 技术难点 经常犯的错误技术难点 经常犯的错误 通过使用 CArray 模版 来实现动态数组存储页面序列 这样就能够动态声明数组大小 了 并存储相应序列 由整型数组成的字符串转换成整型数组 随机产生相应的字符串 还有那个文件的保存 文件的打开 经常犯的错误就是忘了在传递参数的时候初始化结构体变量的成员 6 6 测试时出现过的问题及其解决方法测试时出现过的问题及其解决方法 线程函数内用来计数的 count 本应是个局部变量 但偏偏在外部定义了一个全局变量 count 导致线程函数运行的时候结果不正确 通过添加断点 在学长的指导下看出 count 计数有问题 然后又想到有全局变量干扰 去掉那个变量就解决了 还有就是那个菜单的添加 以及如何把子对话框中的变量值传递给主对话框困扰了我 好长一段时间 通过学长的指导以及资料的查阅 在主对话框下声明一个子对话框类型的 变量 这样就能方便传递参数了 随机数的处理 发现 rand 那个参数 产出的随机数不是真正意义上的随机 它是按 照次序来产生随机数的 通过添加srand unsigned time NULL 以时间为种子 这样就 能尽量做到产生真正意义上的随机数 还有就是那个快表时间的处理 因为模拟程序没有设置快表 所以当所需页面在内存 中的时候 默认就在快表中 此时的访问时间我们认为是快表时间加上内存存取时间 文件的打开通过 CFileDialog fdlg FALSE txt txt OFN HIDEREADONLY OFN OVERWRITEPROMPT szFilters this 18 来声明打开对话框 然后 if fdlg DoModal IDOK 那么 CStdioFile OutFile 这样就能 在文件里调用 WriteString 写入数据了 同理打开的时候也类似 CFileDialog opendlg TRUE T T txt OFN OVERWRITEPROMPT T 所有文件 NULL 如果点击确定 得到文件路径 然后调用函 数 ShellExecute this m hWnd open pathname NULL NULL SW SHOWNORMAL 就能够 显示出要打开的
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026及未来5年中国双棍喷风碾米机数据监测研究报告
- 2026事业单位工勤技能-江苏-江苏管道工五级(初级工)历年参考题库含答案详解3套试卷
- 2026事业单位工勤技能-江苏-江苏房管员五级(初级工)历年参考题库含答案详解3套试卷
- 2026事业单位工勤技能-江苏-江苏保安员五级(初级工)历年参考题库含答案详解3套试卷
- 2026事业单位工勤技能-新疆-新疆水工监测工二级(技师)历年参考题库含答案详解3套试卷
- 2026事业单位工勤技能-上海-上海殡葬服务工四级(中级工)历年参考题库含答案详解3套试卷
- 呃逆恶心应对方法
- 2026年秋季开学大四精力管理学业规划课件
- 2026届河南省南阳市九师联盟高三下学期考前预测历史试题(含答案)
- 2026年秋季开学大学一年级新生军训出列入列表彰课件
- GB/T 44886.2-2025网络安全技术网络安全产品互联互通第2部分:资产信息格式
- GB/T 46477-2025雷达站防雷技术规范
- 氨合成催化剂课件
- 算力中心建设项目商业计划书
- 2025中国融通资产管理集团有限公司招聘(230人)笔试考试备考试题及答案解析
- 保密咨询服务方案
- 入积极分子培训考试试题及答案
- 铁路法制宣传课件
- 生态环境保护督察工作条例培训解读课件
- 造纸辅料基础知识培训课件
- 科学护肤知识课件
评论
0/150
提交评论