📜  操作系统细分

📅  最后修改于: 2020-12-15 03:51:35             🧑  作者: Mango

分割

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

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

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

  • 基址:它是段的基址
  • 限制:这是段的长度。

为什么需要细分?

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

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

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

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

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

  • 段号
  • 抵消

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

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

细分的优势

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

缺点

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