分段

在操作系統中,分段是一種記憶體管理技術,其中記憶體分為可變大小的部分。 每個部分被稱為可以分配給進程的段。

有關每個段的詳細資訊存儲在稱為段表的表中。 分段表存儲在一個(或多個)分段中。

分段表主要包含兩個關於分段的資訊:

  • 基:它是細分分段的基地址
  • 限制:它是分段的長度。

為什麼需要分段?

到目前為止,我們使用分頁作為主要記憶體管理技術。 分頁更接近操作系統而不是用戶。 它將所有進程劃分為頁面形式,而不管進程是否具有需要在同一頁面中加載的某些相關功能部分。

操作系統不關心用戶對過程的看法。 它可以將相同的功能劃分為不同的頁面,這些頁面可以或不可以同時加載到記憶體中。 它降低了系統的效率。

將進程劃分為細分部分最好是細分。 每個段包含相同類型的功能,例如main函數可以包含在一個分段中,並且庫函數可以包含在另一個分段中。

邏輯地址按段表轉換為物理地址

CPU產生一個包含兩部分的邏輯地址:

  • 分段號
  • 偏移量

分段號被映射到段表。 將各段的限制與偏移進行比較。 如果偏移量小於極限值,則地址有效,否則由於地址無效而引發錯誤。

在有效地址的情況下,該段的基地址被添加到偏移量以獲得主記憶體中實際字的物理地址。

分段的優勢

  • 沒有內部碎片
  • 平均分段大小大於實際頁面大小。
  • 較少開銷
  • 重定位段比整個地址空間更容易。
  • 與分頁中的頁表相比,分段表更小。

分段的缺點

  • 它可以有外部碎片。
  • 很難將連續記憶體分配給可變大小的分區。
  • 昂貴的記憶體管理演算法。

上一篇: Belady異常 下一篇: 分頁與分段比較