連續分配是指為乙個使用者程式分配連續的記憶體空間。連續分配有單一連續儲存管理和分割槽式儲管理兩種方式。
(1)單一連續儲存管理
在這種管理方式中,記憶體被分為兩個區域:系統區和使用者區。應用程式裝入到使用者區,可使用使用者區全部空間。其特點是,最簡單,適用於單使用者、單任務的作業系統。cp/m和dos 2.0以下就是採用此種方式。這種方式的最大優點就是易於管理。但也存在著一些問題和不足之處,例如對要求記憶體空間少的程式,造成記憶體浪費;程式全部裝入,使得很少使用的程式部分也占用—定數量的記憶體。
(2)分割槽式儲存管理
為了支援多道程式系統和分時系統,支援多個程式併發執行,引入了分割槽式儲存管理。分割槽式儲存管理是把記憶體分為一些大小相等或不等的分割槽,作業系統占用其中乙個分割槽,其餘的分割槽由應用程式使用,每個應用程式占用乙個或幾個分割槽。分割槽式儲存管理雖然可以支援併發,但難以進行記憶體分割槽的共享。
分割槽式儲存管理引人了兩個新的問題:內碎片和外碎片。前者是占用分區內未被利用的空間,後者是占用分割槽之間難以利用的空閒分割槽(通常是小空閒分割槽)。為實現分割槽式儲存管理,作業系統應維護的資料結構為分割槽表或分割槽鍊錶。表中各表項一般包括每個分割槽的起始位址、大小及狀態(是否已分配)。
分割槽式儲存管理常採用的一項技術就是記憶體緊縮(compaction):將各個占用分割槽向記憶體一端移動,然後將各個空閒分割槽合併成為乙個空閒分割槽。這種技術在提供了某種程度上的靈活性的同時,也存在著一些弊端,例如:對占用分割槽進行記憶體資料搬移占用cpu~t寸間;如果對占用分割槽中的程式進行「浮動」,則其重定位需要硬體支援。
1)固定分割槽(nxedpartitioning)。
固定式分割槽的特點是把記憶體劃分為若干個固定大小的連續分割槽。分割槽大小可以相等:這種作法只適合於多個相同程式的併發執行(處理多個型別相同的物件)。分割槽大小也可以不等:有多個小分割槽、適量的中等分割槽以及少量的大分割槽。根據程式的大小,分配當前空閒的、適當大小的分割槽。這種技術的優點在於,易於實現,開銷小。缺點主要有兩個:內碎片造成浪費;分割槽總數固定,限制了併發執行的程式數目。
2)動態分割槽(dynamic partitioning)。
動態分割槽的特點是動態建立分割槽:在裝入程式時按其初始要求分配,或在其執行過程中通過系統呼叫進行分配或改變分割槽大小。與固定分割槽相比較其優點是:沒有內碎片。但它卻引入了另一種碎片——外碎片。動態分割槽的分割槽分配就是尋找某個空閒分割槽,其大小需大於或等於程式的要求。若是大於要求,則將該分割槽分割成兩個分割槽,其中乙個分割槽為要求的大小並標記為「占用」,而另乙個分割槽為餘下部分並標記為「空閒」。分割槽分配的先後次序通常是從記憶體低端到高階。動態分割槽的分割槽釋放過程中有乙個要注意的問題是,將相鄰的空閒分割槽合併成乙個大的空閒分割槽。
下面列出了幾種常用的分割槽分配演算法:
首先適配法(nrst-fit):按分割槽在記憶體的先後次序從頭查詢,找到符合要求的第乙個分割槽進行分配。該演算法的分配和釋放的時間效能較好,較大的空閒分割槽可以被保留在記憶體高階。但隨著低端分割槽不斷劃分會產生較多小分割槽,每次分配時查詢時間開銷便會增大。
下次適配法(next-fit):按分割槽在記憶體的先後次序,從上次分配的分割槽起查詢(到最後,找到符合要求的第乙個分割槽進行分配。該演算法的分配和釋放的時間效能較好,使空閒分割槽分布得更均勻,但較大空閒分割槽不易保留。
最佳適配法(best-fit):按分割槽在記憶體的先後次序從頭查詢,找到其大小與要求相差最小的空閒分割槽進行分配。從個別來看,外碎片較小;但從整體來看,會形成較多外碎片優點是較大的空閒分割槽可以被保留。
最壞適配法(worst- fit):按分割槽在記憶體的先後次序從頭查詢,找到最大的空閒分割槽進行分配。基本不留下小空閒分割槽,不易形成外碎片。但由於較大的空閒分割槽不被保留,當對記憶體需求較大的程序需要執行時,其要求不易被滿足。
第4章 儲存器管理 連續分配儲存管理方式
為乙個使用者程式分配乙個連續的記憶體空間 1 單一連續分配 記憶體分為系統區和使用者區兩部分 系統區 僅提供給os使用,通常放在記憶體低址部分 使用者區 除系統區以外的全部記憶體空間,提供給使用者使用。最簡單的一種儲存管理方式,只能用於單使用者 單任務的作業系統中。優點 易於管理。缺點 對要求記憶體...
儲存管理之分配演算法
作業系統之儲存管理 分配演算法 1.最佳適應法 最佳適應演算法要求空閒區按大小遞增的次序排列.在進行記憶體分配時,從空閒分割槽表首開始順序查詢,直到找到第乙個能滿足其大小要求的空閒區為止,如果該空閒區大於請求表中的請求長度,則將剩餘空閒區留在可用表中 如果相鄰有空閒區,則與之和並 然後修改相關表的表...
儲存器分配替代庫
1 由於儲存器分配出錯很難跟蹤,某些系統提供了這些函式的其他實現版本。ptmalloc2是unix使用的記憶體分配庫 tcmalloc號稱比ptmalloc2快,屬於gperftools hoard 的目標是使記憶體分配在多執行緒環境中進行得非常快 nedmalloc是乙個跨平台的高效能多執行緒記憶...