主存空间技术
2025/12/18大约 9 分钟
主存空间技术
1. 主存空间技术的定义与用途
1.1 基本概念
主存空间技术(Main Memory Space Technology)是操作系统中用于管理和分配计算机主存(内存)资源的一系列技术和算法。这些技术决定了如何将有限的主存空间分配给多个并发运行的程序,以及如何回收和复用已释放的内存资源。
1.2 核心用途
主存空间技术的主要目的是解决以下关键问题:
- 资源高效利用:最大限度地提高主存空间的利用率,减少空闲内存浪费
- 多程序并发:支持多个程序同时在内存中运行,提高系统吞吐量
- 地址管理:处理程序的逻辑地址到物理地址的转换,确保程序正确访问内存
- 内存保护:防止程序之间相互干扰,保护系统和其他程序的内存空间
- 动态扩展:支持程序在运行过程中动态申请或释放内存
2. 常用主存空间技术
术语解释
- 主存(Memory):计算机系统中用于存储正在运行程序数据和指令的主要设备
- 分区(Partition):将主存划分为多个连续的区域,每个区域分配给一个程序使用
- 内部碎片:已分配给程序的内存块中未被使用的部分,例如分页管理中页面内未使用的空间
- 外部碎片:内存中未被分配的空闲空间,但由于这些空间是分散的小碎片,无法满足程序的连续内存请求
2.1 分区存储管理
分区存储管理是最早的主存管理技术,将内存划分为若干个连续的区域(分区),每个分区分配给一个程序使用。
2.1.1 固定分区管理
- 原理:将内存划分为大小固定的分区,每个分区只能运行一个程序
- 特点:
- 实现简单,开销小
- 分区大小固定,容易导致内存碎片
- 程序大小必须小于等于分区大小
- 适用场景:早期单道或简单多道程序系统
2.1.2 可变分区管理
- 原理:根据程序的实际需要动态划分内存分区,分区大小不固定
- 特点:
- 内存利用率较高,减少了内部碎片
- 可能产生外部碎片
- 需要维护空闲分区表
- 关键算法:
- 首次适应算法(First Fit):从空闲区表开始查找,找到第一个能满足需求的空闲区
- 最佳适应算法(Best Fit):找到最小的能满足需求的空闲区
- 最坏适应算法(Worst Fit):找到最大的空闲区
- 下次适应算法(Next Fit):从上次查找结束的位置开始查找
2.1.3 可重定位分区管理
- 原理:通过移动内存中的程序,将分散的空闲区合并为连续的大空闲区
- 特点:
- 解决了外部碎片问题
- 需要动态重定位支持
- 移动程序开销较大
2.2 分页存储管理
分页存储管理将内存和程序都划分为固定大小的块,通过页表实现地址转换。
2.2.1 基本原理
- 页面(Page):程序的逻辑地址空间划分为大小相等的块
- 页框(Frame):物理内存划分为与页面大小相等的块
- 页表(Page Table):记录页面到页框的映射关系
2.2.2 地址转换过程
- 程序生成逻辑地址(包括页号和页内偏移)
- 通过页号查页表,得到对应的页框号
- 物理地址 = 页框号 × 页面大小 + 页内偏移
2.2.3 特点
- 解决了外部碎片问题:原理是分页管理将内存划分为大小固定的页框,程序的内存分配以页为单位,无论程序大小如何,剩余空间只会出现在页内(内部碎片),不会产生分散的外部空闲碎片
- 可能产生少量内部碎片(页内):原理是当程序所需内存不是页大小的整数倍时,最后一个页面会有部分空间未被使用,例如页大小为4KB,程序需要5KB内存,则会分配2个页面(8KB),其中3KB未被使用
- 支持程序的非连续存储:原理是程序的不同页面可以被分配到内存中任意空闲的页框,无需连续,通过页表记录映射关系即可正确访问
- 页表管理开销较大:原理是每个程序都需要一个页表来记录页面到页框的映射,对于大程序,页表可能包含大量表项,占用较多内存,且每次地址转换都需要访问页表,增加访问延迟
2.2.4 改进技术
- 多级页表:原理是将页表分级,只加载当前需要的页表部分到内存,避免将整个大页表一次性加载到内存,从而减少页表占用的内存空间。例如二级页表,第一级页表指向第二级页表的页框,第二级页表才包含实际的页面映射
- 快表(TLB):原理是利用程序访问的局部性原理,将最近常用的页表项缓存在CPU内部的高速缓存中,当需要进行地址转换时,先在TLB中查找,如果命中则直接获得页框号,无需访问内存中的页表,从而加速地址转换
- 反置页表:原理是不再为每个程序维护一个页表,而是为整个系统维护一个页表,记录每个页框被哪个程序的哪个页面使用,通过哈希表快速查找,适用于大内存系统,减少页表数量和内存占用
2.3 分段存储管理
分段存储管理根据程序的逻辑结构将程序划分为不同的段,每段可以独立分配内存。
2.3.1 基本原理
- 段(Segment):程序按逻辑结构划分为段(如代码段、数据段、堆栈段)
- 段表(Segment Table):记录每段的起始地址、长度和访问权限
- 逻辑地址:包括段号和段内偏移
2.3.2 地址转换过程
- 程序生成逻辑地址(段号和段内偏移)
- 检查段内偏移是否超过段长(段越界检查)
- 通过段号查段表,得到段的起始物理地址
- 物理地址 = 段起始地址 + 段内偏移
2.3.3 特点
- 符合程序的逻辑结构,便于模块化设计
- 支持段的共享和保护
- 可能产生外部碎片
- 段长可变,管理较复杂
2.4 段页式存储管理
段页式存储管理结合了分段和分页的优点,先分段,再分页。
2.4.1 基本原理
- 程序先按逻辑结构分段
- 每段再划分为固定大小的页面
- 段表记录每段的页表起始地址
- 页表记录页面到页框的映射
2.4.2 地址转换过程
- 程序生成逻辑地址(段号、页号、页内偏移)
- 通过段号查段表,得到该段的页表起始地址
- 通过页号查页表,得到对应的页框号
- 物理地址 = 页框号 × 页面大小 + 页内偏移
2.4.3 特点
- 结合了分段和分页的优点
- 支持程序的模块化设计和共享
- 解决了外部碎片问题
- 地址转换过程复杂,需要访问多级表
- 管理开销较大
2.5 虚拟存储技术
虚拟存储技术允许程序使用比实际物理内存更大的地址空间,通过内存和外存的交换实现。
2.5.1 基本原理
- 局部性原理:程序执行时只需要访问部分内存空间
- 虚拟地址空间:程序可以使用远大于物理内存的逻辑地址空间
- 页面置换:当内存不足时,将不常用的页面换出到外存,将需要的页面换入内存
2.5.2 常用页面置换算法
- 最佳置换算法(OPT):选择最长时间内不会被访问的页面置换(理论最优,无法实现)
- 先进先出算法(FIFO):选择最早进入内存的页面置换(简单,但可能导致Belady异常)
- 最近最久未使用算法(LRU):选择最近最久未使用的页面置换(性能较好,但实现复杂)
- 时钟置换算法(Clock):LRU的近似算法,使用引用位和修改位,实现简单
- 最不常用算法(LFU):选择访问次数最少的页面置换
2.5.3 特点
- 扩大了程序的可用地址空间
- 提高了内存利用率
- 支持更多程序并发运行
- 需要磁盘空间作为后备存储
- 页面置换会带来性能开销
3. 各种主存空间技术的比较
| 技术类型 | 优点 | 缺点 | 适用场景 |
|---|---|---|---|
| 固定分区 | 实现简单,开销小 | 内存利用率低,有内部碎片 | 早期简单系统 |
| 可变分区 | 内存利用率较高,无内部碎片 | 有外部碎片,分配算法复杂 | 中小型系统 |
| 分页管理 | 无外部碎片,支持非连续存储 | 有少量内部碎片,页表开销大 | 大多数现代操作系统 |
| 分段管理 | 符合程序逻辑,支持共享和保护 | 有外部碎片,段长管理复杂 | 需要模块化和共享的系统 |
| 段页式管理 | 结合分段和分页优点,无外部碎片 | 地址转换复杂,管理开销大 | 现代大型系统 |
| 虚拟存储 | 扩大地址空间,提高内存利用率 | 页面置换开销,需要外存支持 | 所有现代操作系统 |
4. 总结
主存空间技术是操作系统的核心组成部分,直接影响系统的性能和资源利用率。从早期的固定分区到现代的虚拟存储技术,主存空间技术不断发展,适应了计算机硬件和应用程序的需求变化。
不同的主存空间技术各有优缺点,操作系统需要根据具体的硬件环境和应用需求选择合适的内存管理方案。现代操作系统通常结合多种技术,如分页管理+虚拟存储,以实现高效、灵活的内存管理。