1. 實驗目的
可變分區配置設定是一種重要的存儲管理思想,目前流行的作業系統采用的分段存儲管理的基本思想就源自該方法。本實驗的目的是通過程式設計來模拟一個簡單的可變分區配置設定存儲管理系統,利用最先适應配置設定算法實作。經過實驗者親自動手編寫管理程式,可以進一步加深對可變分區配置設定存儲管理方案設計思想的了解。
2. 實驗原理
固定分區配置設定按作業系統初始化時劃定的分區方案為作業配置設定記憶體,由于各分區的位置和大小固定,是以作業所需的記憶體大小通常小于分到的實際記憶體的大小,造成存儲空間的浪費。可變分區配置設定對此作了改進,它總是根據作業的實際需要配置設定剛好夠用的連續存儲空間,保證配置設定給作業的存儲空間都是有用的,避免了零頭的産生。
(1) 可變分區中的資料結構
建立描述作業的資料結構作業控制塊,至少應包括:
作業名稱
作業需要執行時間
作業的記憶體需求
作業調入主存時間
作業執行結束時間
作業所在分區的起始位址
建立描述記憶體已配置設定分區的資料結構;
建立描述記憶體未配置設定的空閑分區的資料結構;
空閑分區和已配置設定分區的資訊可以使用分區表來描述。系統中所有空閑分區構成分區表,所有已配置設定分區構成配置設定分區表。
出于效率的考慮,也可使用分區鍊來記錄分區資訊。分區鍊是一種雙向連結清單,連結清單的每個結點描述一個分區的資訊。系統中所有空閑分區構成空閑分區鍊,所有已配置設定分區構成配置設定分區鍊。配置設定和回收分區時,需要在這兩個連結清單中進行結點的查找和插入、删除與修改操作。為改進算法的執行效率,可以将分區鍊按特定的順序排序。
分區鍊結點的資料結構為:
可變分區配置設定算法——最先适應配置設定算法
最先适應配置設定算法要求空閑分區按位址遞增的順序排列,在進行記憶體配置設定時,從低位址部分向高位址部分查找,直到找到一個能滿足要求的空閑分區為止。然後按作業實際大小,從該空閑區劃出一塊空間給作業,剩下的繼續留在記錄空閑分區的資料結構中。
(1) 可變分區的回收算法
當作業運作完畢釋放記憶體時,系統首先根據回收分區的首位址,在配置設定分區表(鍊)中找到相應的分區結點,摘下該結點并插入空閑分區表(鍊),插入時應該根據插入點附近空閑分區的情況進行處理,主要有以下幾種情況:
回收區與插入點的前一分區相鄰接,将這兩個分區合并為一個;
回收區與插入點的後一分區相鄰接,将這兩個分區合并為一個;
回收區與插入點的前後分區均相鄰接,将這三個分區合并為一個;
回收區與插入點的前後分區均不鄰接,将這兩個分區合并為一個。
3. 實驗内容
(1)程式設計實作簡單的可變分區配置設定存儲管理系統。要求:
a) 建立描述作業和記憶體分區的資料結構。
b) 初始資訊輸入,包括記憶體初始大小、各作業資訊、使用哪種分區配置設定算法等。這些資訊可以直接從鍵盤上輸入,也可以從檔案讀取。
c) 程式實作最先适應配置設定算法,程式初始化或運作過程中都應能指定算法。
d) 程式設計實作分區回收算法,對實驗列出的幾種分區回收情況都應該能處理。
(2)使用本程式執行下面的一批作業,觀察記憶體的配置設定和回收情況。系統可用記憶體的大小為2560K。
作業号
到達時間
執行時間
要求執行時間
J1
15
600K
J2
1
8
1000K
J3
2
40
300K
J4
3
30
700K
J5
4
20
500K
4. 實驗步驟
i. 選用合适的實驗程式開發環境。
ii. 設計程式結構,規劃程式功能。
iii. 完成程式的編碼與測試。
iv. 設計實驗資料。
v. 針對實驗資料運作程式,并将結果記錄在實驗報告上。
5.實驗代碼: