操作系统(五) - 虚拟内存

目录

1、 虚拟内存的起因

1.1 大纲

1.2 起因

1.3 在计算机系统中,尤其是在多道程序运行的环境中,可能会出现内存不够用的情况,怎么办?

2、 覆盖技术

2.1. 目标

2.2 原理

2.3 示例

2.3 缺点

3. 交换技术

3.1 目标

3.2 原理

3.3 交换技术存在的问题

3.4 覆盖技术和交换技术的比较

4 虚拟内存管理技术

4.1 虚拟内存-目标

4.2 虚拟内存-程序的局部性原理

4.2.3 示例

4.3 虚拟技术--基本概念

4.4 虚拟内存--基本特征

4.5 虚存技术--虚拟页式内存管理

4.6 缺页中断过程

4.7 虚拟内存的性能

 

1、 虚拟内存的起因

1.1 大纲

  1. 起因
  2. 覆盖技术(早期)/交换技术(早期)/虚存技术
  3. 虚拟内存技术:目标/程序局部性原理/基本概念/基本特征/虚拟页式内存管理

1.2 起因

经常出现内存不够了。程序规模的增长大于存储器容量的增长。

  • 理想的存储器:更大,更快,更便宜,非易失性存储。
  • 实际的存储器

操作系统(五) - 虚拟内存

1.3 在计算机系统中,尤其是在多道程序运行的环境中,可能会出现内存不够用的情况,怎么办?

  1. 如果程序太大,超过了内存的容量,可以采用 手动的覆盖(overlay) 技术,只把需要的指令和数据保存在内存中
  2. 如果是程序太多,超过了内存的容量,可以采用 自动的交换(swapping) 技术,把暂时不能执行的程序送到外存中
  3. 如果想在有限容量的内存中,以更小的页粒度为单位装入更多更大的程序,可以采用 自动的虚拟存储技术

2、 覆盖技术

2.1. 目标

在较小的可用内存中运行较大的程序。常用于多道程序系统,与分区存储管理配合使用。

2.2 原理

把程序按照其自身逻辑结构,划分为若干个功能上相对独立的程序模块,那些不会同时执行的模块共享同一块内存区域,按时间先后来运行。

  • 必要部分(常用功能)的代码和数据常驻内存
  • 可选部分(不常用功能)在其它程序模块中实现,平时存放在外存中,在需要时才装入内存。
  • 不存在调用关系的模块不必同时装入内存,从而可以相互覆盖,即这些模块共用一个分区

2.3 示例

操作系统(五) - 虚拟内存

2.3 缺点

  • 由程序员来把一个大的程序划分为若干个小的功能模块,并确定各个模块之间的覆盖关系,费时费力,增加了编程的复杂度。
  • 覆盖模块从外存装入内存,是以时间换空间。

3. 交换技术

3.1 目标

多道程序在内存中时,让正在运行的程序或需要运行的程序获得更多的内存资源。

3.2 原理

  • 可将暂时不能运行的程序送到外存,从而获得空闲内存空间。
  • 操作系统把一个进程的整个地址空间的内容保存到外存中(换出swap out),而将将外存中的某个进程的地址空间读入到内存中(换入swap in)。换入换出内容大小为整个程序的地址空间。

3.3 交换技术存在的问题

  • 交换时机的确定:只有当内存空间不够或有不够的危险时换出,因为交换需要很大的时间开销,尽量少
  • 交换区的大小:必须足够大以存放所有用户进程的所有内存映像的拷贝,必须能对这些内存映像进行直接存取
  • 程序换入时的重定位:因为换出换入后的内存位置不一定相同,所以最好采用动态地址映射的方法

3.4 覆盖技术和交换技术的比较

  • 覆盖只能发生在那些(程序内)相互之间没有调用关系的程序模块之间,因此程序员必须给出程序内的各个模块之间的逻辑覆盖结构。
  • 覆盖则发生在运行程序的内部
  • 交换技术是以在内存中的程序大小为单位来进行的,它不需要程序员给出各个模块之间的逻辑覆盖结构。
  • 交换发生在内存中 程序 与 管理程序或操作系统 之间,

4 虚拟内存管理技术

4.1 虚拟内存-目标

问题引入:在内存不够用的情形下,可以采用覆盖技术和交换技术,但是

  1. 覆盖技术:需要程序员自己把整个程序划分为若干个小的功能模块,并确定各个模块之间的覆盖关系,增加了程序员的负担;
  2. 交换技术:以进程作为交换的单位,需要把进程的整个地址空间都换进换出,增加了处理器的开销。

目标:

  • 像覆盖技术一样,不是把程序的所有内容都放在内存中,因而能够运行比当前的空闲内存空间还要大的程序。但做得更好,能由操作系统自动完成,无需程序员介入
  • 能像交换技术那样,能够实现进程在内存和外存之间的交换,因而获得更多的空闲内存空间。但能做得更好,只对进程的部分内容在内存和外存之间进行交换。

操作系统(五) - 虚拟内存

4.2 虚拟内存-程序的局部性原理

  • 指程序在执行过程中的一个较短时间,所执行的指令地址和指令的操作数地址分别局限于一定区域,表现为:
  • 时间局部性:一条指令的一次执行和下次执行,一个数据的一次访问和下次访问都集中在一个较短的时间里
  • 空间局部性:当前指令和领近的几条指令,当前访问的数据和领近的几个数据都集中在一个较小区域内
  • 程序的局部性原理表明,从理论上来说,虚拟存储技术是能够实现的,而且在实现了以后应该能够取得一个满意的效果的。

4.2.3 示例

操作系统(五) - 虚拟内存

4.3 虚拟技术--基本概念

操作系统(五) - 虚拟内存

4.4 虚拟内存--基本特征

  1. 大的用户空间:通过把物理内存与外存相结合,提供给用户的虚拟内存空间通常大于实际的物理内存,即实现了这两者的分离。如32位的虚拟地址理论上可以访问4GB,而可能计算机上仅有256M的物理内存,但硬盘容量大于4GB。
  2. 部分交换:与交换技术相比较,虚拟存储的调入和调出是对部分虚拟地址空间进行的;
  3. 不连续性:物理内存分配的不连续,虛拟地址空间使用的不连续。

4.5 虚存技术--虚拟页式内存管理

操作系统(五) - 虚拟内存

操作系统(五) - 虚拟内存

操作系统(五) - 虚拟内存

操作系统(五) - 虚拟内存

4.6 缺页中断过程

操作系统(五) - 虚拟内存

操作系统(五) - 虚拟内存

4.7 虚拟内存的性能

操作系统(五) - 虚拟内存

p很小,因此使得性能可以得到保障。