




版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、實(shí)驗(yàn)報(bào)告學(xué)院(系)名稱(chēng):計(jì)算機(jī)與通信工程學(xué)院姓名張君卓學(xué)號(hào)20135612專(zhuān)業(yè)計(jì)算機(jī)科學(xué)與技術(shù)班級(jí)2013級(jí)1班實(shí)驗(yàn)項(xiàng)目實(shí)驗(yàn)二:存儲(chǔ)器的分配與回收算法實(shí)現(xiàn)課程名稱(chēng)操作系統(tǒng)課程代碼0668036實(shí)驗(yàn)時(shí)間2015 年11月13日 第5、6節(jié)2011 年12月1 日 第3、4節(jié)2011 年12月5 日 第7、8節(jié)實(shí)驗(yàn)地點(diǎn)軟件實(shí)驗(yàn)室7-216軟件實(shí)驗(yàn)室7-219軟件實(shí)驗(yàn)室7-215批改意見(jiàn)成績(jī)教師簽字: 實(shí)驗(yàn)內(nèi)容:1. 模擬操作系統(tǒng)的主存分配,運(yùn)用可變分區(qū)的存儲(chǔ)管理算法設(shè)計(jì)主存分配和回收程序,并不實(shí)際啟動(dòng)裝入作業(yè)。2. 采用最先適應(yīng)法、最佳適應(yīng)法、最壞適應(yīng)法分配主存空間。3. 當(dāng)一個(gè)新作業(yè)要求裝入主存
2、時(shí),必須查空閑區(qū)表,從中找出一個(gè)足夠大的空閑區(qū)。若找到的空閑區(qū)大于作業(yè)需要量,這是應(yīng)把它分成二部分,一部分為占用區(qū),加一部分又成為一個(gè)空閑區(qū)。4. 當(dāng)一個(gè)作業(yè)撤離時(shí),歸還的區(qū)域如果與其他空閑區(qū)相鄰,則應(yīng)合并成一個(gè)較大的空閑區(qū),登在空閑區(qū)表中。5. 運(yùn)行所設(shè)計(jì)的程序,輸出有關(guān)數(shù)據(jù)結(jié)構(gòu)表項(xiàng)的變化和內(nèi)存的當(dāng)前狀態(tài)。實(shí)驗(yàn)要求:1 詳細(xì)描述實(shí)驗(yàn)設(shè)計(jì)思想、程序結(jié)構(gòu)及各模塊設(shè)計(jì)思路;2 詳細(xì)描述程序所用數(shù)據(jù)結(jié)構(gòu)及算法;3 明確給出測(cè)試用例和實(shí)驗(yàn)結(jié)果;4 為增加程序可讀性,在程序中進(jìn)行適當(dāng)注釋說(shuō)明;5 認(rèn)真進(jìn)行實(shí)驗(yàn)總結(jié),包括:設(shè)計(jì)中遇到的問(wèn)題、解決方法與收獲等;6 實(shí)驗(yàn)報(bào)告撰寫(xiě)要求結(jié)構(gòu)清晰、描述準(zhǔn)確邏輯性強(qiáng);
3、7 實(shí)驗(yàn)過(guò)程中,同學(xué)之間可以進(jìn)行討論互相提高,但絕對(duì)禁止抄襲。【實(shí)驗(yàn)過(guò)程記錄(源程序、測(cè)試用例、測(cè)試結(jié)果及心得體會(huì)等)】#include <iostream>#include <malloc.h>#include <stdlib.h>using namespace std;typedef struct FreeLink/定義自由鏈struct FreeLink *prior;char name;int start;int size;bool flag;struct FreeLink *next;* ptr,*head;head top;ptr p;void
4、print()/將內(nèi)存分配情況打印到屏幕上p=top;cout<<"*內(nèi)存分配情況表*"<<endl;cout<<"區(qū)號(hào)tt"<<"起始位置t"<<"區(qū)間長(zhǎng)度t"<<"區(qū)間狀態(tài)t"<<endl;docout<<p->name<<"tt"<<p->start<<"tt"<<p->size<&l
5、t;"tt"if(p->flag=false)cout<<"空閑"<<endl;elsecout<<"已占用"<<endl;p=p->next;while(p!=NULL);void clear()/結(jié)束操作時(shí)清空“內(nèi)存”以備其他操作dop=top;top=top->next;free(p);while(top!=NULL);void asc(ptr &p)/最佳適應(yīng)法的內(nèi)存分配函數(shù)int min;ptr op;FreeLink *fl=(FreeLink *)
6、malloc(sizeof(FreeLink);cout<<"請(qǐng)輸入要分配內(nèi)存的進(jìn)程名"<<endl;cin>>fl->name;cout<<"請(qǐng)輸入要分配內(nèi)存的大小"<<endl;cin>>fl->size;min=256;fl->flag=true;doif(p->flag=false&&p->size<=min&&p->size>=fl->size)min=p->size;op=p;p=
7、p->next;while(p!=NULL);if(op->size>fl->size) fl->start=op->start; op->start=fl->start+fl->size; op->size=op->size-fl->size; fl->next=op; fl->prior=op->prior; op->prior->next=fl; op->prior=fl; goto flag1;if(op->size=fl->size) op->flag=fl-
8、>flag; op->name=fl->name; free(fl); goto flag1;cout<<"內(nèi)存過(guò)小,分配失?。?quot;<<endl;goto flag2;flag1: cout<<"分配成功!"<<endl;flag2: ;void dec(ptr &p)/最壞適應(yīng)法的內(nèi)存分配函數(shù)int max;ptr op;FreeLink *fl=(FreeLink *)malloc(sizeof(FreeLink);cout<<"請(qǐng)輸入要分配內(nèi)存的進(jìn)程名&q
9、uot;<<endl;cin>>fl->name;cout<<"請(qǐng)輸入要分配內(nèi)存的大小"<<endl;cin>>fl->size;max=fl->size;fl->flag=true;doif(p->flag=false&&p->size>=max)max=p->size;op=p;p=p->next;while(p!=NULL);if(op->size>fl->size) fl->start=op->start;
10、op->start=fl->start+fl->size; op->size=op->size-fl->size; fl->next=op; fl->prior=op->prior; op->prior->next=fl; op->prior=fl; goto flag3;if(op->size=fl->size) op->flag=fl->flag; op->name=fl->name; free(fl); goto flag3;cout<<"內(nèi)存過(guò)小,分配失敗!
11、"<<endl;goto flag4;flag3: cout<<"分配成功!"<<endl;flag4: ;void splice(ptr &p)/若被操作的內(nèi)存有相鄰空閑區(qū)則將空閑區(qū)拼接合并int x;if(p->prior->flag=false&&p->next->flag=false)x=1;if(p->prior->flag=false&&p->next->flag=true)|(p->prior->flag=false
12、&&p->next=NULL)x=2;if(p->prior->flag=true&&p->next->flag=false)|(p->prior=NULL&&p->next->flag=false)x=3;if(p->prior->flag=true&&p->next->flag=true)|(p->prior=NULL&&p->next->flag=true)|(p->prior->flag=true&
13、&p->next=NULL)x=4; switch(x)case 1:p->next->prior=p->prior; p->prior->next=p->next; p->prior->size=p->prior->size+p->size+p->next->size; p->prior->next=p->next->next; if(p->next->next!=NULL)p->next->next->prior=p->next->p
14、rior; free(p->next); free(p); break; case 2:if(p->next=NULL) p->prior->next=p->next; else p->next->prior=p->prior; p->prior->next=p->next; p->prior->size=p->prior->size+p->size; free(p); break;case 3:if(p->prior=NULL) top=p->next; p->next->
15、prior=NULL; p->next->start=p->start; p->next->size=p->next->size+p->size; else p->next->prior=p->prior; p->prior->next=p->next;p->next->start=p->start; p->next->size=p->next->size+p->size; free(p); break;case 4:p->name='' p
16、->flag=false; break; void allocate(ptr &p)/最先適應(yīng)法的內(nèi)存分配函數(shù)FreeLink *fl=(FreeLink *)malloc(sizeof(FreeLink);cout<<"請(qǐng)輸入要分配內(nèi)存的進(jìn)程名"<<endl;cin>>fl->name;cout<<"請(qǐng)輸入要分配內(nèi)存的大小"<<endl;cin>>fl->size;fl->flag=true;doif(p->flag=false&&am
17、p;p->size>fl->size) fl->start=p->start; p->start=fl->start+fl->size; p->size=p->size-fl->size; fl->next=p; fl->prior=p->prior; p->prior->next=fl; p->prior=fl; goto a;if(p->flag=false&&p->size=fl->size) p->flag=fl->flag; p->
18、name=fl->name; free(fl); goto a;p=p->next;while(p!=NULL);cout<<"內(nèi)存過(guò)小,分配失??!"<<endl;goto b;a: cout<<"分配成功!"<<endl;b: ; void recover(ptr &p)/內(nèi)存回收函數(shù)char n = ' 'cout<<"請(qǐng)輸入要回收的內(nèi)存對(duì)應(yīng)的進(jìn)程名"cin>>n;do if(p->flag=true&&
19、;p->name=n)splice(p); goto c; p=p->next;while(p!=NULL);cout<<"內(nèi)存并未分配給對(duì)應(yīng)進(jìn)程,回收失??!"<<endl;goto d;c: cout<<"內(nèi)存回收成功!"<<endl;d: ;int ffa()/最先適應(yīng)法char choice=' 'print();ptr pcb=(FreeLink *)malloc(sizeof(FreeLink);pcb->next=top;pcb->prior=top-&g
20、t;prior; top->prior=pcb;pcb->start=top->start;cout<<"請(qǐng)輸入要為系統(tǒng)分配的內(nèi)存塊名"<<endl;cin>>pcb->name;cout<<"請(qǐng)輸入要分配內(nèi)存的大小"<<endl; goto f;e:cout<<"超過(guò)內(nèi)存最大容量請(qǐng)重新輸入要分配內(nèi)存的大小"<<endl;f:cin>>pcb->size;if(pcb->size>256) goto
21、 e;top->size=top->size-pcb->size;top=pcb;top->flag=true;top->next->start+=top->size;print();while(true)dop=top->next;cout<<"請(qǐng)從下列選項(xiàng)中進(jìn)行選擇"<<endl;cout<<"1.分配內(nèi)存"<<endl;cout<<"2.回收內(nèi)存"<<endl;cout<<"3.結(jié)束操作&
22、quot;<<endl;cout<<"請(qǐng)輸入你的選擇"cin>>choice;while(choice!='1'&&choice!='2'&&choice!='3');switch(choice)case '1':allocate(p);print();break;case '2':recover(p);print();break;case '3':clear();return 0;break;int bfa()
23、/最佳適應(yīng)法char choice=' 'print();ptr pcb=(FreeLink *)malloc(sizeof(FreeLink);pcb->next=top;pcb->prior=top->prior; top->prior=pcb;pcb->start=top->start;cout<<"請(qǐng)輸入要為系統(tǒng)分配的內(nèi)存塊名"<<endl;cin>>pcb->name;cout<<"請(qǐng)輸入要分配內(nèi)存的大小"<<endl; got
24、o h;g:cout<<"超過(guò)內(nèi)存最大容量請(qǐng)重新輸入要分配內(nèi)存的大小"<<endl;h:cin>>pcb->size;if(pcb->size>256) goto g;top->size=top->size-pcb->size;top=pcb;top->flag=true;top->next->start+=top->size;print();while(true)dop=top->next;cout<<"請(qǐng)從下列選項(xiàng)中進(jìn)行選擇"<&l
25、t;endl;cout<<"1.分配內(nèi)存"<<endl;cout<<"2.回收內(nèi)存"<<endl;cout<<"3.結(jié)束操作"<<endl;cout<<"請(qǐng)輸入你的選擇"cin>>choice;while(choice!='1'&&choice!='2'&&choice!='3');switch(choice)case '1'
26、:asc(p);print();break;case '2':recover(p);print();break;case '3':clear();return 0;break;int wfa()/最壞適應(yīng)法char choice=' 'print();ptr pcb=(FreeLink *)malloc(sizeof(FreeLink);pcb->next=top;pcb->prior=top->prior; top->prior=pcb;pcb->start=top->start;cout<<&q
27、uot;請(qǐng)輸入要為系統(tǒng)分配的內(nèi)存塊名"<<endl;cin>>pcb->name;cout<<"請(qǐng)輸入要分配內(nèi)存的大小"<<endl; goto j;i:cout<<"超過(guò)內(nèi)存最大容量請(qǐng)重新輸入要分配內(nèi)存的大小"<<endl;j:cin>>pcb->size;if(pcb->size>256) goto i;top->size=top->size-pcb->size;top=pcb;top->flag=true;t
28、op->next->start+=top->size;print();while(true)dop=top->next;cout<<"請(qǐng)從下列選項(xiàng)中進(jìn)行選擇"<<endl;cout<<"1.分配內(nèi)存"<<endl;cout<<"2.回收內(nèi)存"<<endl;cout<<"3.結(jié)束操作"<<endl;cout<<"請(qǐng)輸入你的選擇"cin>>choice;while(choice!='1'&&choice!='2'&&choice!='3');switch(choice)case '1':dec(p);print();break;case '2':recover(p);print();break;case '3':clear();return 0;break;int main()/主函數(shù)cha
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- BP-Fluor-555-azide-生命科學(xué)試劑-MCE
- 義務(wù)教育道德與法治課程標(biāo)準(zhǔn)(2022年版)
- 定期報(bào)告:六月繼續(xù)震蕩偏強(qiáng)結(jié)構(gòu)性行情依舊
- 2025中國(guó)“雙一流”高校醫(yī)學(xué)建設(shè)數(shù)據(jù)分析報(bào)告
- 2025年零售門(mén)店運(yùn)營(yíng)數(shù)字化技術(shù)應(yīng)用:智能化客服與體驗(yàn)提升報(bào)告
- 2025年工業(yè)廢氣深度凈化技術(shù)產(chǎn)業(yè)鏈上下游協(xié)同發(fā)展研究報(bào)告
- 醫(yī)療行業(yè)大數(shù)據(jù)隱私保護(hù)技術(shù)在疾病預(yù)測(cè)中的應(yīng)用報(bào)告
- 教育投資并購(gòu)2025戰(zhàn)略布局報(bào)告:整合策略與行業(yè)洞察
- 2025年生物質(zhì)能源在微電網(wǎng)分布式能源系統(tǒng)中的應(yīng)用前景與優(yōu)化策略報(bào)告
- 工業(yè)互聯(lián)網(wǎng)平臺(tái)2025年網(wǎng)絡(luò)安全態(tài)勢(shì)感知技術(shù)信息安全技術(shù)前沿動(dòng)態(tài)報(bào)告
- Q∕SY 05262-2019 機(jī)械清管器技術(shù)條件
- DB32989-2007低壓電氣裝置規(guī)程
- 早產(chǎn)兒出院后喂養(yǎng)(課堂PPT)
- 英語(yǔ)的起源與發(fā)展(課堂PPT)
- 部編版六年級(jí)下冊(cè)道德與法治知識(shí)點(diǎn)大匯總
- T∕CSTE 0008-2020 污水處理用碳源液體乙酸鈉
- Q∕GDW 46 10022.9-2020 主進(jìn)水閥本體運(yùn)檢導(dǎo)則
- 整體yuan yin yun yingp
- 姿態(tài)動(dòng)力學(xué)作業(yè)(共9頁(yè))
- 電網(wǎng)公司竣工決算報(bào)告編制規(guī)范與竣工決算資料的要求
- 城市主干道工程監(jiān)理大綱
評(píng)論
0/150
提交評(píng)論