連續分配儲存方式
1.固定分區(Fixed Partitioning)分配
固定分區是在作業裝入之前,記憶體就被劃分成若干個分區。劃分工作可以由系統管理員完成,
也可以由作業系統實現。然而一旦劃分完成,在系統運行期間不再重新劃分,即分區的個數不可變,
分區的大小不可變,所以,固定式分區又稱為靜態分區。
這種分區方式一般將記憶體的使用者地區劃分成大小不等的分區,以適應不同大小的作業的需要。系
統有一張分區說明表,每個表目說明一個分區的大小、起始地址和是否已指派的使用標誌。
固定分區(Fixed Partitioning)分配
分區說明表
區號 大小 起址 標誌
1 16KB 20K 已指派
2 32KB 36K 已指派
3 64KB 68K 已指派
4 124KB 132K 未分配
固定式分區實現技術簡單,但是記憶體的利用率不高,適用於作業的大小和多少事先都比較清楚的
系統中。它用於60年代的IBM-360的MFT作業系統中。
2.動態/可變式(Dynamic Partitioning)分區分配
可變式分區是指在作業裝入記憶體時,從可用的記憶體中划出一塊連續的地區分配給它,且分區大
小正好等於該作業的大小。可變式分區中分區的大小和分區的個數都是可變的,而且是根據作業的大
小和多少動態地劃分,因此又稱為動態分區。這種儲存管理技術是固定式分區的改進,既可以獲得較
大的靈活性,又能提高記憶體的利用率。
可變式分區的分配和釋放的基本思想是:在分配時,首先找到一個足夠大的空閑分區,即這個空
閑區的大小比作業要求的要大,系統則將這個空閑分區分成兩部分:一部分成為已指派的分區,剩餘
的部分仍作為空白閑區。在回收撤除作業所佔領的分區時,要檢查回收的分區是否與前後閒置分區相
領接,若是,則加以合并,使之成為一個連續的大空間。
動態/可變式(Dynamic Partitioning)分區分配
1、 可變式分區資料結構
空閑區表形式
空閑分區表為每個尚未分配的分區設定一個表項,包括分區的序號、大小、始址和狀態。空閑區
鏈形式
為了實現對空閑分區的分配和連結,在每個分區的起始部分,設定一些用於控制分區分配的資訊
(如分區的大小和狀態位),以及用於連結其它分區的前向指標;在分區尾部,則設定了一個後向指
針,為了檢索方便也設定了控制分區分配的資訊。然後,通過前、後向指標將所有的分區連結成一個
雙向鏈表。
動態/可變式(Dynamic Partitioning)分區分配
序號P 大小 起址 狀態
1 32k 20k 空閑
2 56k 260k 空閑
3 116k 396k 空閑
4 - - 空表目
5 - - 空表目
2、 分區分配演算法(Partitioning Placement Algorithm)
最佳適應演算法(Best Fit):
它從全部空閑區中找出能滿足作業要求的、且大小最小的空閑分區,這種方法能使片段盡量小。
為適應此演算法,空閑分區表(空閑區鏈)中的空閑分區要按大小從小到大進行排序,自表頭開始尋找
到第一個滿足要求的自由分區分配。該演算法保留大的空閑區,但造成許多小的空閑區。
首次適應演算法(First Fit):
從空閑分區表的第一個表目起尋找該表,把最先能夠滿足要求的空閑區分配給作業,這種方法目
的在於減少尋找時間。為適應這種演算法,空閑分區表(空閑區鏈)中的空閑分區要按地址由低到高進
行排序。該演算法優先使用低址部分空閑區,在低址空間造成許多小的空閑區,在高地址空間保留大的
空閑區。
迴圈首次適應演算法(Next Fit):
該演算法是首次適應演算法的變種。在分配記憶體空間時,不再每次從表頭(鏈首)開始尋找,而是從
上次找到空閑區的下一個空閑開始尋找,直到找到第一個能滿足要求的的空閑區為止,並從中划出一
塊與請求大小相等的記憶體空間分配給作業。該演算法能使記憶體中的空閑區分布得較均勻。
(4)動態重定位分區分配
1、 緊湊(Compaction)/拼接
可變式分區也有零頭問題。在系統不斷地分配和回收中,必定會出現一些不連續的小的空閑區
,稱為片段(fragment)(又稱零頭)。小的空閑區稱外零頭,固定分區內的空閑部分稱為內零頭。
雖然可能所有零頭的總和超過某一個作業的要求,但是由於不連續而無法分配。解決零頭的方法是緊
湊(或稱拼接),即向一個方向(例如向低地址端)移動已指派的作業,使那些零散的小空閑區在另
一方向連成一片。分區的拼接技術,一方面是要求能夠對作業進行重定位,另一方面系統在拼接時要
耗費較多的時間。
2、 動態重定位
實現緊湊所需的允許作業在運行過程中在記憶體中移動的技術必須獲得硬體支援。只有具有動態
重定位硬體機構的電腦系統,才有可能採取動態重定位可變分區多道管理技術,系統的硬體包括重
定位寄存器和加法器。
3、 動態重定位分區分配演算法
動態重定位分區管理中何時進行儲存空間緊縮有二種不同的解決辦法:
在某個分區被釋放後立即進行緊縮,系統總是只有一個連續的分區而無片段,此法很花費機時。
當"請求分配模組"找不到足夠大的自由分區分給使用者時再進行緊縮,這樣緊縮的次數比上種方法
少得多,但表格管理複雜。採用此法的動態重定位分區分配演算法框圖。
4、 分區的保護
分區的保護的常用方法是由系統提供硬體:一對界限寄存器。這可以是上界寄存器、下界寄存
器,或者是基底位址暫存器、限長寄存器。基底位址暫存器存放起始地址,作為重定位(地址映射)使用;限
長寄存器存放程式長度,作為存貯保護使用。