分段


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

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

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

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

為什麼需要分段?

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

作業系統不關心使用者對過程的看法。 它可以將相同的功能劃分為不同的頁面,這些頁面可以或不可以同時載入到儲存器中。 它降低了系統的效率。

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

邏輯地址按段表轉換為實體地址

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

  • 分段號
  • 偏移量

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

在有效地址的情況下,該段的基地址被新增到偏移量以獲得主記憶體儲器中實際字的實體地址。

分段的優勢

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

分段的缺點

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