連續分配存儲方式
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、 分區的保護
分區的保護的常用方法是由系統提供硬件:一對界限寄存器。這可以是上界寄存器、下界寄存
器,或者是基址寄存器、限長寄存器。基址寄存器存放起始地址,作爲重定位(地址映射)使用;限
長寄存器存放程序長度,作爲存貯保護使用。