5.1 虚拟存储器概述
L28
学习目标
常规存储管理的一次性和驻留性限制内存利用率,局部性原理奠定虚拟存储器基础。
- 常规存储管理方式的特征:一次性(作业全部装入内存)和驻留性(作业一直驻留内存),限制了内存利用率。
- 局部性原理:程序执行呈现时间局部性(最近访问的指令/数据不久还会访问)和空间局部性(访问某地址后附近地址也会被访问)。
- 虚拟存储器的定义:通过请求调入和置换功能,从逻辑上扩充内存容量,使用户感觉到的内存远大于实际物理内存。
- 虚拟存储器的特征:多次性(作业分多次调入)、对换性(内存与外存之间换入换出)、虚拟性(逻辑上扩充内存)。
原理 · 深入理解
5.1 虚拟存储器概述
本节概览:先建立「虚拟存储器概述」的框架,再依次展开下列小节。
- 常规存储管理方式的特征和局部性原理
- 虚拟存储器的定义和特征
- 虚拟存储器的实现方法
5.1.1 常规存储管理方式的特征和局部性原理
1968年Denning指出:程序执行呈现局部性规律,短时间内的执行局限于某部分,所访问的存储空间也局限于某区域。
局部性表现在两方面。
- 时间局限性:刚被访问的指令/数据不久后很可能再被访问
- 空间局限性:一旦某存储单元被访问,其附近单元也可能被访问
局部性原理是虚拟存储器实现的基础。
前章各种存储器管理方式统称传统存储器管理方式,具有两个共同特征。
- 一次性:作业运行前须一次性全部装入内存
- 驻留性:作业装入后一直驻留内存直至运行结束
虚拟存储器的基本工作情况:基于局部性原理,程序运行前不必全部装入内存,只装入当前要运行的少数页面或段即可运行,其余暂留盘上。
运行时若访问的页(段)已在内存则继续执行;若未调入内存(缺页/缺段),发出缺页(段)中断,OS 利用请求调页(段)功能将其调入内存以继续执行。
5.1.2 虚拟存储器的定义和特征
用户感觉内存容量比实际大得多,但大容量只是错觉,故称虚拟存储器。
虚拟存储器是具有请求调入和置换功能、能从逻辑上扩充内存容量的存储器系统。逻辑容量=内存容量+外存容量,速度接近内存,每位成本接近外存。
与传统存储器管理方式相比,虚拟存储器有三个重要特征。
- 虚拟性:从逻辑上扩充内存,用户所见容量远大于实际
- 多次性:程序和数据无需一次性全部装入,可分多次调入
- 对换性:程序和数据无须常驻内存,运行中可换进换出
5.1.3 虚拟存储器的实现方法
硬件支持
请求分页页表机制(在纯分页页表上增加若干项)、缺页中断机构(访问页未调入时产生缺页中断请求OS调入)、地址变换机构(在纯分页地址变换机构上发展形成)。
实现请求分页的软件
含请求调页软件和页面置换软件:在硬件支持下将运行所需未在内存页面调入,将内存中暂不用页面置换到磁盘。
硬件支持
请求分段段表机制(在纯分段段表上增加若干项)、缺段中断机构(访问段未调入时产生缺段中断请求OS调入)、地址变换机构(在纯分段地址变换机构上发展形成)。
软件支持
含请求调段软件和段置换软件:先将内存中暂不用段置换到磁盘,再将运行所需未在内存段调入。
做 · 交互动画
- 根据「学习目标」列出 3 个关键词,对照原理段落解释给自己听。
- 用交互动画走完访问串,对照 FIFO、LRU、OPT 的缺页次数。
虚拟存储器概述
page-replace
用控件单步操作;日志区记下每一步发生了什么。
总结与提升
- 能用工作集解释为何不能无限多任务。
- 能用自己的话复述学习目标,并指出概念与板上实验的对应。
- 能指出 FIFO 的一个缺陷。
- 能按顺序列出缺页处理步骤。
- 能说出虚存依赖的硬件支持。
延伸思考
- MCU 上「抖动」更可能表现在什么资源(栈/堆)?
- 如果把本节机制拿到 Linux 或完整 OpenHarmony 上,会多出哪些硬件假设?
- 固件「覆盖层 overlay」与置换算法像不像?
- 缺页频率过高会导致什么(预告抖动)?