操作系统理论 第五章(虚拟存储器)—第一节(虚拟存储器概述)

写在前面:

  1. 本系列笔记主要以《计算机操作系统(汤小丹…)》为参考,大部分内容出于此书,笔者的工作主要是挑其重点展示,另外配合下方视频链接的教程展开思路,在笔记中一些比较难懂的地方加以自己的一点点理解(重点基本都会有标注,没有任何标注的难懂文字应该是笔者因为强迫症而加进来的,可选择性地忽略)。
  2. 视频链接:操作系统(汤小丹等第四版)_哔哩哔哩_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、请求分段系统

        基本的分段存储管理方式是在段式存储管理原理的基础上,将整个作业的全部段装入内存,不具备分段置换功能,不具有支持实现虚拟存储器的功能,要求把每个作业全部装入内存后才能运行。

        请求分段系统是在分段系统的基础上增加了请求调段及分段置换功能后所形成的段式虚拟存储系统,它允许用户程序只要装入少数段(而非所有的段)的程序和数据即可启动运行,以后通过调段功能和段的置换功能将暂不运行的段调出,再调入即将运行的段。置换是以段为单位进行的。

        为了实现请求分段,系统同样需要必要的硬件和软件支持。

        ①硬件支持:请求分段的段表机制、缺段中断机构、地址变换机构。

        ②软件支持:实现请求调段的软件、实现段的置换的软件。

### 操作系统中的存储器管理 #### 一、存储器管理概述 操作系统作为计算机系统的资源管理者,在多个方面发挥着重要作用,其中包括处理机管理、存储器管理、文件管理、设备管理和用户接口。其中,存储器管理即内存管理,主要关注如何有效地利用有限的物理内存来支持多道程序并发执行以及提供虚拟地址空间给应用程序使用[^1]。 #### 二、存储分配策略 为了实现高效的内存分配,现代操作系统通常采用离散分配的方式,具体可以分为分页存储管理方式、分段存储管理方式和段页式存储管理方式这三种形式。特别是段页式存储管理模式因其灵活性高而被广泛应用在当今的操作系统设计当中[^2]。 ##### 分页存储管理基本方法 分页机制通过将逻辑地址划分为若干固定大小页面(Page),并将这些页面映射到物理帧(Frame)上完成地址转换过程。此过程中涉及到的关键概念有: - 页面(Page): 用户视角下的最小可寻址单位; - 物理帧(Frame): 实际硬件层面能够容纳一页数据的空间单元; - 页表(Page Table): 记录各页面对应于哪个物理帧的信息表格; 当访问某个特定位置的数据时,CPU会先计算出该位置所属页面编号及其偏移量,之后借助MMU(Memory Management Unit, 内存管理单元)查询对应的页表项得到实际所在的物理地址并最终读取所需内容。 ```c++ // 示例代码展示简单的页表结构定义 struct PageTableEntry { bool valid; // 是否有效位标记 unsigned int frameNumber; // 对应的物理帧号 }; ``` #### 三、内存保护与共享 除了合理规划可用内存区域之外,还需要考虑安全性问题——防止不同进程间相互干扰破坏彼此的工作环境。为此引入了权限控制机制允许某些特殊类型的指令仅能在内核态下被执行,并且规定了每一段代码或数据所具有的访问属性(如只读/可写),从而确保整个系统的稳定性和可靠性[^3]。 另外,在多任务环境中经常存在多个进程需要共同使用的库函数或其他公共资源的情况,此时可以通过建立共享区段的方式来减少重复加载带来的开销,进而提升整体性能表现。 #### 四、对换技术的应用 考虑到有时会出现因内存不足而导致新到来的任务无法立即获得足够的工作空间的情形,因此提出了所谓的“对换”(Swapping)方案作为一种临时解决方案。简单来说就是在必要时刻把当前不活跃的部分暂时移到磁盘上的交换区内保存起来,等到将来有机会重新激活后再搬回RAM中继续运行。这种方法虽然牺牲了一定程度的速度优势但却极大地提高了现有资源利用率[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Zevalin爱灰灰

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值