分段

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

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

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

  • 基:它是细分分段的基地址
  • 限制:它是分段的长度。

为什么需要分段?

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

操作系统不关心用户对过程的看法。 它可以将相同的功能划分为不同的页面,这些页面可以或不可以同时加载到存储器中。 它降低了系统的效率。

将进程划分为细分部分最好是细分。 每个段包含相同类型的功能,例如main函数可以包含在一个分段中,并且库函数可以包含在另一个分段中。

逻辑地址按段表转换为物理地址

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

  • 分段号
  • 偏移量

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

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

分段的优势

  • 没有内部碎片
  • 平均分段大小大于实际页面大小。
  • 较少开销
  • 重定位段比整个地址空间更容易。
  • 与分页中的页表相比,分段表更小。

分段的缺点

  • 它可以有外部碎片。
  • 很难将连续内存分配给可变大小的分区。
  • 昂贵的内存管理算法。

上一篇:Belady异常

下一篇:分页与分段比较

关注微信小程序
程序员编程王-随时随地学编程

扫描二维码
程序员编程王

扫一扫关注最新编程教程