作業系統中的非連續分配


作業系統使用稱為非連續分配的記憶體管理策略來為程序分配記憶體。此方法將記憶體劃分為固定大小的塊或分割槽,並且可以根據程序的大小需求為每個分割槽分配程序。

與連續分配(其中程序佔用單個記憶體塊)相反,非連續分配允許程序的記憶體分散在主記憶體中的多個區域。在處理不同大小的程序時,此策略提供了更大的靈活性和有效的記憶體利用率。

在本文中,我們將探討什麼是非連續記憶體分配,其技術、用例、優點和缺點。

什麼是非連續記憶體分配?

它允許程序根據其需求在記憶體中的不同位置獲取多個記憶體塊。由於它利用了內部和外部碎片產生的記憶體間隙,因此非連續記憶體分配還可以減少由內部和外部碎片引起的記憶體浪費。

分頁和分段是防止程序的物理地址空間連續的兩種技術。非連續記憶體分配將程序劃分為塊(或頁或段),然後根據可用記憶體量將其分配到不同的記憶體位置。

非連續記憶體分配可以節省未使用的記憶體,但它也增加了地址轉換的成本。由於當程序元素儲存在記憶體中的不同位置時需要時間進行地址轉換,因此記憶體執行會延遲。

使用這種型別的記憶體分配,程序可以根據需要在不同位置獲取多個記憶體塊。與連續記憶體分配(其中所有可用空間都在一個位置分配)相反,可用的空閒空間分佈在各個位置。

分配非連續記憶體的速度比分配連續記憶體慢。包括分段和分頁。這種分配不會造成記憶體損失。

用於非連續分配的技術

以下技術用於非連續分配。

連結串列− 在連結串列方法中,每個程序都獲得透過指標連線的記憶體塊。當程序獲得多個塊時,指標允許從一個塊遍歷到另一個塊。儘管此方法需要為指標額外分配空間,但它可以實現有效的記憶體分配和釋放。

分頁− 分頁透過對邏輯記憶體和物理記憶體進行分割槽來建立稱為頁的固定大小的記憶體塊。邏輯記憶體被劃分為大小相同的頁,而物理記憶體被劃分為幀。作業系統負責維護一個將邏輯頁對映到物理幀的頁表。可以分割物理記憶體幀以適應每個程序頁的非連續分配。

分段− 分段將邏輯記憶體劃分為不同大小的段。每個段(例如程式碼段、資料段或堆疊段)表示程序的一個邏輯單元。儘管段分散在物理記憶體中,但仍保留段表以將邏輯段對映到物理記憶體位置。儘管此方法提供了靈活性,但它可能會導致外部碎片。

作業系統中非連續分配的用例

以下是作業系統中非連續分配的一些用例。

大小可變的程序− 在處理不同大小的程序時,非連續分配特別有用。它允許記憶體分散在多個區域,從而實現有效的記憶體利用率。

動態記憶體管理− 非連續分配允許動態記憶體管理,允許根據活動啟動或終止來分配和釋放記憶體。這種靈活性在程序具有變化的記憶體需求的環境中至關重要。

有效的記憶體利用率− 非連續分配透過根據程序的實際需求分配記憶體塊來確保有效的記憶體利用率。它透過僅為每個程序分配必要的記憶體量來防止浪費記憶體。

碎片管理− 雖然非連續分配可能會增加外部碎片,但它有助於減少內部碎片。內部碎片是指分配的記憶體塊中存在空閒或部分使用的空間。透過根據程序的特定需求分配記憶體塊,可以最大限度地減少內部碎片。

處理大型資料集− 在處理無法放入單個連續記憶體塊的大型資料集時,非連續分配非常有用。能夠在多個非連續塊中分配記憶體允許程序處理大量資料而不會耗盡可用的記憶體資源。

虛擬記憶體系統− 非連續分配是虛擬記憶體系統中使用的基本技術。它允許作業系統以靈活的方式將邏輯地址對映到物理地址,從而允許程序以非連續的方式訪問記憶體。

多程式設計環境− 在多個程序同時執行的多程式設計環境中,非連續分配有助於有效地將記憶體塊分配給不同的程序。可以根據每個程序的特定需求分配記憶體,從而實現最佳的記憶體使用率。

即時系統− 非連續分配在即時系統中可能很有用,在即時系統中,程序具有嚴格的時間要求。它允許動態分配和釋放記憶體,使程序能夠有效地管理其記憶體資源,同時滿足嚴格的時間限制。

非連續記憶體分配的優點

高效的記憶體利用率− 非連續分配可以透過根據程序的實際需求分配記憶體塊來有效地利用記憶體。

靈活性− 非連續分配使記憶體管理更加靈活。它允許程序以碎片化的方式接收記憶體,從而使它們能夠適應各種大小的可用記憶體塊。

動態記憶體管理− 非連續分配允許動態記憶體管理,允許根據活動啟動或終止來分配和釋放記憶體。

簡化的外部碎片− 與連續分配相比,非連續分配降低了外部碎片的發生率,從而使外部碎片更容易理解。

非連續記憶體分配的缺點以及實際例子

碎片− 非連續分配可以減少內部碎片,同時增加外部碎片。內部碎片是指分配的記憶體塊中存在空閒或部分使用的空間,這會導致記憶體利用率低下。

記憶體管理開銷− 非連續分配需要額外的記憶體管理開銷,例如資料結構維護、地址轉換等,以跟蹤已分配的記憶體塊、它們的位置以及程序與記憶體的對映關係。

記憶體外部化− 在幾種非連續記憶體分配技術中,例如分頁或分段,可能會發生記憶體外部化。

結論

作業系統使用非連續記憶體分配的記憶體管理策略來為程序分配記憶體。它有很多優點,例如有效的記憶體管理、靈活地為不同大小的程序分配記憶體、動態記憶體管理以及更少的外部碎片。

但是,非連續分配也有一些缺點。它可能需要將記憶體外部化到輔助儲存器,導致內部碎片,增加記憶體管理開銷,並導致更長的記憶體訪問時間。

更新於:2023年7月17日

796 次檢視

啟動你的職業生涯

透過完成課程獲得認證

開始學習
廣告