實(shí)驗(yàn)二-動(dòng)態(tài)分區(qū)存儲(chǔ)管理方式的主存分配回收_第1頁(yè)
實(shí)驗(yàn)二-動(dòng)態(tài)分區(qū)存儲(chǔ)管理方式的主存分配回收_第2頁(yè)
實(shí)驗(yàn)二-動(dòng)態(tài)分區(qū)存儲(chǔ)管理方式的主存分配回收_第3頁(yè)
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、精選優(yōu)質(zhì)文檔-傾情為你奉上實(shí)驗(yàn)二 動(dòng)態(tài)分區(qū)存儲(chǔ)管理方式的內(nèi)存分配回收一、實(shí)驗(yàn)?zāi)康纳钊肓私鈩?dòng)態(tài)分區(qū)存儲(chǔ)管理方式內(nèi)存分配回收的實(shí)現(xiàn)。二、實(shí)驗(yàn)主要內(nèi)容 編寫程序完成動(dòng)態(tài)分區(qū)存儲(chǔ)管理方式的內(nèi)存分配回收的實(shí)現(xiàn)。實(shí)現(xiàn)具體內(nèi)容包括:首先確定內(nèi)存空間分配表;然后采用最優(yōu)適應(yīng)算法完成內(nèi)存空間的分配與回收;最后編寫主函數(shù)對(duì)所做工作進(jìn)行測(cè)試。三、實(shí)驗(yàn)原理 動(dòng)態(tài)分區(qū)管理方式預(yù)先不將內(nèi)存劃分成幾個(gè)區(qū)域,而把內(nèi)存除操作系統(tǒng)占用區(qū)域外的空間看作一個(gè)大的空閑區(qū)。當(dāng)作業(yè)要求裝入內(nèi)存時(shí),根據(jù)作業(yè)需要內(nèi)存空間的大小查詢內(nèi)存內(nèi)各個(gè)空閑區(qū),當(dāng)從內(nèi)存空間中找到一個(gè)大于或等于該作業(yè)大小的內(nèi)存空間區(qū)時(shí),選擇其中一個(gè)空閑區(qū),按作業(yè)要求劃出一個(gè)

2、分區(qū)裝入該作業(yè)。作業(yè)執(zhí)行完后,它所占用的內(nèi)存空間被收回,成為一個(gè)空閑區(qū)。如果該空閑區(qū)的相鄰分區(qū)也是空閑區(qū),則需要將相鄰空閑區(qū)合并成一個(gè)空閑區(qū)。四、實(shí)驗(yàn)方法與步驟 實(shí)現(xiàn)動(dòng)態(tài)分區(qū)的分配與回收,主要考慮三個(gè)問題:第一,設(shè)計(jì)記錄內(nèi)存使用情況的數(shù)據(jù)表格,用來記錄空閑區(qū)和作業(yè)占用的區(qū)域;第二,在設(shè)計(jì)的數(shù)據(jù)表格基礎(chǔ)上設(shè)計(jì)內(nèi)存分配算法;第三,在設(shè)計(jì)的數(shù)據(jù)表格基礎(chǔ)上設(shè)計(jì)內(nèi)存回收算法。1  設(shè)計(jì)記錄內(nèi)存使用情況的數(shù)據(jù)表格由于動(dòng)態(tài)分區(qū)的大小是由作業(yè)需求量決定的,故分區(qū)的長(zhǎng)度是預(yù)先不固定的,且分區(qū)的個(gè)數(shù)也隨內(nèi)存分配和回收變動(dòng)??傊蟹謪^(qū)情況隨時(shí)可能發(fā)生變化,數(shù)據(jù)表格的設(shè)計(jì)必須和這個(gè)特點(diǎn)相適應(yīng)。由于分區(qū)長(zhǎng)

3、度不同,因此設(shè)計(jì)的表格應(yīng)該包括分區(qū)在內(nèi)存中的起始地址和長(zhǎng)度。由于分配時(shí),空閑區(qū)有時(shí)會(huì)變成兩個(gè)分區(qū):空閑區(qū)和已分分區(qū),回收內(nèi)存分區(qū)時(shí),可能會(huì)合并空閑區(qū),這樣如果整個(gè)內(nèi)存采用一張表格記錄已分分區(qū)和空閑區(qū),就會(huì)使表格操作繁瑣。內(nèi)存分配時(shí)查找空閑區(qū)進(jìn)行分配,然后填寫已分配分區(qū)表,主要操作在空閑區(qū);某個(gè)作業(yè)執(zhí)行完后,將該分區(qū)貶詞空閑區(qū),并將其與相鄰的空閑區(qū)合并,主要操作也在空閑區(qū)。由此可見,內(nèi)存的分配與回收主要是對(duì)空閑區(qū)的操作。這樣為了便于對(duì)內(nèi)存空間的分配與回收,就建立兩張分區(qū)表記錄內(nèi)存的使用情況:“已分配分區(qū)表”記錄作業(yè)占用分區(qū),“空閑區(qū)表”記錄空閑區(qū)。這兩張表的實(shí)現(xiàn)方法一般有兩種:鏈表形式、順序表形

4、式。在本實(shí)驗(yàn)中,采用順序表形式,用數(shù)組模擬。由于順序表的長(zhǎng)度必須提前固定,所以無(wú)論是“已分配區(qū)表”還是“空閑區(qū)表”都必須事先確定長(zhǎng)度。它們的長(zhǎng)度必須是系統(tǒng)可能的最大項(xiàng)數(shù),系統(tǒng)運(yùn)行過程中才不會(huì)出錯(cuò),因此在多數(shù)情況下,無(wú)論是“已分配表區(qū)”還是“空閑區(qū)表”都是空閑欄目。已分配區(qū)表中除了分區(qū)起始地址、長(zhǎng)度外,也至少還有一項(xiàng)“標(biāo)志”,如果是空閑欄目,內(nèi)容為“空”,如果為某個(gè)作業(yè)占用分區(qū)的登記項(xiàng),內(nèi)容為該作業(yè)的作業(yè)名;空閑區(qū)表除了分區(qū)起始地址、長(zhǎng)度外,也要有一項(xiàng)“標(biāo)志”,如果是空閑欄目,內(nèi)容為“空”,如果為某個(gè)空閑區(qū)的登記項(xiàng),內(nèi)容為“未分配”。在實(shí)際系統(tǒng)中,這兩個(gè)表格的內(nèi)容可能還要多,實(shí)驗(yàn)中僅僅使用上述必

5、須的數(shù)據(jù)。為此,“已分配區(qū)表”和“空閑區(qū)表”在實(shí)驗(yàn)中有如下的結(jié)構(gòu)定義。已分配區(qū)表的定義:#define n 10 /假定系統(tǒng)允許的最大作業(yè)數(shù)量為nstructfloat address; /已分分區(qū)起始地址float length; /已分分區(qū)長(zhǎng)度,單位為字節(jié)int flag; /已分配表區(qū)登記欄標(biāo)志,用0表示空欄目,used_tablen; /已分配區(qū)表空閑區(qū)表的定義:#define m 10 /假定系統(tǒng)允許的空閑區(qū)表最大為mstructfloat address; /空閑區(qū)起始地址float length; /空閑區(qū)長(zhǎng)度,單位為字節(jié)int flag; /空閑區(qū)表登記欄目用0表示空欄目,1表

6、示未分配?free_tablem; /空閑區(qū)表其中分區(qū)起始地址和長(zhǎng)度數(shù)值太大,超出了整形表達(dá)范圍,所以采用float類型。2  在設(shè)計(jì)的表格上進(jìn)行內(nèi)存分配當(dāng)要裝入一個(gè)作業(yè)時(shí),從空閑區(qū)表中查找標(biāo)志為“未分配”的空閑區(qū),從中找一個(gè)能容納該作業(yè)的空閑區(qū)。如果找到的空閑區(qū)正好等于該作業(yè)的長(zhǎng)度,則把該分區(qū)全部分配給該作業(yè)。這時(shí)應(yīng)該把該空閑區(qū)登記欄中的標(biāo)志改為“空”,同時(shí)在已分配區(qū)表中找到一個(gè)標(biāo)志為“空”的欄目登記新裝入作業(yè)所占用分區(qū)的起始地址、長(zhǎng)度和作業(yè)名。如果找到的空閑區(qū)大于作業(yè)長(zhǎng)度,則把空閑區(qū)分成兩部分,一部分用來裝入作業(yè),另一部分則仍然為空閑區(qū),這時(shí)只要修改空閑區(qū)的長(zhǎng)度,且把新裝入的作業(yè)

7、登記到已分配區(qū)表中。內(nèi)存分配算法目前一般采用三種算法:首次適應(yīng)算法、循環(huán)首次適應(yīng)算法、最佳適應(yīng)算法。本實(shí)驗(yàn)中采用最佳適應(yīng)算法為作業(yè)分配內(nèi)存。最佳適應(yīng)算法會(huì)出現(xiàn)空閑分區(qū)分割后剩下的空閑分區(qū)很小以至于無(wú)法使用的情況,為了在一定程度上解決這個(gè)問題,如果空閑分區(qū)的大小比作業(yè)要求的長(zhǎng)度略大一點(diǎn),不再將空閑區(qū)分區(qū)分割成已分分區(qū)和空閑分區(qū)兩部分,而是將整個(gè)空閑區(qū)分配給作業(yè)。 在實(shí)現(xiàn)最佳適應(yīng)算法時(shí),可把空閑分區(qū)按長(zhǎng)度遞增方式登記在空閑區(qū)表中。分配時(shí)順序查找空閑表,查找到的第一個(gè)空閑區(qū)就是滿足作業(yè)要求的最小分區(qū)。這樣查找速度快,但是為使空閑區(qū)按照長(zhǎng)度遞增登記在空閑表中,就必須在分配回收時(shí)進(jìn)行空閑區(qū)的調(diào)整??臻e區(qū)

8、表調(diào)整時(shí)移動(dòng)表項(xiàng)的代價(jià)要高于查詢整張表的代價(jià),所以實(shí)驗(yàn)中不采用空閑區(qū)有序登記在空閑表中的方法。3  動(dòng)態(tài)分區(qū)方式下的內(nèi)存回收 動(dòng)態(tài)分區(qū)方式下回收內(nèi)存空間時(shí)應(yīng)該檢查是否有與回收區(qū)相鄰的空閑區(qū)域。若有,則應(yīng)該合并成一個(gè)空閑區(qū)。一個(gè)回收區(qū)可能有上鄰空閑區(qū),也可能有下鄰空閑區(qū),或者既有上鄰空閑區(qū)又有下鄰空閑區(qū),或者既無(wú)上鄰空閑區(qū)也無(wú)下鄰空閑區(qū)。 在實(shí)現(xiàn)回收時(shí),首先將作業(yè)歸還的區(qū)域在已分配表中找到,將該欄目的狀態(tài)變?yōu)椤翱铡?,然后檢查空閑區(qū)表中標(biāo)志為“未分配”欄目,查找是否又相鄰空閑區(qū);最后合并空閑區(qū),修改空閑區(qū)表。假定歸還作業(yè)的分區(qū)起始地址為S,長(zhǎng)度為L(zhǎng),則:1)  回收區(qū)又下鄰空閑

9、區(qū)如果SL正好等于空閑區(qū)表中某個(gè)登記欄目(假定為第j欄)的起始地址則表明歸還區(qū)有一個(gè)下鄰空閑區(qū)。這時(shí)候只需要修改第j欄登記項(xiàng)的內(nèi)容: 起始地址S;第j欄長(zhǎng)度第j欄長(zhǎng)度L則第j欄指示的空閑區(qū)時(shí)歸還區(qū)和下鄰空閑區(qū)合并后的大空閑區(qū)。2)  回收區(qū)又上鄰空閑區(qū)如果空閑區(qū)表中某個(gè)登記欄目(假定為第k欄)的“起始地址長(zhǎng)度”正好等于S,則表明歸還區(qū)有一個(gè)上鄰空閑區(qū)。這時(shí)要修改第k欄登記項(xiàng)的內(nèi)容(起始地址不變): 第k欄長(zhǎng)度第k欄長(zhǎng)度L;于是第k欄指示的空閑區(qū)是歸還區(qū)和上鄰空閑區(qū)合并后的大空閑區(qū)。3)  回收區(qū)既有上鄰空閑區(qū)又有下鄰空閑區(qū)如果SL正好等于空閑區(qū)表中某個(gè)登記欄目(假定為第j欄

10、)的起始地址,同時(shí)還有某個(gè)登記欄目(假定為第k欄)的“起始地址長(zhǎng)度”正好等于S,這表明歸還區(qū)既有一個(gè)上鄰空閑區(qū)又又一個(gè)下鄰空閑區(qū)。此時(shí)對(duì)空閑區(qū)的修改如下: 第k欄的長(zhǎng)度第k欄的長(zhǎng)度第j欄的長(zhǎng)度L;(第k 欄的起始地址不變) 第j欄的狀態(tài)“空”(將第j欄的登記項(xiàng)刪除) 這樣,第k欄指示的空閑區(qū)是歸還區(qū)和上、下鄰空閑區(qū)合并后的大空閑區(qū);原來的下鄰空閑區(qū)登記項(xiàng)(第j欄)被刪除,置為“空”。4)  回收區(qū)既無(wú)上鄰空閑區(qū)又無(wú)下鄰空閑區(qū)如果在檢查空閑區(qū)表時(shí),無(wú)上述三種情況出現(xiàn),則表明歸還區(qū)既無(wú)上鄰空閑區(qū)又無(wú)下鄰空閑區(qū)。這時(shí),應(yīng)該在空閑區(qū)表中查找一個(gè)狀態(tài)為“空”的欄目(假定查到的是第t欄),則第t欄的內(nèi)容修改如下: 第t欄起始地址S; 第t欄的長(zhǎng)度L; 第t欄的狀態(tài)“未分配”;這樣,第t欄指示的空閑區(qū)是歸還區(qū)。 由于是實(shí)驗(yàn),沒有真正的內(nèi)存要分配,所以在實(shí)驗(yàn)中,首先應(yīng)建立一張空閑區(qū)表,初始狀態(tài)只有一個(gè)空閑登記項(xiàng)(假定的內(nèi)存空閑區(qū))和一張所有狀態(tài)都為“空”的已分配區(qū)表,假定內(nèi)存空間100KB,全部為空閑區(qū)(實(shí)際上操作系統(tǒng)需要占用一部分);然后,可以選擇進(jìn)行內(nèi)存分配或回收,如果是分配,要求輸入作業(yè)名和所需內(nèi)存空間大?。?/p>

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論