虚拟存储器管理
一、实验目的
加深对虚拟存储器中的页面置换算法的理解,特别是要掌握先入先出页面置换算法和最近最久未使用置换算法的用法。
二、实验原理
设计一个请求页式存储管理方案,编写模拟程序实现具体过程,并计算缺页率(所有内存开始都是空的,凡第一次用到的页面都产生一次缺页中断)。
要求实现下列页面置换算法:
(1)先进先出算法(FIFO) (2)最近最久未使用算法(LRU)
基本知识:
虚拟存储器是只具有请求调入功能和置换功能,能从逻辑上对内存容量进行扩充的一种存储器系统。分页请求系统是指在分页系统的基础上,增加了请求调页功能、页面置换功能所形成的页面形式虚拟存储系统。
先进先出算法(FIFO)是指淘汰最先进入内存的页面,即选择在内存中驻留时间最久的页面予以淘汰。
最近最久未使用算法(LRU)是指淘汰最近最久未被使用的页面。
选择置换算法,先输入所有页面号,为系统分配物理块,依次按照FIFO或LRU算法进行置换。
例:假定系统为某进程分配了三个物理块, 并考虑有以下的页面号引用串:7,0,1,2,0,3,0,4,2,3,0,3,2,1,2,0,1,7,0,1进程运行时, 先将7,0,1三个页面装入内存(凡第一次用到的页面都产生一次缺页中断)。 以后,当进程要访问页面2时将会产生缺页中断。此时OS根据置换算法,将选择页面予以淘汰。
采用FIFO算法进行页面置换过程:
产生15次缺页中断,缺页率为15/20。
采用LRU算法进行页面置换过程:
产生12次缺页中断, 缺页率为12/20。
三、实验操作方法和步骤
本实验要求通过编写和调试一个程序,可以通过逻辑地址计算出物理地址。具体步骤如下:
(1)编写代码,实现先进先出算法;
(2)以数组的形式给出一个一号序列,显示出基于先进先出算法的页面置换过程;
(3)编写代码,实现最近最久未使用算法;
(4)以数组的形式给出一个一号序列,显示出基于最近最久未使用算法的页面置换过程。
四、实验结果与分析
1、对重要部分代码进行截图,并进行简要说明
1)FIFO算法是最先出现的置换算法。该算法总是淘汰最先进入内存的页面,即选择在内存中驻留时间最久的页面予以淘汰。该算法实现简单,只需把一个进程已经调入内存的页面按先后次序连接成一个队列,并设置一个指针,称为替换指针,使它总是指向最老的页面,但该算法与进程实际运行的规律不相适应,因为在该进程中,有些页面经常被访问,比如含有全局变量、常用函数、例程的页面,FIFO算法并不能保证页面不被淘汰。
2)FFO置换算法的性能之所以较差,是因为它所依据的条件是各个页面调入内存的时间,而页面调入的先后并不能反映页面的使用情况。最近最久未使用(LRU的页面置换算法是根据页面调入内存后的使用情况做出决策的。由于无法预测各页面将来的使用情况,只能利用“最近的过去”作为“最近的将来”的近似,因此,LRU置换算法是选择最近最久未使用的页面予以淘汰。该算法赋予每个页面一个访问字段,用来记录一个页面自上次被访问以来所经历的时间t。当需淘汰一个页面时,选择现有页面中其t值最大的,即最近最久未使用的页面予以淘汰。
2、对运行结果进行截图,并进行简要说明
1)如下列结果:当进程第一次访问页面2时,将把第二页患处,因为它是最先被调入内存的;在第一次访问也买呢3时,有将把第0页换出,因为它在现有的2、0、1三个页面中最老的页。利用FIFO算法时,进行了12次页面置换,比最佳置换算法正好多一倍。
2)当进程第一次对页面2进行访问时,由于页面7是最近最久未被访问的,故将它置换出去。当进程第一次对页面3进行访问时,第1页成为最近最久未使用的页,将它换出。由图可以看出,前5个时间的图像与最佳置换算法时的相同,但这并非是必然的结果。因为最佳置换算法是从“向后看”的观点出发的,即它是依据以后各页的使用情况进行判断;而LRU算法则是“向前看”的,即根据页以前的使用情况来判断,而页面过去和未来的走向之间并无必然的联系。