




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、實(shí)驗(yàn)報(bào)告專業(yè) 網(wǎng)絡(luò)工程 班級 08102班 學(xué)號 01號 姓名 胡雙雙課程名稱操作系統(tǒng) 學(xué)年20102011 學(xué)期 下課程類別專業(yè)必修 限選任選實(shí)踐實(shí)驗(yàn)時(shí)間 2010年12 月9 日實(shí)驗(yàn)名稱實(shí)驗(yàn)三:內(nèi)存分區(qū)與回收實(shí)驗(yàn)?zāi)康暮鸵笕胬斫鈨?nèi)存分配的三種方法及回收,掌握解決該問題的算法思想。實(shí)驗(yàn)軟硬件要求pentium(r) dual-core cpu 3.2m內(nèi)存windows xp professionalvisual c+6.0實(shí)驗(yàn)內(nèi)容、方法和步驟問題描述:初始化一內(nèi)存空間,要求用最先適應(yīng)算法、最優(yōu)適應(yīng)算法及最壞適應(yīng)算法實(shí)現(xiàn)動(dòng)態(tài)分配內(nèi)存,并可進(jìn)行回收。功能要求:可對內(nèi)存進(jìn)行分區(qū),回收及打印,用
2、戶可選擇最先適應(yīng)算法、最優(yōu)適應(yīng)算法及最壞適應(yīng)方法三種算法對內(nèi)存進(jìn)行分配。實(shí)驗(yàn)結(jié)果:見截圖小結(jié)此次實(shí)驗(yàn)的難點(diǎn)是內(nèi)存的回收及動(dòng)態(tài)分配問題,三個(gè)分區(qū)的算法相對來說簡單一點(diǎn),設(shè)計(jì)者必須考慮內(nèi)存回收時(shí),上為空閑區(qū),下為空閑區(qū),上下都為空閑區(qū)及上下都不為空閑區(qū)四種情況。動(dòng)態(tài)分區(qū)的基本思想是先初始化一空閑內(nèi)存空間為1024,然后動(dòng)態(tài)對其進(jìn)行分區(qū),分區(qū)的過程中可選擇是按首次適應(yīng)算法、最優(yōu)適應(yīng)算法或者最壞適應(yīng)算法進(jìn)行分配,動(dòng)態(tài)分區(qū)過程中,可以邊分配邊回收。在設(shè)計(jì)過程中,還要注意一些細(xì)節(jié)問題,比如在分配內(nèi)存時(shí),工作名不能重復(fù),否則可能導(dǎo)致打印時(shí)混淆重復(fù)的內(nèi)存區(qū),所以,本實(shí)驗(yàn)中,用pdname()函數(shù)來進(jìn)行判定是否
3、重名。評定成績:批閱教師: 年月日 一、問題概述初始化一內(nèi)存空間,要求可對內(nèi)存進(jìn)行分區(qū),回收及打印,用戶可選擇最先適應(yīng)算法、最優(yōu)適應(yīng)算法及最壞適應(yīng)方法三種算法對內(nèi)存進(jìn)行分配。二、設(shè)計(jì)流程圖(1)首次適應(yīng)算法(first_fit)流程圖開 始比size大的空內(nèi)存結(jié) 束yi沒有超過終值y待進(jìn)入的內(nèi)存進(jìn)入空內(nèi)存區(qū)將剩下的內(nèi)存獨(dú)立為空內(nèi)存塊nn沒有找到比要分配的大的內(nèi)存快,分配失?。?)最優(yōu)適應(yīng)算法(best_fit)流程圖 開 始查找大于size的空閑空間將其分區(qū)號存入id大小存入min空閑區(qū)大小小于min將空閑區(qū)分割,一部分分配給size,一部分為空閑區(qū) 結(jié) 束yi沒有超過極值尋找比size大的空
4、閑區(qū)yy空閑區(qū)空間=申請空間將空閑區(qū)直接分配給sizennn(3)最壞適應(yīng)算法(worst-_fit)流程圖與最佳適應(yīng)算法類似(4)內(nèi)存回收流程圖 開 始判斷空閑區(qū)上下內(nèi)存情況上為空將上面的空閑區(qū)合并,并回收下為空將下面的空閑區(qū)合并,并回收上下都為空將上下的空閑區(qū)合并,并回收上下都不為空直接將其回收 結(jié) 束三、數(shù)據(jù)定義struct used_tableint id;/分區(qū)號char workname;/工作名int worksize;/工作空間int address;/開始地址bool state;/狀態(tài)0表示未分配 1表示已分配j100;void init();int search();in
5、t pdname(char c);void print();void begin();int first_fit(char c,int i);int best_fit(char c,int i);int worst_fit(char c,int i);void reclaim();int free(char c);四、源程序#include <iostream.h>void init();int search();int pdname(char c);void print();void begin();int first_fit(char c,int i);int best_fit
6、(char c,int i);int worst_fit(char c,int i);void reclaim();int free(char c);struct used_tableint id;/分區(qū)號char workname;/工作名int worksize;/工作空間int address;/開始地址bool state;/狀態(tài)0表示未分配 1表示已分配j100;void init() /主存表的初始化j0.id=1; /分區(qū)號 j0.address =0;j0.state =0;j0.workname =null;j0.worksize =1024;for(int i=1;i<
7、;100;i+)ji.id =i+1;ji.state =0;ji.workname =null; ji.address =ji-1.address +ji.worksize ;int search() /返回空閑空間int sizeall=1024; /主存總空間int sizeuse=0; /已用空間int sizeky; /可用工作空間for(int i=0;i<100;i+)if(ji.state=1)sizeuse=sizeuse+ji.worksize ; sizeky=sizeall-sizeuse;return sizeky;/返回空閑空間int pdname(char
8、name) /判斷作業(yè)名for(int i=0;i<100;i+)if(ji.workname =name)cout<<"輸入工作名重復(fù),分配失??!"<<endl;return 0;return 1;void print() /輸出函數(shù)cout<<"分區(qū)號"<<" 工作名"<<" 開始地址"<<" 工作空間"<<" 狀態(tài)"<<endl;for(int i=0;i<100
9、;i+)cout<<ji.id<<" "<<ji.workname<<" "<<ji.address <<" "<<ji.worksize<<" "<<ji.state<<endl; if(ji.state=0&&ji+1.state=0&&ji+2.state=0)break;void begin() char name;int size;int c=1;cout
10、<<"請輸入工作名:"<<endl;cin>>name;cout<<"請分配空間:"<<endl;cin>>size;if(pdname(name)cout<<"請選擇要選的算法 1:首次適應(yīng)算法 2:最佳適應(yīng)算法:3:最壞適應(yīng)算法 "<<endl;cin>>c;if(c!=1&&c!=2&&c!=3)c=1;switch(c)case 1:first_fit(name,size);break;c
11、ase 2:best_fit(name,size);break;case 3:worst_fit(name,size);break;int first_fit(char name,int size) /首次適應(yīng)算法for(int i=0;i<100;i+) if(ji.worksize>=size&&ji.state=0)int temp=ji.worksize;int sum=ji+1.address ;ji.worksize=size;ji.workname=name;ji.address=ji-1.address +ji-1.worksize ;ji+1.ad
12、dress=ji.address +ji.worksize ;ji.state =1;if(temp>size) /將i項(xiàng)分成兩項(xiàng)for(int j=100;j>i+1;j-)jj.address =jj-1.address;jj.state =jj-1.state ;jj.workname =jj-1.workname ;jj.worksize =jj-1.worksize ;ji+2.address =sum;ji+1.state =0;ji+1.workname =null;ji+1.worksize =temp-size;cout<<"成功分配!&qu
13、ot;<<endl;for(int j=i;j<100;j+)if(jj.state =0&&jj+1.state =0&&jj+2.state =0)/查找以后表 條件為3個(gè)連續(xù)空閑的空間 則視為以后都空閑jj.worksize =search();/將剩余空間放入j中return 1;if(i=100)cout<<"主存空間已滿!"<<endl;return 0;return 0;int best_fit(char name,int size) /最佳適應(yīng)分配算法/查找一個(gè)大于size的空閑空間,
14、將此空間的id存入id,worksize存入min int min=1025;int id=-1; for(int i=0;i<100;i+)if(ji.state =0&&ji.worksize <min&&ji.worksize>=size)id=i;min=ji.worksize;cout<<"最佳適應(yīng)空間的id:"<<id+1<<"空間大小:"<<min<<endl;/將作業(yè)存入ji項(xiàng)int temp=jid.worksize -size
15、;if(temp=0)/空閑空間大小恰好等于申請空間大小直接存入ji.workname =name;ji.state =1;else if(temp>0)/空閑空區(qū)大于申請空間,需要將空閑分區(qū)分割jid.workname =name;jid.worksize =size; jid.state =1;for(int j=100;j>id+1;j-)jj.address =jj-1.address;jj.state =jj-1.state ;jj.workname =jj-1.workname ;jj.worksize =jj-1.worksize ; jid+1.address =j
16、id.address +jid.worksize ;jid+1.state =0;jid+1.worksize =temp;jid+1.workname =null;return 0;int worst_fit(char name,int size)/查找一個(gè)大于size的空閑空間,將此空間的id存入id,worksize存入max int max=size;int id=-1; for(int i=0;i<100;i+)if(ji.state =0&&ji.worksize >max)id=i;max=ji.worksize;cout<<"最
17、壞適應(yīng)空間的id:"<<id+1<<"空間大?。?quot;<<max<<endl;/將作業(yè)存入ji項(xiàng)int temp=jid.worksize -size;if(temp=0)/空閑空間大小恰好等于申請空間大小直接存入ji.workname =name;ji.state =1;else if(temp>0)/空閑空區(qū)大于申請空間,需要將空閑分區(qū)分割jid.workname =name;jid.worksize =size; jid.state =1;for(int j=100;j>id+1;j-)jj.addre
18、ss =jj-1.address;jj.state =jj-1.state ;jj.workname =jj-1.workname ;jj.worksize =jj-1.worksize ; jid+1.address =jid.address +jid.worksize ;jid+1.state =0;jid+1.worksize =temp;jid+1.workname =null;return 0;/回收工作各函數(shù)void reclaim()char name;cout<<"請輸入需要回收的工作名:"<<endl;cin>>name
19、;free(name);/回收工作int free(char name)int j;/查找要回收的工作for(int i=0;i<100;i+)if(ji.workname =name)cout<<"你要回收的工作是在"<<ji.id<<"分區(qū)中"<<endl;break;if(i=100)cout<<"對不起 沒有找到你要回收的工作"<<endl;return 0;int n=i;/第n個(gè)工作需要回收 /回收工作 4種情況if(i=0&&j
20、1.state =0)j0.address=0;j0.state =1;j0.workname =null;j0.worksize =j0.worksize +j1.worksize;for(i=1;i<100;i+)ji.address =ji+1.address ;ji.state =ji+1.state ;ji.workname =ji+1.workname ;ji.worksize =ji+1.worksize ;else if(jn-1.state =0&&jn+1.state =1)/下有空jn-1.worksize =jn-1.worksize +jn.wo
21、rksize;for(j=n;j<99;j+)jj.address =jj+1.address ;jj.state =jj+1.state ;jj.workname =jj+1.workname ;jj.worksize =jj+1.worksize ;else if(jn-1.state=1&&jn+1.state=0)/上有空jn.worksize =jn.worksize +jn+1.worksize;jn.workname =null;jn.state =0;for(j=n+1;j<99;j+)jj.address =jj+1.address ;jj.state =jj+1.state ;jj.workname =jj+1.workname ;jj.worksize =jj+1.worksize ;else if(jn-1.state=0&&jn+1.state=0)/上下都為空jn-1.worksize =jn-1.worksize +jn.worksize +jn+1.worksize;for(j=n;j<98;j+)jj.address
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(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ǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 網(wǎng)絡(luò)文學(xué)作品改編權(quán)授權(quán)與有聲讀物制作合同
- 直播平臺(tái)與商家合作傭金分成及坑位費(fèi)合同
- 智能家居環(huán)境監(jiān)測系統(tǒng)研發(fā)與智能家居產(chǎn)品認(rèn)證合同
- 基因治療藥物臨床試驗(yàn)知識(shí)產(chǎn)權(quán)保護(hù)合作協(xié)議
- 網(wǎng)約車信息服務(wù)平臺(tái)乘客數(shù)據(jù)保護(hù)與合規(guī)操作規(guī)范合同
- 智能家居期房預(yù)售權(quán)益分配與分割管理合同
- 新聞稿件內(nèi)容創(chuàng)新與版權(quán)授權(quán)合作協(xié)議
- 抖音短視頻平臺(tái)積分積分獎(jiǎng)勵(lì)與用戶權(quán)益維護(hù)合同
- 2025至2031年中國樹頂天使飾品市場現(xiàn)狀分析及前景預(yù)測報(bào)告
- 苗木供應(yīng)出售合同協(xié)議
- (中考試題)2024年浙江省紹興市中考數(shù)學(xué)真題試卷解析版
- 2023年土地復(fù)墾技術(shù)標(biāo)準(zhǔn)
- 數(shù)據(jù)資產(chǎn)入表理論與實(shí)踐
- 電焊機(jī)日常點(diǎn)檢表
- 《建筑施工安全檢查標(biāo)準(zhǔn)》JGJ59-20248
- 《建筑信息模型(BIM)技術(shù)應(yīng)用導(dǎo)則》
- 電商培訓(xùn)課件-直播電商
- 名著復(fù)習(xí)之革命烈士詩抄
- 人工智能與機(jī)器視覺技術(shù)應(yīng)用
- 思想道德與法治2021版第六章第二節(jié)
- 工業(yè)機(jī)器人技術(shù)畢業(yè)論文范文
評論
0/150
提交評論