操作系统 第五章 虚拟存储管理--笔记

虚拟存储器的基本概念

常规存储器管理方式的特征
一次性:作业在运行前一次性的全部装入内存
驻留性:作业装入内存后,便会一直驻留在内存中,直至作业结束

一次性及驻留性在程序运行时是否是必须的? 答:不是,因为程序运行有局部性

局部性原理
在一段较短的时间内,程序的执行仅局限于某个部分,相应的,所访问的存储空间也局限于某个区域。

时间局部性:被引用过一次的存储器位置很可能在不远的将来在被多次引用
空间局部性:如果一个存储器位置被引用了一次,那么程序很可能在不远的将来引用附近的一个存储器位置。

有良好的局部性的程序运行速度更快

交换技术于虚存使用的调入调出技术有何异同?
答:主要相同点是都要在内存与外存间交换信息;
主要区别在于交换技术换出换进一般是整个进程,因此一个进程的大小受物理存储器的限制;
而虚存中使用的调入调出技术在内存与外存之间来回传递的是存储页或存储段,而不是整个进程,从而使得进程映射具有了很大的灵活性,且允许进程的大小比可用的物理存储空间大得多

为了用小的内存实现在大的虚空间中程序的运行

虚拟存储器(逻辑上扩充内存)
是指具有请求调入功能和置换功能,能从逻辑上对内存容量加以扩充的一种存储器系统。

内存容量由内存容量和外存容量之和决定,运行速度接近于内存速度,每位的成本接近于外存

虚拟存储器的实现:
允许将一个作业分多次调入内存
虚拟的实现建立在离散分配存储管理的基础上(采用连续分配方式,会造成内存资源的浪费,并不能从逻辑上扩大内存容量)

虚拟存储器的特征(进程整体对换不算虚拟)
多次性·对换性·虚拟性

请求分页存储管理方式
换入和换出基本单位都是长度固定的页面

操作系统 第五章 虚拟存储管理--笔记

【例子】
操作系统 第五章 虚拟存储管理--笔记
2是由系统根据后面的外存地址调入,系统先看物理块号没有则从后面的地址去找。调入内存

缺页中断机构
每当要访问的页面不在内存时,便产生一缺页中断通知OS,OS则将所缺之页调入内存。
中断经过的步骤:
保护CPU环境–分析中段原因–转入缺页中断处理程序–恢复CPU环境

操作系统 第五章 虚拟存储管理--笔记

操作系统 第五章 虚拟存储管理--笔记

内存分配
最小物理块数的确定–物理块的分配策略–物理块的分配算法

在请求分页系统中的外存分为:
对换区:连续存放数据,读写速度较快
文件区:离散分配方式,读写想、速度相对较慢。

发生缺页时,系统应从何处将缺页调入内存,分成三种情况:
操作系统 第五章 虚拟存储管理--笔记

系统拥有足够的对换区空间:可以全部从对换区调入所需页面,以提高调页速度。
系统缺少足够的对换区空间:凡不会被修改的文件,直接从文件区调入;换出时不用换,再调入时仍从文件区调入。可能被修改的部分,换出时需调到对换区,换入时从对换区调入。
系统缺少足够的对换区空间,这时凡是不会被修改的文件,都直接从文件区调入;而当换出这些页面时,由于它们未被修改而不必再将它们换出,以后再调入时,仍从文件区直接调入。但对于那些可能被修改的部分,在将它们换出时,便须调到对换区,以后需要时,再从对换区调入。
UNIX方式。由于与进程有关的文件都放在文件区,故凡是未运行过的页面,都应从文件区调入。而对于曾经运行过但又被换出的页面,由于是被放在对换区,因此在下次调入时,应从对换区调入。由于UNIX系统允许页面共享,因此, 某进程所请求的页面有可能已被其它进程调入内存,此时也就无须再从对换区调入。

页面置换算法

缺页率:页面调入次数(缺页次数)/总的页面使用次数

1.最佳置换算法(仅限于理论上,作为参照标准)
2.先进先出置换算法(FIFO)
先进入的先淘汰
操作系统 第五章 虚拟存储管理--笔记

Belady现象:出现分配的页面数增多,缺页率反而提高的异常现象。
Belady现象的原因:FIFO算法的置换特征与进程访问内存的动态特征矛盾,即被置换的页面并不是进程不会访问的。(个人理解:当分配的页面增多时,保留的大多是没用的,下一次用到的都被淘汰了,又需要重新调入)
【例子】
操作系统 第五章 虚拟存储管理--笔记

3.最近最久未使用(LRU)置换算法
操作系统 第五章 虚拟存储管理--笔记

具体实现方法:
操作系统 第五章 虚拟存储管理--笔记
操作系统 第五章 虚拟存储管理--笔记

个人理解:也就是说数越小越旧,越大越新

操作系统 第五章 虚拟存储管理--笔记
【练习】
操作系统 第五章 虚拟存储管理--笔记

4.轮转算法(clock)
又称最近未使用算法
每个页设一个使用标志位(use bit),若该页被访问则将其置为1。
设置一个指针,从当前指针位置开始按地址先后检查各页,寻找use bit=0的页面作为被置换页。
若指针经过的页use bit=1,修改use bit=0(暂不凋出,给被用过的页面驻留的机会 ),指针继续向下。到所有页面末尾后再返回队首检查。

【实例】
操作系统 第五章 虚拟存储管理--笔记

改进clock
改进:考虑到对没访问过的页面再细分是否修改过的不同情况,减少因修改造成的频繁I/O操作
操作系统 第五章 虚拟存储管理--笔记

操作系统 第五章 虚拟存储管理--笔记