0%

存储器管理

存储器管理:高效利用内存资源的核心机制

存储器管理是操作系统的核心功能之一,其核心目标是合理分配、管理和回收内存资源,确保多个程序能够高效、安全地共享有限的内存空间。以下从核心目标、关键技术及优化策略三个维度展开详细说明:

存储器管理的核心目标

存储器管理需同时满足三个关键需求:

  • 内存充足性:确保系统有足够的内存处理当前运行的程序及数据,避免因内存不足导致程序无法执行。
  • 内存分配合理性:为每个程序分配独立的内存区域,避免地址冲突,保证程序正常运行。
  • 内存可回收性:程序运行结束后,及时回收其占用的内存,供其他程序使用,提高内存利用率。

主流内存分配技术

为解决连续分配方式导致的 “内存碎片” 问题,操作系统发展出多种离散分配技术,核心包括分页、分段及段页式存储管理。

1. 分页存储管理

分页是将内存 “化整为零” 的离散分配方式,通过固定大小的 “页” 实现内存高效利用。

  • 核心原理
    • 将进程的逻辑地址空间划分为大小相等的页(如 4KB),每个页有唯一页号。
    • 将物理内存划分为与页大小相同的物理块(又称页帧),物理块号作为内存地址的标识。
    • 以页为单位将进程加载到离散的物理块中,通过页表记录页与物理块的映射关系。
  • 地址结构
    逻辑地址由 “页号 + 页内偏移量” 组成。例如 32 位系统中,若页大小为 4KB(2¹²),则低 12 位为页内偏移量(确定页内具体位置),高 20 位为页号(最多支持 1M 个页)。
    物理地址由 “页帧号 + 页内偏移量” 组成,通过页表查询页号对应的页帧号,即可拼接出实际物理地址。

  • 页表的作用
    每个进程对应一张页表,存储 “页号→物理块号” 的映射关系,是逻辑地址到物理地址转换的关键。页表通常存放在内存中,进程执行时通过硬件(如地址转换机构)快速查询。
  • 优缺点
    • 优点:内存利用率高(碎片小,仅存在页内碎片),分配与管理简单。
    • 缺点:增加系统开销(页表占用内存);可能产生 “抖动”(频繁的页面调入调出)。

2. 段式存储管理

分段是基于 “逻辑功能” 的离散分配方式,更贴合用户对程序的逻辑划分。

  • 核心原理
    将用户程序的逻辑地址空间划分为大小不等的段(如代码段、数据段、堆栈段),每段代表一组相对完整的逻辑信息(如一个函数、一个数据结构)。内存分配以段为单位,段与段在内存中可离散存储。
  • 段表的作用
    与分页类似,段式存储通过段表记录映射关系,但段表条目包含 “段号、基址(段在内存的起始地址)、段长(段的大小)”。由于段大小可变,段长字段用于检查地址是否越界(避免访问其他段的内存)。
  • 优缺点
    • 优点:便于程序共享(如多个进程共享代码段),段内修改不影响其他段,符合用户逻辑。
    • 缺点:内存利用率低(易产生段间碎片),碎片整合开销大。

3. 段页式存储管理

结合分页和分段的优点,兼顾逻辑划分与内存高效利用。

  • 核心原理
    1. 先将逻辑空间分为若干逻辑段(如分段),每段有独立段号。
    2. 再将每个段划分为大小相等的页(如分页),物理内存仍以页为单位分配。
  • 地址结构
    32 位系统中,地址由 “段号 + 页号 + 页内偏移量” 组成。例如,段号占 8 位(最多 256 个段),页号占 12 位(每段最多 4096 页),页内偏移量占 12 位(页大小 4KB)。

  • 优缺点
    • 优点:空间浪费小(无大碎片)、共享与保护容易(基于段)、支持动态连接。
    • 缺点:管理复杂(需段表和页表两级映射),系统开销大(硬件和内存占用增加),执行速度下降。

页面置换算法:解决内存不足的关键

当程序需要访问的页面不在内存(缺页)时,需从外存调入页面,若内存已满,则需淘汰部分页面,这一过程由页面置换算法决定。

页面淘汰的基本原则

根据程序的局部性原理(最近被访问的页面未来更可能被访问),淘汰策略遵循:

  • 优先淘汰未被访问的页面(访问位为 0)。
  • 若都被访问过,优先淘汰未修改的页面(修改位为 0,无需写回外存,开销小)。

常见页面置换算法

算法名称 核心逻辑 特点
最优算法(OPT) 淘汰未来最长时间不被访问的页面 理论最优,但无法实现(需预知未来访问序列),作为其他算法的评价基准。
随机算法(RAND) 随机选择页面淘汰 简单但效率低,可能淘汰常用页面,导致频繁缺页。
先进先出(FIFO) 淘汰最早进入内存的页面 实现简单,但可能淘汰常用页面,产生 “Belady 异常”(内存增大,缺页率反而上升)。
最近最少使用(LRU) 淘汰最近一段时间内使用最少的页面 符合局部性原理,缺页率低,无抖动,但需记录访问时间,实现复杂度高(硬件支持)。

欢迎关注我的其它发布渠道

表情 | 预览
快来做第一个评论的人吧~
Powered By Valine
v1.3.10