Skip to content

什么是分段、什么是分页

分段(Segmentation)

  • 分段是根据进程的逻辑结构,将内存划分为多个大小不等的区域,称为段(Segment)。每个段都有自己的意义,如代码段、数据段、堆栈段等。

  • 每个段可以有不同的大小,段的长度取决于程序的实际需求,段与段之间可能不连续

  • 分段管理提供了一种更贴近程序结构的内存管理方式,有助于提高程序的可读性和可维护性

工作原理

  • 地址转换:虚拟地址由段号和段内偏移量组成,通过段表(Segment Table),将段号映射到物理内存中的地址,从而计算出物理地址

  • 内存管理:操作系统根据进程的需求,分配大小合适的内存段。段的大小可变,符合程序的逻辑结构

分页(Paging)

  • 分页是将内存划分为固定大小的块,称为页帧(Page Frame),通常为 4KB 或 8KB。相应地,进程的虚拟地址空间也被划分为同样大小的页面(Page)。

  • 逻辑地址空间被划分为若干个固定大小的页,物理内存则被划分为相同大小的页框,页通过页表映射到页框

工作原理

  • 地址转换:进程访问内存时,使用虚拟地址。虚拟地址由页号和页内偏移量组成。通过页表(Page Table),将虚拟页号映射到物理页帧号,进而计算出物理地址。

  • 内存管理:当进程需要更多内存时,操作系统为其分配新的页面。由于页面大小固定,内存分配和回收效率高。

两者区别

特点分页分段
划分方式固定大小的页面大小可变的段
地址空间一维地址(页号 + 页内偏移)二维地址(段号 + 段内偏移)
内存碎片可能有内部碎片,无外部碎片可能有外部碎片,无内部碎片
共享与保护页面级别,可实现简单的保护段级别,更灵活的共享和保护
符合程序逻辑与程序逻辑无关反映程序的逻辑结构
实现复杂度硬件支持,效率高需要复杂的内存管理

分段与分页的结合

现代操作系统通常将分段和分页结合使用,以发挥二者的优点。

  • 分段管理逻辑空间:程序员从逻辑上将程序划分为多个段。

  • 分页管理物理内存:每个段再划分为固定大小的页面,映射到物理内存中的页帧。

  • 优点:

    • 提升内存利用率:通过分页减少碎片,提高内存分配效率。

    • 灵活的共享和保护:分段提供了更灵活的内存共享和访问控制机制。

如有转载或 CV 的请标注本站原文地址