1. 程式人生 > >記憶體管理之連續分配管理方式

記憶體管理之連續分配管理方式

連續分配管理方式

      連續分配方式是指為一個使用者程式分配一個連續的記憶體空間。通俗地說,就是給記憶體劃格子(格子中都是一個程序,和非連續分配管理方式相對)。

(1)單一連續分配

     將記憶體分為系統區和使用者區,記憶體中永遠只有一道程式——已經成為歷史

(2)固定分割槽分配

分為2種方式: 分割槽大小相等, 分割槽大小不等

因為預先給分區劃定了記憶體大小,所以存在兩個問題:

一.程式可能太大而放不進任何一個分割槽中,使用者不得不用使用覆蓋技術

二.主存利用率低,當程式小於固定分割槽大小時,也佔用了一個完整的記憶體分割槽空間,分割槽內部有空間浪費,這種現象稱為內部碎片

固定分割槽是可用於多道程式設計最簡單的記憶體分配

,無外部碎片,但不能實現多程序共享一個主存區,儲存空間利用率低。很少用於現在通用的作業系統中。

(3)動態分割槽分配

動態劃分記憶體,不預先將記憶體劃分,而是在程序裝入記憶體時,根據程序的大小動態地

建立分割槽,並使分割槽的大小正好適合程序的需要。系統中分割槽的大小和數目是可變的。

 

  隨著程序的換入/換出,會出現更多更小的記憶體塊,記憶體的利用率隨之下降,這些小的記憶體塊稱為外部碎片,指在所有分割槽外的儲存空間會變成越來越多的碎片,這與固定分割槽的內部碎片正好相對。克服外部碎片可以通過緊湊技術來解決,就是作業系統不時地對程序進行移動和整理,相對費時。和windows系統中的磁碟整理程式類似。

在程序裝入或換入主存時,如果記憶體中有多個足夠大的空閒塊,作業系統必須確定分配哪個記憶體塊給程序使用,這就是動態分割槽的分配策略。有以下幾種演算法:

首次適應, 最佳適應,最壞適應,鄰近適應。