版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、存儲(chǔ)器管理(二)一、目的本課題實(shí)驗(yàn)的目的是,使學(xué)生實(shí)驗(yàn)存儲(chǔ)器管理系統(tǒng)的設(shè)計(jì)方法;加深對(duì)所學(xué)各種存儲(chǔ)器管理方案的了解;要求采用一些常用的存儲(chǔ)器分配算法,設(shè)計(jì)一個(gè)存儲(chǔ)器管理模擬系統(tǒng)并調(diào)試運(yùn)行。二、題目存儲(chǔ)器管理三、要求及提示1、要求采用一種常用的存儲(chǔ)器分配算法,設(shè)計(jì)一個(gè)存儲(chǔ)器管理模擬系統(tǒng)。允許進(jìn)行多次的分配和釋放,并可向用戶(hù)反饋分配和釋放情況及當(dāng)前內(nèi)存的情況;采用“命令菜單”選擇和鍵盤(pán)命令輸入的會(huì)話方式,根據(jù)輸入請(qǐng)求調(diào)用分配模塊,或回收模塊,或內(nèi)存查詢(xún)模塊,或最終退出系統(tǒng)。2、編程實(shí)現(xiàn)。3工具:語(yǔ)言或其它高級(jí)語(yǔ)言4、實(shí)驗(yàn)時(shí)間:3學(xué)時(shí)四、實(shí)驗(yàn)報(bào)告1、寫(xiě)出存儲(chǔ)器管理的思想。2、畫(huà)出算法流程圖和設(shè)置的數(shù)
2、據(jù)結(jié)構(gòu)。3、寫(xiě)出調(diào)試程序出現(xiàn)的問(wèn)題及解決的方法。4、打印實(shí)驗(yàn)報(bào)告及程序清單。5、報(bào)告給出測(cè)試的結(jié)果。五、范例采用可變分區(qū)存儲(chǔ)器管理方案的模擬系統(tǒng)。1、問(wèn)題描述該模擬系統(tǒng)的外部特性與真實(shí)系統(tǒng)基本一樣。存儲(chǔ)分配算法采用首次適應(yīng)法。用“拼,接”和“緊湊”技術(shù)來(lái)處理存儲(chǔ)器碎片。2、算法存儲(chǔ)分配算法采用首次適應(yīng)(FF)法。根據(jù)指針freep查找自由鏈,當(dāng)找到第一塊可滿(mǎn)足分配請(qǐng)求的空閑區(qū)時(shí)便分配之。當(dāng)某空閑區(qū)被分配后的剩余空閑區(qū)空間大于規(guī)定的碎片最小容量min時(shí),則形成一個(gè)較小的空閑區(qū)留在自由鏈中。回收時(shí),根據(jù)MAT將指定分區(qū)鏈入自由鏈。若該分區(qū)有前鄰或后鄰空閑分區(qū),則將他們拼接成一塊加大的空閑區(qū)。當(dāng)某個(gè)
3、分配請(qǐng)求不能被滿(mǎn)足,但此時(shí)系統(tǒng)中所有碎片總量滿(mǎn)足分配請(qǐng)求的容量時(shí),系統(tǒng)立即進(jìn)入內(nèi)存“緊湊”以消除碎片。即將各作業(yè)占用區(qū)集中下移到用戶(hù)內(nèi)存區(qū)的下部(高地址部分),形成一片連接的作業(yè)區(qū),而在用戶(hù)內(nèi)存區(qū)的上部形成一塊較大的空閑區(qū)。然后再進(jìn)行分配。本系統(tǒng)的主要程序模塊包括:分配模塊ffallocation,回收模塊ffcolection,緊湊模塊coalesce及命令處理模塊menu。Menu用以模擬系統(tǒng)的輸入,采用“命令菜單”選擇和鍵盤(pán)命令輸入的會(huì)話方式,根據(jù)輸入請(qǐng)求調(diào)用分配模塊,或回收模塊,或內(nèi)存查詢(xún)模塊,或最終退出系統(tǒng)。系統(tǒng)的主流程如圖3所示。3、數(shù)據(jù)結(jié)構(gòu)(1)自由鏈與區(qū)頭。內(nèi)存空閑區(qū)采用自由鏈
4、結(jié)構(gòu)。鏈?zhǔn)子蒮reep指向,鏈中各個(gè)空閑區(qū)按地址遞增次序排列。初啟時(shí)整個(gè)用戶(hù)內(nèi)存區(qū)為一個(gè)空閑區(qū)。在每個(gè)空閑區(qū)首部設(shè)置一個(gè)區(qū)頭(freearca)結(jié)構(gòu)。區(qū)頭信息包括:sizenextbackaddress空閑區(qū)大?。ㄒ宰止?jié)計(jì)),包括區(qū)頭所占空間;前向鏈指針,指向下一個(gè)空閑區(qū);反向鏈指針,指向上一個(gè)空閑區(qū);本空閑區(qū)首地址。用戶(hù)作業(yè)名;作業(yè)區(qū)大小;作業(yè)區(qū)首地址;(2)內(nèi)存分配表MAT。系統(tǒng)設(shè)置一個(gè)MAT,每個(gè)運(yùn)行作業(yè)都在MAT中占有一個(gè)表目,回收分區(qū)時(shí)清除相應(yīng)表目。表目信息包括:namelengthaddr4、程序清單#include#include#defineTOTAL5000#defineSE
5、TADDRESS2000#defineMIN100#defineMAX10typedefstructfreeareaintaddress;intsize;structfreearea*next;structfreearea*back;*freeptr;typedefstructmatcharname;intaddress;intlength;structmat*next;structmat*back;*jobptr;charstring10;longtotalfree;charjobnumber;freeptrfreep;jobptrjobp;/*初始化*/init()freep=(freep
6、tr)malloc(sizeof(structfreearea);freep-size=TOTAL;freep-address=SETADDRESS;freep-next=NULL;freep-back=NULL;totalfree=TOTAL;jobp=NULL;jobnumber=0;return(0);/*/fengpei(intjl,charjn)freeptrfp;jobptrjp,jp1,jp2;jp2=(jobptr)malloc(sizeof(structmat);if(totalfreesizenext;elsejobnumber=jobnumber+1;totalfree=
7、totalfree-jl;jp2-name=jn;jp2-length=jl;jp2-address=freep-address;if(jobp=NULL)jp2-next=NULL;jp2-back=NULL;elsejobp=jp2;jp=jobp;while(jp!=NULL&(jp2-addressaddress)jp1=jp;jp=jp-next;jp2-next=jp;if(jp=NULL)jp2-back=jp1;elsejp1-next=jp2;jp2-back=jp-back;if(jp-back!=NULL)jp1-next=jp2;elsejobp=jp2;jp-back
8、=jp2;if(fp-size-jl)next!=NULL)fp-next-back=fp-back;if(fp-back!=NULL)fp-back-next=fp-next;elsefreep=fp-next;/*elsereturn();*/fp-size=fp-size-jl;fp-address=fp-address+jl;return(2);if(totalfree=jl)return(0);/*顯示模塊*/xianshi()jobptrjp;/*清屏*/if(jobnumbername,jp-length,jp-address);jp=jp-next;printf(nthetot
9、alleftis%dbytes:,totalfree);/*回收模塊*/huishou(charjn)freeptrfp,fp1,fp2;jobptrjp;intf=0;jp=jobp;while(jp!=NULL)&(jp-name!=jn)jp=jp-next;if(jp!=NULL)jobnumber=jobnumber-1;totalfree=totalfree+jp-length;if(freep=NULL)freep=(freeptr)malloc(sizeof(structfreearea);freep-address=jp-address;freep-size=jp-addre
10、ss;freep-next=NULL;freep-back=NULL;elsefp=freep;while(fp!=NULL)&(fp-addressaddress)fp1=fp;fp=fp-next;if(fp!=NULL)if(fp-next!=NULL)&(fp-next-address=jp-address+jp-length)f=f+1;if(fp-back!=NULL)&(jp-address=fp1-address+fp1-size)f=f+2;elseif(jp-address)=(fp1-address+fp1-size)f=f+2;switch(f)case0:fp2=(f
11、reeptr)malloc(sizeof(structfreearea);fp2-address=jp-address;fp2-size=jp-length;fp2-next=fp;if(fp!=NULL)fp2-back=fp-back;if(fp-back!=NULL)fp1-next=fp2;elsefreep=fp2;fp-back=fp2;elsefp2-back=fp1;fp1-next=fp2;fp-size=fp-size+jp-length;fp-address=jp-address;fp1-size=fp1-size+jp-length;fp1-size=fp1-size+
12、jp-length+fp-size;fp1-next=fp-next;if(fp-next!=NULL)fp-next-back=fp2;free(fp);if(jp=jobp)jobp=jp-next;if(jp-next!=NULL)jp-next-back=jp-back;if(jp-back!=NULL)jp-back-next=jp-next;free(jp);banjia()freeptrfp,fp1;jobptrjp;longbottom;if(jobnumber0)jp=jobp;bottom=TOTAL+SETADDRESS;while(jp!=NULL)jp-address
13、=bottom-jp-length;bottom=bottom-jp-length;jp=jp-next;fp=freep;while(fp!=NULL)fp1=fp;fp=fp-next;free(fp1);freep=(freeptr)malloc(sizeof(freeptr);freep-size=totalfree;freep-address=SETADDRESS;freep-next=NULL;freep-back=NULL;mingling()charname,anykey,jobname;intlength,select;intaddress;a1:printf(youcans
14、electoneofthefollowing:n);printf(1)requiretobeallocaten);printf(2)requiretocollextethesizen);printf(3)checkthememoryn);printf(4)quitsystemn);printf(youselectis:);scanf(%d,&select);switch(select)case1:if(jobnumber=MAX)printf(thejobistoomany);elseprintf(enteryoujobnamen);scanf(%s,&name);printf(enteryo
15、urjoblengthn);scanf(%10d,&length);address=fengpei(length,name);switch(address)case1:printf(thememoryisfull);break;case0:banjia();fengpei(length,name);xianshi();break;case2:xianshi();break;/*elsexianshi();*/break;printf(enterthenameofthejobn);printf(youselectis:);jobname=getchar();jobname=getchar();h
16、uishou(jobname);xianshi();break;xianshi();break;gotoa2;printf(npressentertoreturnmenun);anykey=getchar();anykey=getchar();/*scanf(%c,anykey);*/gotoa1;a2:printf(youhaveexitthesystem!);main()init();mingling();5、程序運(yùn)行結(jié)果本程序用TurboC語(yǔ)言編寫(xiě),運(yùn)行結(jié)果如下:youcanselectoneofthefollowing:requiretobeallocate。requiretocoll
17、ectethesize。checkthememory。quit。youselect:1enteryourjobname:job1enteryourjoblength:1000namelegth(b)addressjob110002000thetotalleftis:4000bytespressanykeytoreturnmenu.youselect:1enteryourjobname:job4enteryourjoblength:900namelegth(b)addressjob49005900job37005200job222003000job110002000thetotalleftis:200bytesyouselect:2enterthenameofthejob:job2namelegth(b)addressTOC o 1-5 h zjob49005900job37005200job110002000thetota1leftis:2400bytesyouselect:1enteryourjobname:job5enteryourjoblength:2300namelength(b)addressTOC o 1-5 h zjob49006100job370054000job11
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 采購(gòu)營(yíng)養(yǎng)土種植合同模板
- 活立木采伐合同模板
- 挖土施工合同模板
- 采購(gòu)魷魚(yú)原料合同模板
- 固體飲料代工合同模板
- 暖氣試水打壓合同模板
- 鋼筋制安工程合同模板
- 雪地靴訂貨合同模板
- 公墓養(yǎng)護(hù)合同模板
- 綠化施工合同模板最近
- 故鄉(xiāng)雨正普五線譜(正譜)
- 壓力管道檢驗(yàn)員在線考試習(xí)題與答案
- 《語(yǔ)文青蛙看?!穚pt課件
- 河湖生態(tài)系統(tǒng)保護(hù)與修復(fù)工程技術(shù)導(dǎo)則 SLT800-2020_(高清-有效)
- 愛(ài)護(hù)我們的牙齒PPT
- 日語(yǔ)名大全(附帶中文和英語(yǔ)翻譯)
- 2022年小學(xué)數(shù)學(xué)因數(shù)與倍數(shù)、質(zhì)數(shù)與合數(shù)練習(xí)題答案2
- 超星爾雅學(xué)習(xí)通《就業(yè)指導(dǎo)》章節(jié)測(cè)試答案
- 月度會(huì)議ppt模板
- 成都銀花絲首飾消費(fèi)特征分析
- 社區(qū)衛(wèi)生服務(wù)中心安全生產(chǎn)自查表
評(píng)論
0/150
提交評(píng)論