虚拟存储器治理系统操作系统课程设计.docx
《虚拟存储器治理系统操作系统课程设计.docx》由会员分享,可在线阅读,更多相关《虚拟存储器治理系统操作系统课程设计.docx(14页珍藏版)》请在冰豆网上搜索。
虚拟存储器治理系统操作系统课程设计
第1章设计任务分析
本设计的目的是通过设计一个简单的虚拟存储器治理系统来模拟实际的页面调度算法与进程,以把握这种有效的技术。
要求将其输入/输出处置程序编成一个独立的进程模块并与其它请求输入/输出的进程并发运行。
并要求加入设备治理子模块。
1.1虚拟存储技术分析
1.1.1虚拟存储技术概述
虚拟存储技术是随着运算机技术的进展而进展起来的。
早在20世纪70年代,为了克服内存容量小本钱高而不适应大型程序应用需要的矛盾,人们开发了虚拟内存技术。
随着运算机技术及相关信息处置技术的不断进展,人们对存储的需求愈来愈大,单个大容量磁盘已不能适应应用的需要,虚拟存储技术又有进一步的进展,如在操作系统下将一组硬盘捆绑成带区集(STRIP)作为单个逻辑存储单元供主机访问;磁盘冗余阵列(RAID)技术将多个物理磁盘通过必然的逻辑关系集合起来,成为一个大容量的虚拟磁盘。
从某种意义上讲,SAN本身也是虚拟存储技术的应用。
1.1.2虚拟存储技术的概念
所谓虚拟存储技术,是指把多个物理上独立存在的存储体通过软件或硬件的手腕集中治理起来,形成一个逻辑上的虚拟存储单元供主机访问。
那个虚拟逻辑单元的存储容量是它所集中治理的各物理存储体的存储容量之和,而它的访问带宽那么在必然程度上接近各个物理存储体的访问带宽之和。
虚拟存储事实上是逻辑存储,是一种智能、有效地治理存储数据的方式。
虚拟存储克服了物理存储的局限,它能够把物理设备变成完全不同的逻辑镜像,呈现给用户,既充分利用了物理设备的优势,如高性能、高可用,又打破了物理设备本身不可克服的局限性。
从用户角度看,利用存储空间而不是利用物理存储硬件,治理存储空间而不是治理物理存储部件,这确实是虚拟存储的概念。
1.1.3虚拟存储技术的优势
虚拟存储技术不仅能够提高主机访问存储设备的性能,同时关于存储容量的扩展是超级方便的,能够爱惜原有投资,实现不阻碍正常数据访问的前提下的动态扩容。
虚拟存储技术为实际应用带来的益处要紧体此刻以下几个方面:
1)虚拟存储技术使网络系统存储部份的重要指标——单个逻辑单元的存储容量和访问带宽相对单个物理存储体大大提高,适应了网络应用专门是视频网络应用的需要。
2)在虚拟存储环境下,不管后端物理存储体是什么设备,效劳器及其应用系统看到的都是其熟悉的存储设备的逻辑镜像。
即便物理存储体发生转变,其逻辑镜像也不发生转变,应用系统无需关切后端存储,只需专注于治理存储空间,使得存储治理变得轻松简单,便于灵活配置。
3)虚拟存储是一种智能化的系统,它许诺客户以透明有效的方式在磁盘或磁带上存储数据,使客户的存储系统容纳更多的数据,也使更多的用户能够共享同一个系统。
虚拟存储器的效率是系统性能评判的重要内容,它与主存容量、页面大小、命中率,程序局部性和替换算法等因素有关。
1.2利用算法分析:
1.2.1FIFO算法(先进先出淘汰算法)
1)什么是先进先出淘汰算法?
该算法老是淘汰最先进入内存的页面,即悬着在内存中驻留时刻最久的页面予以淘汰。
2)实现方式
系统保留一张顺序表,该表记录了作业程序的各页面进入主存的前后顺序。
·用数组作顺序表可在主存中成立一个m(m是分派给该作业的存储块数)个元素的页号表和一个调换指针。
如以下图所示:
·用存储分块表作顺序表该顺序表以块号为序,依次各块的分派情形。
那个地址假定m=4,且4,5,1,2页以依次装入2,6,7,4各存储块中。
此时存储分块表如以下图所示:
(a)替换以前
1.2.2LRU算法(最久未利用淘汰算法)
1)什么是最久未利用淘汰算法?
当需要淘汰一页时,老是选择最长时刻未被利用的那一页淘汰。
2)实现方式
·用硬件实现
此算法每一页能够设置一个R位的寄放器;
每次访问一页时,将该页所对应的寄放器的最左一名置1;
每隔时刻t将所有的R位寄放器右移一名。
如此,在T=Rt时刻内,方问过的页多对应的寄放器R内时一个不全为0的整数,而没有访问过的页相对应的R之值为0。
当缺页中断时,选择R值最小的那页进行淘汰。
·用页号栈实现
此算法设立一个页号栈,使栈顶元素为刚北访问的页面,而栈底元素为最久未被访问的页面。
每当访问页面时,该页号栈需进行调整。
一个页面被访问过,就当即将它的页号记在页号栈的顶部,而将栈中原有的页号依次下移。
若是栈中原有的页号中有与新记入顶部的页号相重者,那么将该重号抽出,且将页号栈内容进行紧凑紧缩。
1.2.3OPT算法(最正确淘汰算法)
1)什么是最正确淘汰算法?
当需要淘汰一页时,将选择以后永不利用的或许是在最长(以后)时刻内再也不被访问的页面。
2)算法优势
采纳最正确置换算法,通常可保证取得最低的缺页率。
但由于人目前还无法预知一个进程在内存的假设干个页面中,哪个页面是以后最长时刻内再也不被访问的,因此该算法是无法实现的,即能够利用此算法来评判其它算法。
第2章总设计方案
置换算法思想
2.2.1 最正确置换算法(Optimal):
它是由Belady于1966年提出的一种理论上的算法。
其所选择的被淘汰页面,将是以后永不利用的或许是在最长(以后)时刻内再也不被访问的页面。
采纳最正确置换算法,通常可保证取得最低的缺页率。
但由于人目前还无法预知一个进程在内存的假设干个页面中,哪个页面是以后最长时刻内再也不被访问的,因此该算法是无法实现的,即能够利用此算法来评判其它算法。
2.1.2 先进先出(FIFO)页面置换算法:
这是最先显现的置换算法。
该算法老是淘汰最先进入内存的页面,即选择在内存中驻留时刻最久的页面予以淘汰。
该算法实现简单只需把一个进程已调入内存的页面,按前后顺序链接成一个队列,并设置一个指针,称为替换指针,使它老是指向最老的页面。
2.1.3 LRU置换算法:
LRU(LeastRecentlyUsed)置换算法的描述
FIFO置换算法性能之因此较差,是因为它所依据的条件是各个页面调入内存的时刻,而页面调入的前后并非能反映页面的利用情形。
最近最久未利用(LRU)置换算法,是依照页面调入内存后的利用情形进行决策的。
由于无法预测各页面以后的利用情形,只能利用“最近的过去”作为“最近的以后”的近似,因此,LRU置换算法是选择最近最久未利用的页面予以淘汰。
该算法给予每一个页面一个访问字段,用来记录一个页面自上次被访问以来所经历的时刻t,,当须淘汰一个页面时,选择现有页面中其t值最大的,即最近最久未利用的页面予以淘汰。
2.2LRU置换算法的硬件支持
LRU置换算法尽管是一种比较好的算法,但要求系统有较多的支持硬件。
为了了解一个进程在内存中的各个页面各有多少时刻未被进程访问,和如何快速地明白哪一页是最近最久未利用的页面,须有以下两类硬件之一的支持:
2.2.1寄放器
为了记录某个进程在内存中各页的利用情形,须为每一个在内存中的页面配置一个移位寄放器,可表示为
R=Rn-1Rn-2Rn-3……R2R1R0当进程访问某物理块时,要将相应寄放器的Rn-1位置成1。
现在,按时信号将每隔一按时刻(例如100ms)将寄放器右移一名。
若是咱们把n位寄放器的数看做是一个整数,那么具有最小数值的寄放器所对应的页面,确实是最近最久未利用的页面。
如图1示出了某进程在内存中具有8个页面,为每一个内存页面配置一个8位寄放器时的LRU访问情形。
那个地址,把8个内存页面的序号别离定为1˜˜8。
由图能够看出,第7个内存页面的R值最小,当发生缺页时第一将它置换出去。
R
实
页
R7
R6
R5
R4
R3
R2
R1
R0
1
0
1
0
1
0
0
1
0
2
1
0
1
0
1
1
0
0
3
0
0
0
0
0
1
0
0
4
0
1
1
0
1
0
1
1
5
1
1
0
1
0
1
1
0
6
0
0
1
0
1
0
1
1
7
0
0
0
0
0
1
1
1
8
0
1
1
0
1
1
0
1
2.2.2栈
可利用一个特殊的栈来保留当前利用的各个页面的页面号。
每当进程访问某页面时,便将页面的页面号从栈中移出,将它压入栈顶。
因此,栈顶始终是最新被访问页面的编号民,而栈底那么是最近最久未利用的页面的页面号。
第3章程序设计结构图
3.1虚拟存储治理器系统设计总框图
系统功能描述:
通过设计操作系统中虚拟存储治理系统解决存储容量和存取速度矛盾,是治理存储设备的有效方式。
利用FIFO,LRU,OPT,三种置换算法置换页面进行比较,选择适合虚拟存储治理系统理想的调度算法。
3.2各模块功能N-S图
寻觅时刻最长的页面功能模块:
算法思想:
通过寻觅时刻最长的页面,为进行FIFO,LRU,ORT三种调度算法运算提供前提条件。
要紧参数功能:
Pro*page用来指向调入内存最长时刻的页面
Max()函数N-S图
内存页面输入功能模块:
算法思想:
通过输入内存页面,选择调度功能,并输入正确页面流文件名,显示读入的页面流,如文件不符,那么显示“错误,文件打不开,请检查文件名”。
指针页面移动功能模块:
算法思想:
通过指针移动进行页面置换的工作。
FIFO功能模块:
算法思想:
该算法老是淘汰最先进入内存的页面,即选择在内存中驻留时刻最久的页面予以淘汰。
该算法实现简单只需把一个进程已调入内存的页面,按前后顺序链接成一个队列,并设置一个指针,称为替换指针,使它老是指向最老的页面。
LRU功能模块:
算法思想:
最近最久未利用(LRU)置换算法,是依照页面调入内存后的利用情形进行决策的。
由于无法预测各页面以后的利用情形,只能利用“最近的过去”作为“最近的以后”的近似,因此,LRU置换算法是选择最近最久未利用的页面予以淘汰。
该算法给予每一个页面一个访问字段,用来记录一个页面自上次被访问以来所经历的时刻t,,当须淘汰一个页面时,选择现有页面中其t值最大的,即最近最久未利用的页面予以淘汰。
OPT算法思想:
选择的被淘汰页面,将是以后永不利用的或许是在最长(以后)时刻内再也不被访问的页面。
采纳最正确置换算法,通常可保证取得最低的缺页率。
但由于人目前还无法预知一个进程在内存的假设干个页面中,哪个页面是以后最长时刻内再也不被访问的,因此该算法是无法实现的,即能够利用此算法来评判其它算法。
第4章程序测试结果
第5章设计心得
通过近一个月的课程设计,加深了对操作系统的熟悉,了解了操作系统中各类资源分派算法的实现,专门是对虚拟存储,页面置换有了深切的了解,并能够用高级语言进行模拟演示。
这次的操作系统大作业的工作量比较大,我投入了很多的时刻和精力才完成了系统的设计。
只是这些付出都是值得的,因为我收成了更多。
第一,我必需要了解虚拟内存的特性,通过到图书馆找资料,翻阅书本和网上搜索,明白取得虚拟页式治理的大体原理是系统自动地将作业的地址空间分页,将系统的主存空间分块,页与块等大小,在作业运行前,只把初始需要的一部份页面装入内存块里,运行中需要访问自己地址空间中的当前不在内存的页面时产生缺页中断,由缺页中断效劳程序将所需的页面调入内存,假设现在内存中没有空闲物理块安置请求调入的新页面,那么系统按预定的置换策略自动选择一个或一些在内存的页面,把它们换出到外存。
还有研究了主存页面的分派策略和页面调入机会。
这对以后的算法编写有专门大的帮忙。
其后,是要熟悉各算法的思想,我从头温习了操作系统页面调度中OPT、FIFO、LRU的算法,上网查阅各算法的资料,通过一段时刻的研究,我开始编写算法的程序。
尽管了解了各算法的思想,但到编写启程序来,仍是有一点难度,又需要再温习C++的部份语法,如文件流的输入输出,因为对课堂知识只是了解,但实践中有些不经常使用的命令很容易会遗忘。
开始时仍是毫无头绪,参考到一些资料和网上有关的代码,通过跟组员研究后,试着写一段测试一段地,慢慢把程序完善。
在此进程中,两种页面置换算法FIFO和LRU明白得起来相当容易,但在实际编程实现的时候需要注意各类细节,需要耐心细致,实际编程中碰到一些细节上的小问题确实需要认真考虑才行。
另外,先进先出页面置换和LRU算法二者各有特点,可是实践起来却专门大,使自己对页面置换算法有了新的熟悉。
在我做预设计的时候因为尚未完善好程序的功能,因此这方面我的工作做得不够完美,不够具体,在详细设计和编程中,咱们都修复了这些缺点并进行了改善,像界面变得更美化些,程序上变得更简练些容易修改些。
然后是设计功能及界面,参考了许多相关的程序代码和书本的资料,和依照指导书的要求,我初步设计了个轮廓,功能方面也只能按理想化设计,因为未有实际操作到,还不能估量到一些实际性的问题。
在本次实验中,通过阅读、阅读有关的资料,学到了很多东西,同时也发觉仅仅书本的知识是远远不够的,需要把知识运用到实践中去,能力才能取得提高。
通过度工合作,发挥了同窗相互帮忙,团结合作精神,碰到可不能的问题一路讨论,查资料,问教师,在教师的指导和同窗的帮忙下,我收益良多。
参考文献
[1]运算机操作系统基础汤晓丹、梁红兵西安电子工业出版社
[2]Linux操作系统内核分析陈莉君北京人民邮电出版社
[3]网络操作系统徐甲同吉林大学出版社
[4]操作系统孟庆昌北京电子工业出版社