實驗四可變分區(qū)存儲管理方式的內(nèi)存分配和回收

實驗四可變分區(qū)存儲管理方式的內(nèi)存分配和回收

ID:12628051

大?。?.59 MB

頁數(shù):8頁

時間:2018-07-18

實驗四可變分區(qū)存儲管理方式的內(nèi)存分配和回收_第1頁
實驗四可變分區(qū)存儲管理方式的內(nèi)存分配和回收_第2頁
實驗四可變分區(qū)存儲管理方式的內(nèi)存分配和回收_第3頁
實驗四可變分區(qū)存儲管理方式的內(nèi)存分配和回收_第4頁
實驗四可變分區(qū)存儲管理方式的內(nèi)存分配和回收_第5頁
資源描述:

《實驗四可變分區(qū)存儲管理方式的內(nèi)存分配和回收》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。

1、實驗四實驗四可變分區(qū)存儲管理方式的內(nèi)存分配和回收一.實驗?zāi)康耐ㄟ^編寫和調(diào)試存儲管理的模擬程序以加深對存儲管理方案的理解,熟悉可變分區(qū)存儲管理的內(nèi)存分配和回收。二.實驗屬性設(shè)計三.實驗內(nèi)容1.確定內(nèi)存空間分配表;2.采用最優(yōu)適應(yīng)算法完成內(nèi)存空間的分配和回收;3.編寫主函數(shù)對所做工作進行測試。四.實驗背景材料實現(xiàn)可變分區(qū)的分配和回收,主要考慮的問題有三個:第一,設(shè)計記錄內(nèi)存使用情況的數(shù)據(jù)表格,用來記錄空閑區(qū)和作業(yè)占用的區(qū)域;第二,在設(shè)計的數(shù)據(jù)表格基礎(chǔ)上設(shè)計內(nèi)存分配算法;第三,在設(shè)計的數(shù)據(jù)表格基礎(chǔ)上設(shè)計內(nèi)存回收算法。首先,考慮第一個問題,設(shè)計記

2、錄內(nèi)存使用情況的數(shù)據(jù)表格,用來記錄空間區(qū)和作業(yè)占用的區(qū)域。由于可變分區(qū)的大小是由作業(yè)需求量決定的,故分區(qū)的長度是預(yù)先不固定的,且分區(qū)的個數(shù)也隨內(nèi)存分配和回收變動??傊?,所有分區(qū)情況隨時可能發(fā)生變化,數(shù)據(jù)表格的設(shè)計必須和這個特點相適應(yīng)。由于分區(qū)長度不同,因此設(shè)計的表格應(yīng)該包括分區(qū)在內(nèi)存中的起始地址和長度。由于分配時空閑區(qū)有時會變成兩個分區(qū):空閑區(qū)和已分分區(qū),回收內(nèi)存分區(qū)時,可能會合并空閑分區(qū),這樣如果整個內(nèi)存采用一張表格記錄己分分區(qū)和空閑區(qū),就會使表格操作繁瑣。分配內(nèi)存時查找空閑區(qū)進行分配,然后填寫己分配區(qū)表,主要操作在空閑區(qū);某個作業(yè)執(zhí)行

3、完后,將該分區(qū)變成空閑區(qū),并將其與相鄰的空閑區(qū)合并,主要操作也在空閑區(qū)。由此可見,內(nèi)存的分配和回收主要是對空閑區(qū)的操作。這樣為了便于對內(nèi)存空間的分配和回收,就建立兩張分區(qū)表記錄內(nèi)存使用情況,一張表格記錄作業(yè)占用分區(qū)的“己分分區(qū)表”;一張是記錄空閑區(qū)的“空閑區(qū)表”。這兩張表的實現(xiàn)方法一般有兩種:一種是鏈表形式,一種是順序表形式。在實驗中,采用順序表形式,用數(shù)組模擬。由于順序表的長度必須提前固定,所以無論是“已分分區(qū)表”還是“空閑區(qū)表”都必須事先確定長度。它們的長度必須是系統(tǒng)可能的最大項數(shù)?!耙逊址謪^(qū)表”的結(jié)構(gòu)定義#definen10//假定

4、系統(tǒng)允許的最大作業(yè)數(shù)量為nstruct{floataddress;//已分分區(qū)起始地址floatlength;//已分分區(qū)長度、單位為字節(jié)intflag;//已分分區(qū)表登記欄標(biāo)志,“0”表示空欄目,實驗中只支持一個字符的作業(yè)名}used_table[n];//已分分區(qū)表“空閑區(qū)表”的結(jié)構(gòu)定義#definem10//假定系統(tǒng)允許的空閑區(qū)最大為mstruct{floataddress;//空閑區(qū)起始地址floatlength;//空閑區(qū)長度、單位為字節(jié)intflag;//空閑區(qū)表登記欄標(biāo)志,“0”表示空欄目,“1”表示未分配}used_tab

5、le[n];//空閑區(qū)表第二,在設(shè)計的數(shù)據(jù)表格基礎(chǔ)上設(shè)計內(nèi)存分配。裝入一個作業(yè)時,從空閑區(qū)表中查找滿足作業(yè)長度的未分配區(qū),如大于作業(yè),空閑區(qū)劃分成兩個分區(qū),一個給作業(yè),一個成為小空閑分區(qū)。實驗中內(nèi)存分配的算法采用“最優(yōu)適應(yīng)”算法,即選擇一個能滿足要求的最小空閑分區(qū)??勺兎謪^(qū)方式的內(nèi)存分配流程如圖。第三,在設(shè)計的數(shù)據(jù)表格基礎(chǔ)上設(shè)計內(nèi)存回收問題。內(nèi)存回收時若相鄰有空閑分區(qū)則合并空閑區(qū),修改空閑區(qū)表??勺兎謪^(qū)方式的內(nèi)存回收流程如圖。五.實驗報告1.寫出你編寫的C語言程序。2.描述可變分區(qū)存儲管理的算法和思路。3.總結(jié)體會可變分區(qū)存儲管理方法。六

6、、參考程序#definen10//假定系統(tǒng)允許的最大作業(yè)數(shù)量為n#definem10//假定系統(tǒng)允許的空閑區(qū)最大為m#defineminisize100struct{floataddress;//已分分區(qū)起始地址floatlength;//已分分區(qū)長度、單位為字節(jié)intflag;//已分分區(qū)表登記欄標(biāo)志,“0”表示空欄目,實驗中只支持一個字符的作業(yè)名}used_table[n];//已分分區(qū)表struct{floataddress;//空閑區(qū)起始地址floatlength;//空閑區(qū)長度、單位為字節(jié)intflag;//空閑區(qū)表登記欄標(biāo)志,

7、“0”表示空欄目,“1”表示未分配}used_table[n];//空閑區(qū)表allocate(J,xk)//采用最優(yōu)分配算法分配xk大小的空間charJ;floatxk;{inti,k;floatad;k=-1;for(i=0;i=xk&&free_table[i].flag==1)if(k==-1

8、

9、free_table[i].length

10、ntf("無可用的空閑區(qū)");return;}//找到可用空閑區(qū),開始分配;若空閑區(qū)大小與要求分配的空間差小于minisize大小,則空閑區(qū)全部分配;//若空閑區(qū)大小與要求分配的空間差大于

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動畫的文件,查看預(yù)覽時可能會顯示錯亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負(fù)責(zé)整理代發(fā)布。如果您對本文檔版權(quán)有爭議請及時聯(lián)系客服。
3. 下載前請仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時可能由于網(wǎng)絡(luò)波動等原因無法下載或下載錯誤,付費完成后未能成功下載的用戶請聯(lián)系客服處理。