写在前面:
- 本系列笔记主要以《计算机操作系统(汤小丹…)》为参考,大部分内容出于此书,笔者的工作主要是挑其重点展示,另外配合下方视频链接的教程展开思路,在笔记中一些比较难懂的地方加以自己的一点点理解(重点基本都会有标注,没有任何标注的难懂文字应该是笔者因为强迫症而加进来的,可选择性地忽略)。
- 视频链接:操作系统(汤小丹等第四版)_哔哩哔哩_bilibili
一、基本存储管理方式的局限性
1、虚拟存储技术的引入
上一章中介绍的各种存储器管理方式有一个共同的特点,即它们都要求将一个作业全部装入内存后方能运行,于是出现了下面这样两种情况:
①有的作业很大,其所要求的内存空间超过了内存总容量,作业不能全部被装人内存,致使该作业无法运行。
②有大量作业要求运行,但由于内存容量不足以容纳所有这些作业,只能将少数作业装入内存让它们先运行,而将其它大量的作业留在外存上等待。
出现上述两种情况的原因都是由于内存容量不够大,一个显而易见的解决方法是从物理上增加内存容量,但这往往会受到机器自身的限制,而且无疑要增加系统成本,因此这种方法是受到一定限制的。另一种方法是从逻辑上扩充内存容量,这正是虚拟存储技术所要解决的主要问题。
2、常规存储器管理方式的特征
(1)一次性,是指作业必须一次性地全部装入内存后方能开始运行,正是这一特征导致了大作业无法在小内存中运行,以及无法进一步提高系统的多道程序度,直接限制了对处理机的利用率和系统的吞吐量的提高。事实上,许多作业在运行时,并非需要用到全部程序和数据,如果一次性地装入其全部程序和数据,显然也是对内存空间的一种浪费。
(2)驻留性,是指作业被装入内存后,整个作业都一直驻留在内存中,其中任何部分都不会被换出,直至作业运行结束。尽管运行中的进程会因I/O等原因而被阻塞,可能处于长期等待状态,或者有的程序模块在运行过一次后就不再需要(运行)了,它们都仍将驻留在内存中,继续占用宝贵的内存资源。
二、局部性原理
1、局部性原理的内容
(1)1968年,Denning.P提出:程序在执行时将呈现出局部性规律,即在一较短的时间内,程序的执行仅局限于某个部分,相应地,它所访问的存储空间也局限于某个区域。
(2)局限性又表现在下述两个方面:
①时间局限性。如果程序中的某条指令被执行,则不久以后该指令可能再次执行;如果某数据被访问过,则不久以后该数据可能再次被访问。产生时间局限性的典型原因是在程序中存在着大量的循环操作。
②空间局限性。一旦程序访问了某个存储单元,在不久之后,其附近的存储单元也将被访问,即程序在一段时间内所访问的地址可能集中在一定的范围之内,其典型情况便是程序的顺序执行。
2、虚拟存储器的基本工作情况
(1)基于局部性原理可知,应用程序在运行之前没有必要将之全部装入内存,而仅须将那些当前要运行的少数页面或段先装入内存便可运行,其余部分暂留在盘上。
(2)程序在运行时,如果它所要访问的页(段)已调入内存,便可继续执行下去;但如果程序所要访问的页(段)尚未调入内存(称为缺页或缺段),便发出缺页(段)中断请求,此时OS将利用请求调页(段)功能将它们调入内存,以使进程能继续执行下去,如果此时内存已满,无法再装入新的页(段),OS还须再利用页(段)的置换功能,将内存中暂时不用的页(段)调至盘上,腾出足够的内存空间后,再将要访问的页(段)调入内存,使程序继续执行下去。
三、虚拟存储器的定义和特征
1、虚拟存储器的定义
虚拟存储器是指具有请求调入功能和置换功能,能从逻辑上对内存容量加以扩充的一种存储器系统,其逻辑容量由内存容量和外存容量之和所决定,其运行速度接近于内存速度,而每位的成本却接近于外存。
2、虚拟存储器的特征
(1)多次性。多次性是相对于传统存储器管理方式的一次性而言的,是指一个作业中的程序和数据无需在作业运行时一次性地全部装入内存,而是允许被分成多次调入内存运行,即只需将当前要运行的那部分程序和数据装入内存即可开始运行,以后每当要运行到尚未调入的那部分程序时,再将它调入。
(2)对换性。对换性是相对于传统存储器管理方式的常驻性而言的,是指一个作业中的程序和数据无须在作业运行时一直常驻内存,而是允许在作业的运行过程中进行换进、换出,亦即在进程运行期间,允许将那些暂不使用的代码和数据从内存调至外存的对换区(换出),待以后需要时再将它们从外存调至内存(换进),甚至还允许将暂时不运行的进程调至外存,待它们重又具备运行条件时再调入内存。
(3)虚拟性。虚拟性是指能够从逻辑上扩充内存容量,使用户所看到的内存容量远大于实际内存容量,这样就可以在小的内存中运行大的作业,或者能提高多道程序度。需要说明的是,虚拟性是以多次性和对换性为基础的,而多次性和对换性显然又必须建立在离散分配的基础上。
四、虚拟存储器的实现
1、分页请求系统
基本的分页存储管理方式(或纯分页存储管理方式)不具备页面对换功能,不具有支持实现虚拟存储器的功能,要求把每个作业全部装入内存后才能运行。
分页请求系统是在基本分页系统的基础上增加了请求调页功能和页面置换功能所形成的页式虚拟存储系统,它允许用户程序只装入少数页面的程序(及数据)即可启动运行,以后再通过调页功能及页面置换功能陆续地把即将运行的页面调入内存,同时把暂不运行的页面换出到外存上。置换时以页面为单位。
为了能实现请求调页和页面置换功能,系统必须提供必要的硬件支持和实现请求分页的软件。
①硬件支持:请求分页的页表机制、缺页中断机构、地址变换机构。
②软件支持:实现请求调页的软件、实现页面置换的软件。
2、请求分段系统
基本的分段存储管理方式是在段式存储管理原理的基础上,将整个作业的全部段装入内存,不具备分段置换功能,不具有支持实现虚拟存储器的功能,要求把每个作业全部装入内存后才能运行。
请求分段系统是在分段系统的基础上增加了请求调段及分段置换功能后所形成的段式虚拟存储系统,它允许用户程序只要装入少数段(而非所有的段)的程序和数据即可启动运行,以后通过调段功能和段的置换功能将暂不运行的段调出,再调入即将运行的段。置换是以段为单位进行的。
为了实现请求分段,系统同样需要必要的硬件和软件支持。
①硬件支持:请求分段的段表机制、缺段中断机构、地址变换机构。
②软件支持:实现请求调段的软件、实现段的置换的软件。