Administrator
Published on 2025-03-14 / 4 Visits
0
0

操作系统内存管理:分段与分页详解

在操作系统中,分段和分页是两种不同的内存管理技术,主要区别如下:


分段(Segmentation)

  1. 基本概念
    分段将程序的逻辑地址空间划分为多个可变长度的段,每个段对应程序的一个逻辑单元(如代码段、数据段、堆栈段等)。每个段在内存中占据连续的空间,但不同段可以不连续。

  2. 地址转换

    • 逻辑地址由**段号(Segment Number)段内偏移(Offset)**组成(二维地址)。
    • 通过段表(Segment Table)完成地址转换:段表存储每个段的基址(Base Address)界限(Limit)
    • 物理地址 = 段基址 + 段内偏移。
  3. 优点

    • 符合程序逻辑结构:便于共享和保护(如代码段只读、数据段可读写)。
    • 动态扩展:段的大小可根据需求调整。
  4. 缺点

    • 外部碎片:内存中可能存在多个不连续的小块空闲区域,难以利用。
    • 管理复杂:需要维护段表,且分配内存时需查找合适大小的空闲区域。

分页(Paging)

  1. 基本概念
    分页将逻辑地址空间划分为固定大小的页(Page),物理内存划分为相同大小的页框(Frame)。页与页框通过页表映射,实现非连续的物理内存分配。

  2. 地址转换

    • 逻辑地址分为页号(Page Number)页内偏移(Offset)(一维地址)。
    • 通过**页表(Page Table)**完成地址转换:页表存储每个页对应的物理页框号。
    • 物理地址 = 页框号 × 页大小 + 页内偏移。
  3. 优点

    • 消除外部碎片:页大小固定,内存分配灵活。
    • 简化管理:仅需记录页表,无需处理可变长度的内存块。
    • 支持虚拟内存:通过缺页中断和页面置换,实现内存的按需加载。
  4. 缺点

    • 内部碎片:最后一页可能未完全利用。
    • 页表开销大:尤其在使用多级页表或大地址空间时。

关键区别

特性分段分页
划分单位逻辑段(可变长度)固定大小的页
地址空间二维(段号 + 偏移)一维(页号 + 偏移)
碎片问题外部碎片内部碎片
管理目标逻辑隔离与保护物理内存高效利用
虚拟内存需结合分页支持原生支持

结合应用

现代操作系统(如x86)常采用段页式存储管理,即先分段再分页:

  1. 逻辑地址通过分段转换为线性地址。
  2. 线性地址通过分页转换为物理地址。
    这种设计兼顾了逻辑保护与物理内存管理效率。

总结:分段注重程序的逻辑结构,分页优化物理内存利用。两者结合可发挥各自优势,满足复杂系统的需求。


Comment