4.4 对换(Swapping)
L25
学习目标
页表、地址变换;段表与段的逻辑意义。为第五章虚存打基础。
- 页是物理管理单位,段是逻辑单位。
- 无 MMU 的 MCU 用「编译期分区」近似。
- 对换区、换出进程。
- 本课不实现 swapping。
原理 · 深入理解
4.4 对换(Swapping)
本节概览:先建立「对换(Swapping)」的框架,再依次展开下列小节。
- 多道程序环境下的对换技术
- 对换空间的管理
- 进程的换出与换入
4.4.1 多道程序环境下的对换技术
多道环境下内存进程常被阻塞占大量空间,而外存作业因内存不足无法进入运行,造成资源浪费、吞吐量下降。
对换把一定数量的程序或数据换入换出内存以缓解此矛盾。
- 整体对换
- 页面(分段)对换
根据每次对换数量,对换分为两类。
对换按每次换入换出数量分为整体对换与页面(分段)对换两类。
4.4.2 对换空间的管理
磁盘空间分为文件区和对换区两部分,管理目标不同。
文件区占大部分磁盘空间,存放各类文件;对换区占小部分,存放从内存换出的进程。
对换区空闲盘块管理中的数据结构
为了实现对对换区中的空闲盘块的管理,在系统中应配置相应的数据结构,用于记录外存对换区中的空闲盘块的使用情况。其数据结构的形式与内存在动态分区分配方式中所用数据结构相似,即同样可以用空闲分区表或空闲分区链。在空闲分区表的每个表目中,应包含两项:对换区的首址及其大小,分别用盘块号和盘块数表示。
对换空间的分配与回收
- 回收分区与插入点的前一个空闲分区F1相邻接
- 回收分区与插入点的后一个空闲分区F2相邻接
- 回收分区同时与插入点的前、后两个分区邻接
- 回收分区既不与F1邻接,又不与F2邻接
由于对换分区的分配采用的是连续分配方式,因而对换空间的分配与回收与动态分区方式时的内存分配与回收方法雷同。其分配算法可以是首次适应算法、循环首次适应算法或最佳适应算法等。 对换区的回收操作可分为四种情况:
4.4.3 进程的换出与换入
对换(Swapping)在多道程序环境下把内存中暂不运行的进程换出、把外存就绪进程换入,以提高内存利用率。
- 多道程序环境下的对换技术
- 对换空间的管理
做 · 交互动画
- 根据「学习目标」列出 3 个关键词,对照原理段落解释给自己听。
对换(Swapping)
用控件单步操作;日志区记下每一步发生了什么。
总结与提升
- 能对比页式与段式的优缺点各一条。
- 能用自己的话复述学习目标,并指出概念与板上实验的对应。
- 能说明 MCU 课为何跳过对换实验。
延伸思考
- ESP32 的 MMU/Cache 与教材页表哪一层接近?
- 如果把本节机制拿到 Linux 或完整 OpenHarmony 上,会多出哪些硬件假设?
- 把进程映像存到 Flash 文件系统算对换吗?