操作系統3.1.4 連續分配管理方式

連續分配:意味着爲用戶進程分配的必須是一個連續的內存空間

 

 

一、單一連續分配

在單一連續分配方式中,內存被分爲系統區用戶區,系統區通常位於內存的地址部分,用於存放系統相關數據;用戶區用於存放用戶進程相關數據。

內存中只能有一道用戶程序,用戶程序獨佔整個用戶區空間。

優點:實現簡單,無外部碎片

缺點:只能用於單用戶,單任務的操作系統;有內部碎片;存儲器利用率極其低

內存碎片:指分配給某進程的內存區域中,如果有些部分沒有用上,就是“內部碎片”

 

 

二、固定分區分配

20世紀60年代出現了支持多道程序的系統,爲了能在內存中裝入多道程序,並且這些程序之間不會互相干擾,於是將整個用戶空間劃分爲若干個固定大小的分區,在每個分區只裝入一道作業,這樣就形成看最早、最簡單的一種可運行多道程序的內存管理方式。

固定分區分配分爲:分區大小相等和分區大小不等兩種

分區大小相等:缺乏靈活性,但適合用於一臺計算機控制多個相同對象的場合

分區帶下不等:增加了靈活性,可以滿足不同大小的進程需求,根據常在系統中運行的作業大小情況進行劃分(比如:劃分多個小分區、適量中等分區、少量大分區)

分區說明表:

優點:實現簡單,無外部碎片

缺點:當用戶程序太大時,可能所有的分區都不能滿足需求,此時不得不採用覆蓋技術來解決,但這又會降低性能;

會產生內部碎片,內存利用率低

 

 

三、動態分區分配

動態分區分配又稱可變分區分配。它不會預先劃分內存分區,而是在進程裝入內存時,根據進程的大小動態建立分區,並使分區的大小正好適合進程的需要,因此係統分區的大小和數目是可變的。

三個問題:

1、系統要用什麼樣的數據結構來記錄內存的使用情況?

系統使用空閒分區表空閒分區鏈的數據結構來記錄內存的使用情況。

空閒分區表:每個空閒分區對應一個表項。表項中包含分區號、分區大小、分區起始地址等信息

空閒分區鏈:每個分區的起始部分和末尾部分分別設置前向指針和後向指針。起始部分處還可記錄分區大小等信息

2、當很多個空閒分區都能滿足需求時,應該選擇哪個分區進行分配?

當很多個進程都能滿足需求時,系統會根據動態分區分配算法來選擇分區進行分配

3、如何進行分區的分配與回收操作?

分區進行分配時,如果被分配的分區空間大於進程使用空間,就修改空閒分區表中分區的大小,將越來的大小減去被使用的大小。如果被分配的分區空間等於進程使用空間,就從表中刪除這個表項。

分區進行回收時,如果回收的分區,相鄰的前後有相鄰的空閒分區,就將它們進行合併,相應的修改分區表中的大小和起始地址。如果前後沒有空閒分區,就需要在分區表中添加一個新的表項,填寫相關信息。

 

  • 外部碎片:內存中存在某些空閒區間由於太小而難以利用
  • 內部碎片:分配給某進程的內存區域中,如果有些部分沒有用上的區域
  • 可以用緊湊技術來解決外部碎片問題

兩個思考:

1、回憶交換技術,什麼是換入/換出?什麼是中級調度(內存調度)?

2、思考動態分區分配應使用哪種裝入方式?“緊湊”之後需要做什麼處理?

 

紅框內,常考選擇題。 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章