5.1 虚拟存储器概述

L28

学习目标

常规存储管理的一次性和驻留性限制内存利用率,局部性原理奠定虚拟存储器基础。

  • 常规存储管理方式的特征:一次性(作业全部装入内存)和驻留性(作业一直驻留内存),限制了内存利用率。
  • 局部性原理:程序执行呈现时间局部性(最近访问的指令/数据不久还会访问)和空间局部性(访问某地址后附近地址也会被访问)。
  • 虚拟存储器的定义:通过请求调入和置换功能,从逻辑上扩充内存容量,使用户感觉到的内存远大于实际物理内存。
  • 虚拟存储器的特征:多次性(作业分多次调入)、对换性(内存与外存之间换入换出)、虚拟性(逻辑上扩充内存)。

原理 · 深入理解

5.1 虚拟存储器概述

本节概览:先建立「虚拟存储器概述」的框架,再依次展开下列小节。

  1. 常规存储管理方式的特征和局部性原理
  2. 虚拟存储器的定义和特征
  3. 虚拟存储器的实现方法

5.1.1 常规存储管理方式的特征和局部性原理

1968年Denning指出:程序执行呈现局部性规律,短时间内的执行局限于某部分,所访问的存储空间也局限于某区域。

局部性表现在两方面。

  1. 时间局限性:刚被访问的指令/数据不久后很可能再被访问
  2. 空间局限性:一旦某存储单元被访问,其附近单元也可能被访问

局部性原理是虚拟存储器实现的基础。

前章各种存储器管理方式统称传统存储器管理方式,具有两个共同特征。

  1. 一次性:作业运行前须一次性全部装入内存
  2. 驻留性:作业装入后一直驻留内存直至运行结束

虚拟存储器的基本工作情况:基于局部性原理,程序运行前不必全部装入内存,只装入当前要运行的少数页面或段即可运行,其余暂留盘上。

运行时若访问的页(段)已在内存则继续执行;若未调入内存(缺页/缺段),发出缺页(段)中断,OS 利用请求调页(段)功能将其调入内存以继续执行。

5.1.2 虚拟存储器的定义和特征

用户感觉内存容量比实际大得多,但大容量只是错觉,故称虚拟存储器。

虚拟存储器是具有请求调入和置换功能、能从逻辑上扩充内存容量的存储器系统。逻辑容量=内存容量+外存容量,速度接近内存,每位成本接近外存。

与传统存储器管理方式相比,虚拟存储器有三个重要特征。

  1. 虚拟性:从逻辑上扩充内存,用户所见容量远大于实际
  2. 多次性:程序和数据无需一次性全部装入,可分多次调入
  3. 对换性:程序和数据无须常驻内存,运行中可换进换出

5.1.3 虚拟存储器的实现方法

硬件支持

请求分页页表机制(在纯分页页表上增加若干项)、缺页中断机构(访问页未调入时产生缺页中断请求OS调入)、地址变换机构(在纯分页地址变换机构上发展形成)。

实现请求分页的软件

含请求调页软件和页面置换软件:在硬件支持下将运行所需未在内存页面调入,将内存中暂不用页面置换到磁盘。

硬件支持

请求分段段表机制(在纯分段段表上增加若干项)、缺段中断机构(访问段未调入时产生缺段中断请求OS调入)、地址变换机构(在纯分段地址变换机构上发展形成)。

软件支持

含请求调段软件和段置换软件:先将内存中暂不用段置换到磁盘,再将运行所需未在内存段调入。

做 · 交互动画

  • 根据「学习目标」列出 3 个关键词,对照原理段落解释给自己听。
  • 用交互动画走完访问串,对照 FIFO、LRU、OPT 的缺页次数。

虚拟存储器概述

page-replace

用控件单步操作;日志区记下每一步发生了什么。

总结与提升

  • 能用工作集解释为何不能无限多任务。
  • 能用自己的话复述学习目标,并指出概念与板上实验的对应。
  • 能指出 FIFO 的一个缺陷。
  • 能按顺序列出缺页处理步骤。
  • 能说出虚存依赖的硬件支持。

延伸思考

  • MCU 上「抖动」更可能表现在什么资源(栈/堆)?
  • 如果把本节机制拿到 Linux 或完整 OpenHarmony 上,会多出哪些硬件假设?
  • 固件「覆盖层 overlay」与置换算法像不像?
  • 缺页频率过高会导致什么(预告抖动)?

← 本阶段封面 · 课程列表