操作系統(tǒng)實(shí)驗(yàn)二存儲(chǔ)管理動(dòng)態(tài)分區(qū)分配及回收算法.doc
《操作系統(tǒng)實(shí)驗(yàn)二存儲(chǔ)管理動(dòng)態(tài)分區(qū)分配及回收算法.doc》由會(huì)員分享,可在線閱讀,更多相關(guān)《操作系統(tǒng)實(shí)驗(yàn)二存儲(chǔ)管理動(dòng)態(tài)分區(qū)分配及回收算法.doc(10頁珍藏版)》請(qǐng)?jiān)趨R文網(wǎng)上搜索。
1、實(shí)驗(yàn)二 存儲(chǔ)管理動(dòng)態(tài)分區(qū)分配及回收算法一、 實(shí)驗(yàn)?zāi)康耐ㄟ^分區(qū)管理實(shí)驗(yàn),了解操作系統(tǒng)的基本概念,理解計(jì)算機(jī)系統(tǒng)的資源如何組織,操作系統(tǒng)如何有效地管理這些系統(tǒng)資源,用戶如何通過操作系統(tǒng)與計(jì)算機(jī)系統(tǒng)打交道。通過課程設(shè)計(jì),我們可以進(jìn)一步理解在計(jì)算機(jī)系統(tǒng)上運(yùn)行的其它各類操作系統(tǒng),并懂得在操作系統(tǒng)的支持下建立自己的應(yīng)用系統(tǒng)。二、 實(shí)驗(yàn)要求本實(shí)驗(yàn)要求用一種結(jié)構(gòu)化高級(jí)語言構(gòu)造分區(qū)描述器,編制動(dòng)態(tài)分區(qū)分配算法和回收算法模擬程序,并掌握分配算法的特點(diǎn),提高編程技巧和對(duì)算法的理解和掌握.三、 實(shí)驗(yàn)過程1 準(zhǔn)備 (一)主程序 1、定義分區(qū)描述器node,包括 3個(gè)元素: (1)adr分區(qū)首地址 (2)size分區(qū)大小
2、 (3)next-指向下一個(gè)分區(qū)的指針 2、定義 3個(gè)指向node結(jié)構(gòu)的指針變量: (1)head1空閑區(qū)隊(duì)列首指針 (2)back1指向釋放區(qū)node結(jié)構(gòu)的指針 (3)assign指向申請(qǐng)的內(nèi)存分區(qū)node結(jié)構(gòu)的指針 3、定義 1個(gè)整形變量: free-用戶申請(qǐng)存儲(chǔ)區(qū)的大小(由用戶鍵入) (二)過程 1、定義check過程,用于檢查指定的釋放塊(由用戶鍵入)的合法性 2、定義assignment1過程,實(shí)現(xiàn)First Fit Algorithm 3、定義assignment2過程,實(shí)現(xiàn)Best Fit Algorithm 4、定義acceptment1過程,實(shí)現(xiàn)First Fit Algor
3、ithm的回收算法 5、定義acceptment2過程,實(shí)現(xiàn)Best Fit Algorithm的回收算法 6、定義print過程,打印空閑區(qū)隊(duì)列 (三)執(zhí)行 程序首先申請(qǐng)一整塊空閑區(qū),其首址為0,大小為32767;然后,提示用戶使用哪種分配算法,再提示是分配還是回收;分配時(shí)要求輸入申請(qǐng)區(qū)的大小,回收時(shí)要求輸入釋放區(qū)的首址和大小。 (四)輸出 要求每執(zhí)行一次,輸出一次空閑區(qū)隊(duì)列情況,內(nèi)容包括: 編號(hào) 首址 終址 大小 2.主要流程和源代碼實(shí)驗(yàn)二源代碼#include#define MAX_SIZE 32767typedef struct node int id; int adr; int si
4、ze; struct node next; Node;Node head1,head2,back1,back2,*assign;int request; int check(int add,int siz,char c) Node p,head;int check=1;if(addnext;while(p!=NULL)check) if((addpadr)(add+sizp-adr)|((add=padr)&(addp-adr+p-size)) check=0; else p=p-next;if(check=0) printf(t輸入釋放區(qū)地址或大小有錯(cuò)誤!!n); return check;
5、 void init() Node *p;head1=(Node*)malloc(sizeof(Node);head2=(Node)malloc(sizeof(Node));p=(Node)malloc(sizeof(Node));head1next=p;head2-next=p;psize=MAX_SIZE;p-adr=0;p-next=NULL;p-id=0;Node assignment1(int num,int req) Node before,after,*ass;ass=(Node)malloc(sizeof(Node));before=head1;after=head1next;
6、ass-id=num;ass-size=req;while(after-sizereq)before=beforenext;after=afternext;if(after=NULL)assadr=1; elseif(after-size=req) beforenext=afternext;ass-adr=afteradr;else aftersize-=req;assadr=afteradr;afteradr+=req;return ass;void acceptment1(int address,int siz,int rd) Node *before,after;int insert=0
7、;back1=(Node)malloc(sizeof(Node);before=head1;after=head1next;back1adr=address;back1-size=siz;back1id=rd;back1-next=NULL;while(!insert&after)/將要被回收的分區(qū)插入空閑區(qū)(按首址大小從小到大插入)if(after=NULL)(back1adradr=beforeadr))beforenext=back1;back1-next=after;insert=1;elsebefore=beforenext;after=afternext;if(insert)if(
8、back1-adr=before-adr+beforesize)/和前邊分區(qū)合并before-size+=back1-size;beforenext=back1-next;free(back1);else if(after&back1adr+back1size=afteradr)/和后邊分區(qū)合并back1size+=aftersize;back1next=afternext;back1-id=afterid;free(after);after=back1;printf(t首先分配算法回收內(nèi)存成功!n);elseprintf(”t首先分配算法回收內(nèi)存失敗!n”);Node assignment2
- 1.請(qǐng)仔細(xì)閱讀文檔,確保文檔完整性,對(duì)于不預(yù)覽、不比對(duì)內(nèi)容而直接下載帶來的問題本站不予受理。
- 2.下載的文檔,不會(huì)出現(xiàn)我們的網(wǎng)址水印。
- 3、該文檔所得收入(下載+內(nèi)容+預(yù)覽)歸上傳者、原創(chuàng)作者;如果您是本文檔原作者,請(qǐng)點(diǎn)此認(rèn)領(lǐng)!既往收益都?xì)w您。
下載文檔到電腦,查找使用更方便
12.9 積分
下載 | 加入VIP,下載共享資源 |
- 配套講稿:
如PPT文件的首頁顯示word圖標(biāo),表示該P(yáng)PT已包含配套word講稿。雙擊word圖標(biāo)可打開word文檔。
- 特殊限制:
部分文檔作品中含有的國旗、國徽等圖片,僅作為作品整體效果示例展示,禁止商用。設(shè)計(jì)者僅對(duì)作品中獨(dú)創(chuàng)性部分享有著作權(quán)。
- 關(guān) 鍵 詞:
- 操作系統(tǒng) 實(shí)驗(yàn) 存儲(chǔ) 管理 動(dòng)態(tài) 分區(qū) 分配 回收 算法
鏈接地址:http://zhizhaikeji.com/p-17189234.html