- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
20071121060孟令妍操作系统实验设计报告
实习题目 指导教师 职 称 学生姓名 学 号 日 期 实习题目 指导教师 职 称 学生姓名 学 号 日 期
内蒙古师范大学计算机与信息工程学院
《操作系统》课程设计报告
实习题目 指导教师 职 称 学生姓名 学 号 日 期 设计题目 课题三 指导教师 玉柱 职称 副教授 姓 名 孟令妍 学 号 20071121060 日 期 2011-3-1
1 设计任务
课题三 设计一个虚拟存储区和内存工作区,编程序演示置换算法的具体实现过程,并计算访问命中率。
2 设计的功能目标
2.1 设计要求:
要求从主界面选择某算法,且以下算法都要实现
1、 先进先出算法(FIFO)
2、 最近最久未使用算法(LRU)
3、 随机淘汰算法
2.2 设计目的:系统的了解操作系统的置换算法和实现原理与技术.
3 设计的思想、方法和技术(含数据结构、算法)
3.1 总体的设计思想为:
程序开始时根据提示,输入合理的访问串长度,合理的分配的内存块数,及合理的访问串序列。然后根据菜单提示,选择想要演示的置换算法,一个置换算法演示结束后,还可以继续选择其他置换算法,同时,也可以重新输入新的合理的访问串长度,合理的分配的内存块数,及合理的访问串序列。然后根据菜单提示继续选择。也可以输入 0 退出演示程序。
3.2 具体的设计思想为:
用一个一维数组存储访问串序列,一个一维数组记录当前内存中的页面号。在LRU算法中,还用到一个一维数组来记录当前内存中各页面的访问内存的时间的先后顺序。当需要置换出一个页面时,就根据当前内存中各页面的访问内存的时间的先后顺序,选择时间最长的那一个页面出内存,新的页面就可以进入内存了。在FIFO算法中,如果内存中有空的,且当前要访问内存的页不在内存,则该页直接按顺序进入内存中,且缺页中断次数加 1 。当内存要访问的页不在内存中,且内存没有空时,就根据先进先出在原则,就把当前内存中最先进入内存中的页面换出内存,由于页进放内存是从内存的 0 号单元按顺序开始的,所以需要出内存的页在内存所在位置就是( interr-1)%memory_size(interr是缺页中断次数,memory_size是分配的内存块数),新的页就进入内存,并且缺页中断次数加 1 。如果要访问的页在内存中,则继续下一步。在随机淘汰算法中,如果内存中有空的,且当前要访问内存的页不在内存,则该页直接按顺序进入内存中,且缺页中断次数加1。当内存要访问的页不在内存中,且内存没有空时,缺页中断次数加 1 。并从 0 到memory_size-1中随机产生一个数。这个数对应内存数组的下标,于是将对应内存中的页换出内存,新的页进入内存。
所有的算法中,每一步的最后输出当前内存中的页,并说明当前发生了什么样的操作。另外,合理的访问串长度,合理的分配的内存块数,及合理的访问串序列,是指,访问串长度和分配的内存块数都必须大于 0 ,访问串中的页号不能小于 0 。
3.3功能函数模块设计
3.3.1总体设计
用户根据提示,输入要执行的命令,系统根据命令选择执行的功能。
3.3.2 主程序的流程图
3.3.3 FIFO算法流程图
3.3.4 LRU算法流程图
3.3.5 RANDOM算法流程图
4 设计的主要代码及注释
#include iostream
#include time.h
using namespace std;
void FIFO(int page[],int page_l,int memory_size);//先进先出
void LRU(int page[],int page_l,int memory_size);//最近最久未使用
void RANDOM(int page[],int page_l,int memory_size);//随机淘汰
void output(int memory[],int memory_size);//输出
void INPUT(int page[],int *ppage_l,int *pmemory_size);//输入
void menu();//显示菜单
void INPUT(int page[],int *ppage_l,int *pmemory_size)//输入子函数
{
int i,n=0;
cout请输入访问串的长度 L endl;
cin *ppage_l;//page_l是访问串的长度
while(*ppage_l=0)
{
cout访
原创力文档


文档评论(0)