microsoft visual c++6.0的环境下操作系统课程设计

microsoft visual c++6.0的环境下操作系统课程设计

ID:797105

大小:601.53 KB

页数:21页

时间:2017-09-05

microsoft visual c++6.0的环境下操作系统课程设计_第1页
microsoft visual c++6.0的环境下操作系统课程设计_第2页
microsoft visual c++6.0的环境下操作系统课程设计_第3页
microsoft visual c++6.0的环境下操作系统课程设计_第4页
microsoft visual c++6.0的环境下操作系统课程设计_第5页
资源描述:

《microsoft visual c++6.0的环境下操作系统课程设计》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、目录1.引言11.1编写目的11.2设计内容11.3设计原理11.3.1先进先出算法(FIFO)11.3.2最优置换算法(OPT)11.3.3最近最久未使用算法(LRU)21.4运行环境22.设计方案32.1模块划分32.3模块调用关系图32.4模块流程图32.4.1主函数流程图32.4.2FIFO函数流程图42.4.3LRU函数流程图52.4.4OPT函数流程图53.源代码63.1程序代码64.测试结果164.1页面选择测试164.2应用算法选择测试165.总结186.程序使用说明书197.参考文献191.引言1.1编写目的在MicrosoftVisua

2、lC++6.0的环境下用C++语言编写程序,实现操作系统中页面在内存与外存中如何置换的问题。1.2设计内容设计一个虚拟存储区和内存工作区,编程序演示下述算法的具体实现过程,并计算访问命中率。设计要求:主界面以灵活选择某算法,且以下算法都要实现1、先进先出算法(FIFO)2、最近最久未使用算法(LRU)3、最佳置换算法(OPT)1.3设计原理1.3.1先进先出算法(FIFO)最简单的页面置换算法是先入先出(FIFO)法。这种算法的实质是,总是选择在主存中停留时间最长(即最老)的一页置换,即先进入内存的页,先退出内存。理由是:最早调入内存的页,其不再被使用的可

3、能性比刚调入内存的可能性大。建立一个FIFO队列,收容所有在内存中的页。被置换页面总是在队列头上进行。当一个页面被放入内存时,就把它插在队尾上。这种算法只是在按线性顺序访问地址空间时才是理想的,否则效率不高。因为那些常被访问的页,往往在主存中也停留得最久,结果它们因变“老”而不得不被置换出去。FIFO的另一个缺点是,它有一种异常现象,即在增加存储块的情况下,反而使缺页中断率增加了。当然,导致这种异常现象的页面走向实际上是很少见的。1.3.2最优置换算法(OPT)最优置换(OptimalReplacement)是在理论上提出的一种算法。其实质是:当调入新的一

4、页而必须预先置换某个老页时,所选择的老页应是将来不再被使用,或者是在最远的将来才被访问。采用这种页面置换算法,保证有最少的缺页率。但是最优页面置换算法的实现是困难的,因为它需要人们预先就知道一个进程整个运行过程中页面走向的全部情况。不过,这个算法可用来衡量(如通过模拟实验分析或理论分析)其他算法的优劣。1.3.3最近最久未使用算法(LRU)FIFO算法和OPT算法之间的主要差别是,FIFO算法利用页面进入内存后的时间长短作为置换依据,而OPT算法的依据是将来使用页面的时间。如果以最近的过去作为不久将来的近似,那么就可以把过去最长一段时间里不曾被使用的页面置

5、换掉。它的实质是,当需要置换一页时,选择在最近一段时间里最久没有使用过的页面予以置换。这种算法就称为最久未使用算法(LeastRecentlyUsed,LRU)。LRU算法是与每个页面最后使用的时间有关的。当必须置换一个页面时,LRU算法选择过去一段时间里最久未被使用的页面。LRU算法是经常采用的页面置换算法,并被认为是相当好的,但是存在如何实现它的问题。LRU算法需要实际硬件的支持。其问题是怎么确定最后使用时间的顺序,对此有两种可行的办法:(1)计数器。最简单的情况是使每个页表项对应一个使用时间字段,并给CPU增加一个逻辑时钟或计数器。每次存储访问,该时

6、钟都加1。每当访问一个页面时,时钟寄存器的内容就被复制到相应页表项的使用时间字段中。这样我们就可以始终保留着每个页面最后访问的“时间”。在置换页面时,选择该时间值最小的页面。这样做,不仅要查页表,而且当页表改变时(因CPU调度)要维护这个页表中的时间,还要考虑到时钟值溢出的问题。(2)栈。用一个栈保留页号。每当访问一个页面时,就把它从栈中取出放在栈顶上。这样一来,栈顶总是放有目前使用最多的页,而栈底放着目前最少使用的页。由于要从栈的中间移走一项,所以要用具有头尾指针的双向链连起来。在最坏的情况下,移走一页并把它放在栈顶上需要改动6个指针。每次修改都要有开销

7、,但需要置换哪个页面却可直接得到,用不着查找,因为尾指针指向栈底,其中有被置换页。因实现LRU算法必须有大量硬件支持,还需要一定的软件开销。所以实际实现的都是一种简单有效的LRU近似算法。一种LRU近似算法是最近未使用算法(NotRecentlyUsed,NUR)。它在存储分块表的每一表项中增加一个引用位,操作系统定期地将它们置为0。当某一页被访问时,由硬件将该位置1。过一段时间后,通过检查这些位可以确定哪些页使用过,哪些页自上次置0后还未使用过。就可把该位是0的页淘汰出去,因为在最近一段时间里它未被访问过。1.4运行环境操作系统:WindowsXP编程环

8、境:MicrosoftVisualC++6.02.设计方案2.1模

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。