1.固定分區存儲管理算法
固定分區存儲管理是預先把可分配的主存儲器空間分割成若干個連續區域,每一個區域的大小能夠相同,也能夠不一樣。 spa
爲了說明各分區的分配和使用狀況,存儲管理需設置一張「主存分配表」,該表如圖6-4所示。設計
分區號ci |
起始地址table |
長度程序設計 |
佔用標誌搜索 |
1程序 |
8K方法 |
8Kim |
0 |
2 |
16K |
16K |
Job1 |
3 |
32K |
16K |
0 |
4 |
48K |
64K |
0 |
5 |
64K |
32K |
Job2 |
6 |
96K |
32K |
0 |
圖6-4 固定分區存儲管理的主存分配表
主存分配表指出各分區的起始地址和長度,表中的佔用標誌位用來指示該分區是否被佔用了,當佔用的標誌位爲「0」時,表示該分區還沒有 被佔用。進行主存分配時老是選擇那些標誌爲「0」的分區,當某一分區分配給一個做業後,則在佔用標誌欄填上佔用該分區的做業名,在圖6-4中,第2、5分區分別被做業Job1和Job2佔用,而其他分區爲空閒。
因爲固定分區存儲管理是預先將主存分割成若干個區,若是分割時各區的大小是按順序排列的,如圖6-3,那麼固定分區存儲管理的主存分配算法十分簡單,有興趣的同窗能夠把它做爲課後練習。
固定分區存儲管理的地址轉換能夠採用靜態定位方式,裝入程序在進行地址轉換時檢查其絕對地址是否在指定的分區中,如果,則可把程序裝入,不然不能裝入,且應歸還所分析的區域。固定分區方式的主存去配很簡單,只需將主存分配表中相應分區的佔用標誌位置成「0」便可。
採用固定分區存儲管理,主存空間的利用不高,例如圖6-4中若Job1和Job2兩個做業實際只是10K和18K的主存,但它們卻佔用了16K和32K的區域,共有20K的主存區域佔而不用,因此這種分配方式存儲空間利用率不高,然而這種方法簡單,所以,對於程序大小和出現頻繁次數已知的情形,仍是合適的。例如IBM的OS/MFT,它是任務數固定的多道程序設計系統,它的主存分配就採用固定分區方式。
2 可變分區存儲管理
可變分區方式是按做業的大小來劃分分區。當要裝入一個做業時,根據做業須要的主存量查看主存中是否有足夠的空間,如有,則按須要量分割一個分區分配給該做業;若無,則令該做業等待主存空間。因爲分區的大小是按做業的實際須要量來定的,且分區的個數也是隨機的,因此能夠克服固定分區方式中的主存空間的浪費。
隨着做業的裝入、撤離,主存空間被分紅許多個分區,有的分區被做業佔用,而有的分區是空閒的。當一個新的做業要求裝入時,必須找一個足夠大的空閒區,把做業裝入該區,若是找到的空閒區大於做業須要量,則做業裝入後又把原來的空閒區分紅兩部分,一部分給做業佔用了;另外一部分又分紅爲一個較小的空閒區。當一做主行結束撤離時,它歸還的區域若是與其它空閒區相鄰,則可合成一個較大的空閒區,以利大做業的裝入。採用採用可變分區方式的主存分配示例如圖6-6。
從圖6-6能夠看出,主存中分區的數目和大小隨做業的執行而不斷改變。爲了方便主存的分配和去配,主存分配表可由兩張表格組成,一張 已分配區的狀況表,另外一張是未分配區的狀況表,如圖6-7。
分區號 |
起始地址 |
長度 |
標誌 |
1 |
4K |
6K |
Job1 |
2 |
46K |
6K |
Job2 |
|
|
|
|
(a)已分配區狀況表
分區號 |
起始地址 |
長度 |
標誌 |
1 |
10K |
36K |
未分配 |
2 |
52K |
76K |
未分配 |
(b)未分配區狀況表
圖6-7 可變分區存儲管理的主存分配表
圖6-7的兩張表的內容是按圖6-6最左邊的狀況填寫的,當要裝入長度爲30K的做業時,從未分配狀況表中可找一個足夠容納它的長度 36K的人.空閒區,將該區分紅兩部分,一部分爲30K,用來裝入做業3,成爲已分配區;另外一部分爲6K,還是空閒區。這時,應從已分配區狀況表中找一個空欄目登記做業3佔用的起址、長度,同時修改未分配區狀況表中空閒區的長度和起址。看成業撤離時則已分配區狀況表中的相應狀態改爲「空」,而將收回的分區登記到未分配狀況表中,如有相鄰空宋區則將其連成一片後登記。因爲分區的個數不定,因此表格應組織成鏈表。
3 分區存儲管理的放置策略
3.1經常使用的可變分區管理方式的分配算法有:
1)首次適應算法。對可變分區方式可採用首次適應算法,每次分配時,老是順序查找未分配表,找到第一個能知足長度要求的空閒區爲止。分割這個找到的未分配區,一部分分配給做業,另外一部分仍爲空閒區。這種分配算法可能將大的空間分割成小區,形成較多的主存「碎片」。做爲改進,可把空閒區按地址從小到大排列在未分配表中,因而爲做業分配主存空間時,儘可能利用了低地址部分的區域,而可以使高地址部分保持一個大的空閒區,有利於大做業的裝入。可是,這給收回分區帶來一些麻煩,每次收回一個分區後,必須搜索未分配區表來肯定它在表格中的位置且要移動表格中的登記 。
2)最佳適應算法。可變分區方式的另外一種分配算法是最佳適應算法,它是從空閒區中挑選一個能知足做業要求的最小分區,這樣可保證不去分割一個更大的區域,使裝入大做業時比較容易獲得知足。採用這種分配算法時可把空閒區按大小以遞增順利排列,查找時老是從最小的一個區開始,直到找到一個知足要求的區爲止。按這種方法,在收回一個分區時也必須對錶格從新排列。最優適應分配算法找出的分區若是正好知足要求則是最合適的了,若是比所要求的略大則分割後使剩下的空閒區就很小,以至沒法使用。
3)最壞適應算法。最壞適應算法 是挑選一個最大的空閒區分割給做業使用,這樣可以使剩下的空閒區不至於過小,這種算法對中、小做業是有利的。採用這種分配算法時可把空閒區按大小以遞減順利排列,查找時老是從最大的一個區開始。按這種方法,在收回一個分區時也必須對錶格從新排列。
3.2 移動技術
當在未分配表中找不到一個足夠大的空閒區來裝入做業時,可採用移動技術把在主存中的做業改變存放區域,同時修改它們的基址/限長值,從而使分散的空閒區聚集成一片而有利於做業的裝入。
移動雖可聚集主存的空閒區,但也增長了系統的開銷,並且不是任什麼時候候都能對一道程序進行移動的。因爲外圍設備與主存儲器交換信息時,通道老是按已經肯定的主存絕對地址完成信息傳輸的。因此當一道程序正在與外圍設備交換數據時每每不能移動。