2022年實(shí)驗(yàn)四動(dòng)態(tài)分區(qū)分配方式的模擬答案_第1頁
2022年實(shí)驗(yàn)四動(dòng)態(tài)分區(qū)分配方式的模擬答案_第2頁
2022年實(shí)驗(yàn)四動(dòng)態(tài)分區(qū)分配方式的模擬答案_第3頁
2022年實(shí)驗(yàn)四動(dòng)態(tài)分區(qū)分配方式的模擬答案_第4頁
2022年實(shí)驗(yàn)四動(dòng)態(tài)分區(qū)分配方式的模擬答案_第5頁
已閱讀5頁,還剩3頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、精選學(xué)習(xí)資料 - - - 歡迎下載動(dòng)態(tài)分區(qū)安排方式的模擬第一部分設(shè)計(jì)思想的說明1設(shè)計(jì)目標(biāo)用 c 語言或 c+語言分別實(shí)現(xiàn)采納首次適應(yīng)算法和正確適應(yīng)算法的動(dòng)態(tài)分區(qū)安排過程alloc和回收過程free;其中,閑暇分區(qū)通過閑暇分區(qū)鏈表來治理,在進(jìn)行內(nèi)存安排時(shí),系統(tǒng)優(yōu)先使用閑暇區(qū)低端空間;預(yù)期結(jié)果:假設(shè)初始狀態(tài)如下,可用的內(nèi)存空間為640kb,并有以下懇求序列:作業(yè)1申請(qǐng)130kb作業(yè)2申請(qǐng)60kb作業(yè)3申請(qǐng)100kb作業(yè)2釋放60kb作業(yè)4申請(qǐng)200kb作業(yè)3釋放100kb作業(yè)1釋放130kb作業(yè)5申請(qǐng)140kb作業(yè)6申請(qǐng)60kb作業(yè)7申請(qǐng)50kb作業(yè)6釋放60kb分別用首次適應(yīng)算法和正確適應(yīng)算法進(jìn)

2、行內(nèi)存塊的安排和回收,同時(shí)顯示內(nèi)存塊安排和回收后閑暇內(nèi)存分區(qū)鏈的情形;2.設(shè)計(jì)理論首次適應(yīng)算法(first-fit) :當(dāng)要安排內(nèi)存空間時(shí),就查表,在各閑暇區(qū)中查找滿意大小要求的可用塊;只要找到第一個(gè)足以滿意要球的閑暇塊就停止查找,并把它安排出去;假如該閑暇空間與所需空間大小一樣,就從閑暇表中取消該項(xiàng);假如仍有剩余, 就余下的部分仍留在閑暇表中,但應(yīng)修改分區(qū)大小和分區(qū)始址;正確適應(yīng)算法(best-fit): 當(dāng)要安排內(nèi)存空間時(shí),就查找閑暇表中滿意要求的閑暇塊,并使得剩余塊為最小的;然后把它安排出去,如大小恰好合適,就直按安排;如有剩余 塊,就仍保留該余下的閑暇分區(qū),并修改分區(qū)大小的起始地址;內(nèi)

3、存回收: 將釋放作業(yè)所在內(nèi)存塊的狀態(tài)改為閑暇狀態(tài),刪除其作業(yè)名,設(shè)置為空;并判定該閑暇塊為否與其他閑暇塊相連,如釋放的內(nèi)存空間與閑暇塊相連時(shí),就合并為同一個(gè)閑暇塊,同時(shí)修改分區(qū)大小及起始地址;精品學(xué)習(xí)資料精選學(xué)習(xí)資料 - - - 歡迎下載其次部分程序清單/*/*動(dòng)態(tài)分區(qū)安排方式的模擬*/*#include<iostream.h>#include<stdlib.h>#define free 0 /閑暇狀態(tài)#define busy 1 /已用狀態(tài)#define ok 1/完成#define error 0 /出錯(cuò)#define max_length 640 /最大內(nèi)存空間為

4、640kb typedef int status;typedef struct freearea/定義一個(gè)閑暇區(qū)說明表結(jié)構(gòu)int id;/分區(qū)號(hào)long size;/分區(qū)大小 long address; /分區(qū)地址 int state;/狀態(tài)elemtype;/-線性表的雙向鏈表儲(chǔ)備結(jié)構(gòu)- typedef struct dulnode /double linked listelemtype data;struct dulnode *prior; /前趨指針struct dulnode *next; /后繼指針dulnode、*dulinklist;dulinklist block_first;

5、 /頭結(jié)點(diǎn)dulinklist block_last; /尾結(jié)點(diǎn)status allocint;/內(nèi)存安排status freeint; /內(nèi)存回收status first_fitint、int;/首次適應(yīng)算法status best_fitint、int; /正確適應(yīng)算法void show;/查看安排status initblock;/開創(chuàng)空間表精品學(xué)習(xí)資料精選學(xué)習(xí)資料 - - - 歡迎下載status initblock/開創(chuàng)帶頭結(jié)點(diǎn)的內(nèi)存空間鏈表block_first=dulinklistmallocsizeofdulnode; block_last=dulinklistmallocsiz

6、eofdulnode; block_first->prior=null;block_first->next=block_last; block_last->prior=block_first; block_last->next=null; block_last->data.address=0;block_last->data.size=max_length; block_last->data.id=0;block_last->data.state=free; return ok;/-分 配 主 存 -status allocint chint i

7、d、request;cout<<" 請(qǐng)輸入作業(yè) 分區(qū)號(hào) :" cin>>id;cout<<" 請(qǐng)輸入需要安排的主存大小 單位 :kb : "cin>>request; ifrequest<0 |request=0cout<<" 安排大小不合適,請(qǐng)重試!"<<endl; return error;ifch=2 /挑選正確適應(yīng)算法ifbest_fitid、request=ok cout<<"安排勝利! "<<endl;

8、 else cout<<"內(nèi)存不足,安排失??!"<<endl;return ok;else /默認(rèn)首次適應(yīng)算法iffirst_fitid、request=ok cout<<"安排勝利! "<<endl; else cout<<"內(nèi)存不足,安排失??!"<<endl;return ok;/-首次適應(yīng)算法-status first_fitint id、int request/傳入作業(yè)名及申請(qǐng)量精品學(xué)習(xí)資料精選學(xué)習(xí)資料 - - - 歡迎下載/ 為申請(qǐng)作業(yè)開創(chuàng)新空間且初始化

9、dulinklist temp=dulinklistmallocsizeofdulnode; temp->data.id=id;temp->data.size=request;temp->data.state=busy;dulnode *p=block_first->next; whilepifp->data.state=free && p->data.size=request/ 有大小恰好合適的閑暇塊p->data.state=busy; p->data.id=id; return ok;break;ifp->data.s

10、tate=free && p->data.size>request/ 有閑暇塊能滿意需求且有剩余" temp->prior=p->prior;temp->next=p;temp->data.address=p->data.address; p->prior->next=temp;p->prior=temp;p->data.address=temp->data.address+temp->data.size; p->data.size-=request;return ok; break;

11、p=p->next;return error;/-正確適應(yīng)算法-status best_fitint id、int requestint ch; /記錄最小剩余空間dulinklist temp=dulinklistmallocsizeofdulnode; temp->data.id=id;temp->data.size=request; temp->data.state=busy; dulnode *p=block_first->next;dulnode *q=null; /記錄正確插入位置whilep /初始化最小空間和正確位置精品學(xué)習(xí)資料精選學(xué)習(xí)資料 - -

12、 - 歡迎下載ifp->data.state=free &&p->data.size>request | p->data.size=request q=p;ch=p->data.size-request; break;p=p->next;whilepifp->data.state=free && p->data.size=request/ 閑暇塊大小恰好合適p->data.id=id;p->data.state=busy; return ok;break;ifp->data.state=free

13、&& p->data.size>request/ 閑暇塊大于安排需求ifp->data.size-request<ch/剩余空間比初值仍小ch=p->data.size-request;/更新剩余最小值q=p;/ 更新正確位置指向p=p->next;ifq=null return error;/沒有找到閑暇塊else/找到了正確位置并實(shí)現(xiàn)安排temp->prior=q->prior; temp->next=q;temp->data.address=q->data.address; q->prior->

14、next=temp;q->prior=temp;q->data.address+=request; q->data.size=ch;return ok;/-主 存 回 收-精品學(xué)習(xí)資料精選學(xué)習(xí)資料 - - - 歡迎下載status freeint iddulnode *p=block_first; whilepifp->data.id=idp->data.state=free; p->data.id=free;ifp->prior->data.state=free/與前面的閑暇塊相連p->prior->data.size+=p->

15、;data.size; p->prior->next=p->next;p->next->prior=p->prior;ifp->next->data.state=free/與后面的閑暇塊相連p->data.size+=p->next->data.size; p->next->next->prior=p;p->next=p->next->next;break;p=p->next;return ok;/-顯示主存安排情形-void showcout<<"+n"

16、cout<<"+主 存 分 配 情 況+n" cout<<"+n"dulnode *p=block_first->next; whilepcout<<" 分 區(qū) 號(hào) : "ifp->data.id=free cout<<"free"<<endl; else cout<<p->data.id<<endl;cout<<" 起始地址: "<<p->data.address

17、<<endl;cout<<" 分區(qū)大?。?"<<p->data.size<<" kb"<<endl;cout<<" 狀態(tài): "ifp->data.state=free cout<<"空閑"<<endl;精品學(xué)習(xí)資料精選學(xué)習(xí)資料 - - - 歡迎下載else cout<<"已安排 "<<endl;cout<<" "<<end

18、l;p=p->next;/-主函數(shù)-void mainint ch;/算法挑選標(biāo)記cout<<"動(dòng)態(tài)分區(qū)安排方式的模擬n" cout<<"*n"cout<<"* 1首次適應(yīng)算法2正確適應(yīng)算法*n"cout<<"*n"cout<<" 請(qǐng)?zhí)暨x安排算法:" cin>>ch;initblock; /開創(chuàng)空間表 int choice; /操作挑選標(biāo)記 while1cout<<"*n"cout<<"*1:安排內(nèi)存2:回收內(nèi)存*n" cout<<"*3:查看安排0:退出*n"cout<<"*n"cout&

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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)論