设计一个虚拟存储区和内存工作区编程序演示下述算法的具体实现过程并计算访问命中率.doc
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《设计一个虚拟存储区和内存工作区编程序演示下述算法的具体实现过程并计算访问命中率.doc》由会员分享,可在线阅读,更多相关《设计一个虚拟存储区和内存工作区编程序演示下述算法的具体实现过程并计算访问命中率.doc(23页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、齐齐哈尔大学操作系统课程综合实践题目:主界面以灵活选择某算法 班级: 计本093 姓名: 赵明秋 学号: 2009021114 指导教师: 韩金库 2008年 12 月主界面以灵活选择某算法实验摘要:计算机应用专业学生全面了解与掌握系统软件,一般软件设计方法与技术必不可少综合课程,也是了解计算机硬件与软件如何衔接必经之路。我觉得此次实验最大亮点以及不同于别人地方就是将三种页面置换算法按照课本上教师讲方式直观简便输出 ,在采用输出算法时,我摒弃了常人所用一维数组输出法,而别出心裁采用了二维数组输出算法,模拟了内存物理块,清晰直观表达了页面是如何在外存中被调入内存中,以及各页面在调入过程中是否命中
2、或在置换时又置换了内存中哪个页面。在软件工程角度来看,我系统具有高内聚低耦合优点,即各种算法之间,并不影响彼此函数调用,而在各算法内部,内聚度很高。关键词:设计原理, 设计方案, 流程图,源代码,测试结果,结束语,参考文献课题运行环境操作系统:Windows XP 实验内容: 通过模拟实现请求页式存储管理几种基本页面置换算法,了解虚拟存储技术特点,掌握虚拟存储请求页式存储管理中几种基本页面置换算法基本思想与实现过程,并比较它们效率。熟悉虚拟存储管理各种液面置换算法,并辨析恶魔你程序实现请求页式存储管理页面置换算法。设计一个虚拟存储区与内存工作区,编程序演示下述算法具体实现过程,并计算访问命中率
3、。设计要求:主界面以灵活选择某算法,且以下算法都要实现1、先进先出算法(FIFO)2、最近最久未使用算法(LRU)3、最佳置换算法(OPT) 运行环境1)操作系统:Windows XP2)编程环境: 设计原理: 先进先出算法(FIFO)最简单页面置换算法是先入先出(FIFO)法。这种算法实质是,总是选择在主存中停留时间最长(即最老)一页置换,即先进入内存页,先退出内存。理由是:最早调入内存页,其不再被使用可能性比刚调入内存可能性大。建立一个FIFO队列,收容所有在内存中页。被置换页面总是在队列头上进行。当一个页面被放入内存时,就把它插在队尾上。这种算法只是在按线性顺序访问地址空间时才是理想,否
4、则效率不高。因为那些常被访问页,往往在主存中也停留得最久,结果它们因变“老”而不得不被置换出去。FIFO另一个缺点是,它有一种异常现象,即在增加存储块情况下,反而使缺页中断率增加了。当然,导致这种异常现象页面走向实际上是很少见。该算法将所有使用内存页面构成一个循环列队,每次置换时将队列中队首唤出,队首指针后移一位即可,算法容易实现牡丹石最先进入内存野末必将来就不用再到,甚至可能很快就会用到,所以不能保证有效缺页率,算法性能较差。 最近最久未使用算法(LRU)FIFO算法与OPT算法之间主要差别是,FIFO算法利用页面进入内存后时间长短作为置换依据,而OPT算法依据是将来使用页面时间。如果以最近
5、过去作为不久将来近似,那么就可以把过去最长一段时间里不曾被使用页面置换掉。它实质是,当需要置换一页时,选择在最近一段时间里最久没有使用过页面予以置换。这种算法就称为最久未使用算法(Least Recently Used,LRU)。 LRU算法是及每个页面最后使用时间有关。当必须置换一个页面时,LRU算法选择过去一段时间里最久未被使用页面。LRU算法是经常采用页面置换算法,并被认为是相当好,但是存在如何实现它问题。LRU算法需要实际硬件支持。其问题是怎么确定最后使用时间顺序,对此有两种可行办法: (1)计数器。最简单情况是使每个页表项对应一个使用时间字段,并给CPU增加一个逻辑时钟或计数器。每次
6、存储访问,该时钟都加1。每当访问一个页面时,时钟寄存器内容就被复制到相应页表项使用时间字段中。这样我们就可以始终保留着每个页面最后访问“时间”。在置换页面时,选择该时间值最小页面。这样做,不仅要查页表,而且当页表改变时(因CPU调度)要维护这个页表中时间,还要考虑到时钟值溢出问题。 (2)栈。用一个栈保留页号。每当访问一个页面时,就把它从栈中取出放在栈顶上。这样一来,栈顶总是放有目前使用最多页,而栈底放着目前最少使用页。由于要从栈中间移走一项,所以要用具有头尾指针双向链连起来。在最坏情况下,移走一页并把它放在栈顶上需要改动6个指针。每次修改都要有开销,但需要置换哪个页面却可直接得到,用不着查找
7、,因为尾指针指向栈底,其中有被置换页。因实现LRU算法必须有大量硬件支持,还需要一定软件开销。所以实际实现都是一种简单有效LRU近似算法。一种LRU近似算法是最近未使用算法(Not Recently Used,NUR)。它在存储分块表每一表项中增加一个引用位,操作系统定期地将它们置为0。当某一页被访问时,由硬件将该位置1。过一段时间后,通过检查这些位可以确定哪些页使用过,哪些页自上次置0后还未使用过。就可把该位是0页淘汰出去,因为在最近一段时间里它未被访问过。 最佳置换算法(OPT)最优置换(Optimal Replacement)是在理论上提出一种算法。其实质是:当调入新一页而必须预先置换某
8、个老页时,所选择老页应是将来不再被使用,或者是在最远将来才被访问。采用这种页面置换算法,保证有最少缺页率。但是最优页面置换算法实现是困难,因为它需要人们预先就知道一个进程整个运行过程中页面走向全部情况。不过,这个算法可用来衡量(如通过模拟实验分析或理论分析)其他算法优劣。该算法能保证有最低缺页率,所以称为最佳置换算法,但是该算法紧紧是一种理想状况下算法,因为在进程实际运行过程中,将来会执行到那儿页是不可预知,所以无法选择该置换那个页出去。因此,本算法在实际中无法使用,只能作为一种标准来衡量其他算法性能4.1 设计方案1)主界面:设置页面产生算法选择界面与页面置换算法选择界面;2)子界面:页面产
9、生算法分为两个界面,分别是随机产生算法与自己输入产生算法。页面置换算法分为三个子界面,分别是先进先出算法界面、最近最久未使用算法界面、最佳置换算法界面。5.1 流程图主流程图 图(1)5. FIFO函数流程图:图(2) LRU函数流程图: 图(4) OPT函数流程图: 图(5)6.源代码6.1 程序代码#include #include #include#define Bsize 3#define Psize 12#includeusing namespace std;int QStringPsize;int Num=0;struct pageInfor int content; int ti
10、mer;class YZ_replacepublic: YZ_replace(); YZ_replace(); int findSpace(); int findExist(int curpage); int findReplace(); void FIFO(); void OPT(); void BlockClear(); void initia1(int string); pageInfor *block; pageInfor *page; int memory_stateBsizePsize; int s;private:void P_String(int QString) int i;
11、 srand(unsigned)time(NULL); for(i=0;iPsize;i+) QStringi=rand()*9/RAND_MAX+1; cout页面走向:; for(i=0;iPsize;i+) coutQStringi ; coutendl;YZ_replace:YZ_replace()s=0; block = new pageInforBsize; for(int i=0; iBsize; i+) blocki.content = -1; blocki.timer = 0;void YZ_replace:initia1(int QString ) int j; page
12、= new pageInforPsize; for(int i=0; iPsize; i+) pagei.content = QStringi; pagei.timer = 0; for(i=0;iPsize;i+) for(j=0;jBsize;j+) memory_stateji=0;YZ_replace:YZ_replace() s=0;int YZ_replace:findSpace() for(int i=0; iBsize; i+) if(blocki.content = -1) return i; return -1;int YZ_replace:findExist(int cu
13、rpage) for(int i=0; iBsize; i+) if(blocki.content = pagecurpage.content) return i; return -1;int YZ_replace:findReplace() int pos = 0; for(int i=0; i= blockpos.timer) pos = i; return pos;void YZ_replace:FIFO() int exist,space,position ; for(int i=0; iPsize; i+) exist = findExist(i); if(exist != -1)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 设计 一个 虚拟 存储 内存 工作 程序 演示 下述 算法 具体 实现 过程 计算 访问 命中率
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内