内存分段

本文概述

  • 为什么需要分段?
  • 通过段表将逻辑地址转换为物理地址
  • 分段优势
  • 缺点
在操作系统中, 分段是一种内存管理技术, 其中, 内存分为可变大小部分。每个部分都称为段, 可以分配给一个进程。
有关每个段的详细信息存储在称为段表的表中。段表存储在一个(或多个)段中。
段表主要包含有关段的两个信息:
  1. 基址:它是段的基址
  2. 限制:这是段的长度。
为什么需要分段? 到目前为止, 我们一直使用Paging作为主要的内存管理技术。分页更接近于操作系统而不是用户。它将一个进程分为页面的形式, 而不管一个进程可能具有需要在同一页面中加载的某些功能。
操作系统不在乎用户对线程的看法。它将相同的功能划分为不同的页面, 并且这些页面可能会或可能不会同时加载到内存中。它降低了系统的效率。
最好进行分段, 以将线程分为多个部分。每个段都包含相同类型的功能, 例如主函数可以包含在一个段中, 库函数可以包含在另一段中,
通过段表将逻辑地址转换为物理地址 CPU生成包含两个部分的逻辑地址:
  1. 段号
  2. 偏移量
段号映射到段表。将各个段的极限与偏移量进行比较。如果偏移量小于限制, 则该地址有效, 否则将引发错误, 因为该地址无效。
【内存分段】在有效地址的情况下, 将段的基地址添加到偏移量中以获得主存储器中实际字的物理地址。
内存分段

文章图片
分段优势
  1. 无内部碎片
  2. 平均分段大小大于实际页面大小。
  3. 减少开销
  4. 重定位段比整个地址空间容易。
  5. 与分页中的页表相比, 段表的大小较小。
缺点
  1. 它可以具有外部碎片。
  2. 很难将连续的内存分配给可变大小的分区。
  3. 昂贵的内存管理算法。

    推荐阅读