操作系统原理——第五章:虚拟内存

文章目录

  • 1. 起因
  • 2. 覆盖技术
  • 3. 交换技术
  • 4. 虚存技术
    • 4.1 目标
    • 4.2 程序局部性原理
    • 4.3 基本概念
    • 4.4 基本特征
    • 4.5 虚拟页式内存管理

1. 起因

  • 增长迅速的存储需求:如游戏
  • 理想中的存储器:容量更大、速度更快、价格更便宜的非易失性存储器
  • 存储器层次结构

操作系统原理——第五章:虚拟内存_第1张图片

  • 把常用的数据和代码放在内存,其他放在硬盘
    操作系统原理——第五章:虚拟内存_第2张图片
  • 在计算机系统中,尤其是在多道程序运行的环境中,可能会出现内存不够用的情况,怎么办?
    ① 如果程序太大,超过了内存的容量,可以采用 手动的覆盖(overlay) 技术,只把需要的指令和数据保存在内存中
    ② 如果是程序太多,超过了内存的容量,可以采用 自动的交换(swapping) 技术,把暂时不能执行的程序送到外存中
    ③ 如果想在有限容量的内存中,以更小的页粒度为单位装入更多更大的程序,可以采用自动的虚拟存储技术

2. 覆盖技术

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

  2. 原理
    把程序按照其自身逻辑结构,划分为若干个功能上相对独立的程序模块,那些不会同时执行的模块共享同一块内存区域,按时间先后来运行。
    -> 必要部分(常用功能)的代码和数据常驻内存
    -> 可选部分(不常用功能)在其它程序模块中实现,平时存放在外存中,在需要时才装入内存。
    -> 不存在调用关系的模块不必同时装入内存,从而可以相互覆盖,即这些模块共用一个分区。
    操作系统原理——第五章:虚拟内存_第3张图片

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

3. 交换技术

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

  2. 方法
    -> 可将暂时不能运行的程序送到外存,从而获得空闲内存空间。
    -> 操作系统把一个进程的整个地址空间的内容保存到外存中(换出swap out),而将将外存中的某个进程的地址空间读入到内存中(换入swap in)。换入换出内容大小为整个程序的地址空间。
    操作系统原理——第五章:虚拟内存_第4张图片

  3. 交换技术实现中的几个问题
    ① 交换时机的确定:只有当内存空间不够或有不够的危险时换出
    ② 交换区的大小:必须足够大以存放所有用户进程的所有内存映像的拷贝,必须能对这些内存映像进行直接存取
    ③ 程序换入时的重定位:因为换出换入后的内存位置不一定相同,所以最好采用动态地址映射的方法

  4. 覆盖与交换的比较
    覆盖:
    ① 只能发生在没有调用关系的模块间
    ② 程序员须给出模块间的逻辑覆盖结构
    ③ 发生在运行程序的内部模块间
    交换:
    ① 以进程为单位
    ② 不需要模块间的逻辑覆盖结构
    ③ 发生在内存进程间

4. 虚存技术

4.1 目标

解决覆盖技术给程序员负担大和交换技术处理器开销大的问题。

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

4.2 程序局部性原理

指程序在执行过程中的一个较短时间,所执行的指令地址和指令的操作数地址分别局限于一定区域,表现为:

  1. 时间局部性:一条指令的一次执行和下次执行,一个数据的一次访问和下次访问都集中在一个较短的时间里
  2. 空间局部性:当前指令和领近的几条指令,当前访问的数据和领近的几个数据都集中在一个较小区域内

程序的局部性原理表明,从理论上来说,虚拟存储技术是能够实现的,而且在实现了以后应该能够取得一个满意的效果的。

例子:页面大小为4K,分配给每个进程的物理页面数为1。在一个进程中,定义了如下的二维数组int A[1024][1024],该数组按行存放在内存,每一行放在一个页面中。

解法1共发生了1024×1024次缺页中断,解法2共发生了1024次缺页中断。
操作系统原理——第五章:虚拟内存_第6张图片

4.3 基本概念

  1. 思路:将不常用的部分内存块暂存到外存
  2. 原理:
    ① 装载程序时:只将当前指令执行需要的部分页面或段装入内存
    ② 指令执行中需要的指令或数据不在内存(称为缺页或缺段)时:处理器通知操作系统将相应的页面或段调入内存
    ③ 操作系统将内存中暂时不用的页面或段保存到外存
  3. 实现方式:虚拟页式存储、虚拟段式存储

4.4 基本特征

  1. 大用户空间
    ① 物理内存分配非连续
    ② 虚拟地址空间使用非连续
  2. 部分交换
    提供给用户的虚拟内存可大于实际的物理内存
  3. 不连续性
    虚拟存储只对部分虚拟地址空间进行调入和调出

4.5 虚拟页式内存管理

操作系统原理——第五章:虚拟内存_第7张图片

  1. 大部分虚拟储存系统都采用虚拟页式管理技术,在页式储存管理的基础上,增加请求调页页面置换
  2. 基本思路
    ① 一个程序要运行时,只装入部分页面
    ② 运行中发现需要运行的程序或数据不存在,向系统发出缺页中断请求,系统处理中断时,将外存中相应页面调入
    操作系统原理——第五章:虚拟内存_第8张图片
  3. 页表表项
    ① 驻留位:1在内存,0在外存
    ② 保护位:允许的操作,如只读,可读写,可执行
    ③ 修改位:被修改过1,没被修改过0,换入换出时保持硬盘中数据一致,提高效率
    ④ 访问位:最近是否被访问过,是1否0

操作系统原理——第五章:虚拟内存_第9张图片
4. 缺页中断处理过程
操作系统原理——第五章:虚拟内存_第10张图片
5. 后备存储

① 在何处保存未被映射的页?
应能方便地找到在外存中的页面内容
交换空间(磁盘或者文件):采用特殊格式存储未被映射的页面
② 虚拟页式存储中的外存选择
代码段:可执行二进制文件
动态加载的共享库程序段:动态调用的库文件
其它段:交换空间

  1. 虚拟内存性能
    有效存储访问时间(effective memory access time EAT)
    EAT = 访存时间 * (1-p) + 缺页异常处理时间 * 缺页率p
    例子:访存时间: 10 ns,磁盘访问时间: 5 ms,缺页率p,页修改概率q
    EAT = 10(1–p) + 5,000,000p(1+q)

你可能感兴趣的:(操作系统,硬件架构)