个性化阅读
专注于IT技术分析

内存分段

本文概述

在操作系统中, 分段是一种内存管理技术, 其中, 内存分为可变大小部分。每个部分都称为段, 可以分配给一个进程。

有关每个段的详细信息存储在称为段表的表中。段表存储在一个(或多个)段中。

段表主要包含有关段的两个信息:

  1. 基址:它是段的基址
  2. 限制:这是段的长度。

为什么需要分段?

到目前为止, 我们一直使用Paging作为主要的内存管理技术。分页更接近于操作系统而不是用户。它将一个进程分为页面的形式, 而不管一个进程可能具有需要在同一页面中加载的某些功能。

操作系统不在乎用户对线程的看法。它将相同的功能划分为不同的页面, 并且这些页面可能会或可能不会同时加载到内存中。它降低了系统的效率。

最好进行分段, 以将线程分为多个部分。每个段都包含相同类型的功能, 例如主函数可以包含在一个段中, 库函数可以包含在另一段中,

通过段表将逻辑地址转换为物理地址

CPU生成包含两个部分的逻辑地址:

  1. 段号
  2. 偏移量

段号映射到段表。将各个段的极限与偏移量进行比较。如果偏移量小于限制, 则该地址有效, 否则将引发错误, 因为该地址无效。

在有效地址的情况下, 将段的基地址添加到偏移量中以获得主存储器中实际字的物理地址。

内存分段

分段优势

  1. 无内部碎片
  2. 平均分段大小大于实际页面大小。
  3. 减少开销
  4. 重定位段比整个地址空间容易。
  5. 与分页中的页表相比, 段表的大小较小。

缺点

  1. 它可以具有外部碎片。
  2. 很难将连续的内存分配给可变大小的分区。
  3. 昂贵的内存管理算法。
赞(0)
未经允许不得转载:srcmini » 内存分段

评论 抢沙发

评论前必须登录!