版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、操作系統(tǒng)實(shí)驗(yàn)指導(dǎo)書目錄實(shí)驗(yàn)一 進(jìn)程調(diào)度模擬算法1實(shí)驗(yàn)二 預(yù)測(cè)分析法3附錄1:實(shí)驗(yàn)報(bào)告模版5附錄2:實(shí)驗(yàn)教學(xué)大綱6實(shí)驗(yàn)一 進(jìn)程調(diào)度模擬算法課時(shí):4實(shí)驗(yàn)環(huán)境:C/C+一、目的和要求進(jìn)程調(diào)度是處理機(jī)管理的核心內(nèi)容。本實(shí)驗(yàn)要求用高級(jí)語(yǔ)言編寫模擬進(jìn)程調(diào)度程序,以便加深理解有關(guān)進(jìn)程控制快、進(jìn)程隊(duì)列等概念,并體會(huì)和了解優(yōu)先數(shù)算法和時(shí)間片輪轉(zhuǎn)算法的具體實(shí)施辦法。二、實(shí)驗(yàn)內(nèi)容1.設(shè)計(jì)進(jìn)程控制塊PCB的結(jié)構(gòu),通常應(yīng)包括如下信息: 進(jìn)程名、進(jìn)程優(yōu)先數(shù)(或輪轉(zhuǎn)時(shí)間片數(shù))、進(jìn)程已占用的CPU時(shí)間、進(jìn)程到完成還需要的時(shí)間、進(jìn)程的狀態(tài)、當(dāng)前隊(duì)列指針等。 2.編寫兩種調(diào)度算法程序: 優(yōu)先數(shù)調(diào)度算法程序 循環(huán)輪轉(zhuǎn)調(diào)度算法程序3
2、.按要求輸出結(jié)果。 三、提示和說(shuō)明 分別用兩種調(diào)度算法對(duì)伍個(gè)進(jìn)程進(jìn)行調(diào)度。每個(gè)進(jìn)程可有三種狀態(tài);執(zhí)行狀態(tài)(RUN)、就緒狀態(tài)(READY,包括等待狀態(tài))和完成狀態(tài)(FINISH),并假定初始狀態(tài)為就緒狀態(tài)。 (一)進(jìn)程控制塊結(jié)構(gòu)如下: NAME進(jìn)程標(biāo)示符 PRIO/ROUND進(jìn)程優(yōu)先數(shù)/進(jìn)程每次輪轉(zhuǎn)的時(shí)間片數(shù)(設(shè)為常數(shù)2) CPUTIME進(jìn)程累計(jì)占用CPU的時(shí)間片數(shù) NEEDTIME進(jìn)程到完成還需要的時(shí)間片數(shù) STATE進(jìn)程狀態(tài) NEXT鏈指針 注: 1.為了便于處理,程序中進(jìn)程的的運(yùn)行時(shí)間以時(shí)間片為單位進(jìn)行計(jì)算; 2.各進(jìn)程的優(yōu)先數(shù)或輪轉(zhuǎn)時(shí)間片數(shù),以及進(jìn)程運(yùn)行時(shí)間片數(shù)的初值,均由用戶在程序運(yùn)
3、行時(shí)給定。 (二)進(jìn)程的就緒態(tài)和等待態(tài)均為鏈表結(jié)構(gòu),共有四個(gè)指針如下: RUN當(dāng)前運(yùn)行進(jìn)程指針 READY就需隊(duì)列頭指針 TAIL 就需隊(duì)列尾指針 FINISH 完成隊(duì)列頭指針 (三)程序說(shuō)明 1. 在優(yōu)先數(shù)算法中,進(jìn)程優(yōu)先數(shù)的初值設(shè)為: 50-NEEDTIME每執(zhí)行一次,優(yōu)先數(shù)減1,CPU時(shí)間片數(shù)加1,進(jìn)程還需要的時(shí)間片數(shù)減1。 在輪轉(zhuǎn)法中,采用固定時(shí)間片單位(兩個(gè)時(shí)間片為一個(gè)單位),進(jìn)程每輪轉(zhuǎn)一次,CPU時(shí)間片數(shù)加2,進(jìn)程還需要的時(shí)間片數(shù)減2,并退出CPU,排到就緒隊(duì)列尾,等待下一次調(diào)度。 2. 程序的模塊結(jié)構(gòu)提示如下: 整個(gè)程序可由主程序和如下7個(gè)過(guò)程組成: (1)INSERT1在優(yōu)先數(shù)
4、算法中,將尚未完成的PCB按優(yōu)先數(shù)順序插入到就緒隊(duì)列中; (2)INSERT2在輪轉(zhuǎn)法中,將執(zhí)行了一個(gè)時(shí)間片單位(為2),但尚未完成的進(jìn)程的PCB,插到就緒隊(duì)列的隊(duì)尾; (3)FIRSTIN調(diào)度就緒隊(duì)列的第一個(gè)進(jìn)程投入運(yùn)行; (4)PRINT顯示每執(zhí)行一次后所有進(jìn)程的狀態(tài)及有關(guān)信息。 (5)CREATE創(chuàng)建新進(jìn)程,并將它的PCB插入就緒隊(duì)列; (6)PRISCH按優(yōu)先數(shù)算法調(diào)度進(jìn)程; (7)ROUNDSCH按時(shí)間片輪轉(zhuǎn)法調(diào)度進(jìn)程。 主程序定義PCB結(jié)構(gòu)和其他有關(guān)變量。(四)運(yùn)行和顯示 程序開始運(yùn)行后,首先提示:請(qǐng)用戶選擇算法,輸入進(jìn)程名和相應(yīng)的NEEDTIME值。 每次顯示結(jié)果均為如下5個(gè)字段
5、: name cputime needtime priority state 注: 1在state字段中,R代表執(zhí)行態(tài),W代表就緒(等待)態(tài),F(xiàn)代表完成態(tài)。2應(yīng)先顯示R態(tài)的,再顯示W(wǎng)態(tài)的,再顯示F態(tài)的。 3在W態(tài)中,以優(yōu)先數(shù)高低或輪轉(zhuǎn)順序排隊(duì);在F態(tài)中,以完成先后順序排隊(duì)。 實(shí)驗(yàn)二 存儲(chǔ)管理動(dòng)態(tài)分區(qū)分配及回收算法課時(shí):4實(shí)驗(yàn)環(huán)境:C/C+一、目的和要求分區(qū)管理是應(yīng)用較廣泛的一種存儲(chǔ)管理技術(shù)。本實(shí)驗(yàn)要求用一種結(jié)構(gòu)化高級(jí)語(yǔ)言構(gòu)造分區(qū)描述器,編制動(dòng)態(tài)分區(qū)分配算法和回收算法模擬程序,并討論不同分配算法的特點(diǎn)。二、實(shí)驗(yàn)內(nèi)容 1、編寫:First Fit Algorithm 2、編寫:Best Fit A
6、lgorithm3、編寫:空閑區(qū)回收算法三、提示和說(shuō)明 (一)主程序 1、定義分區(qū)描述器node,包括 3個(gè)元素: (1)adr分區(qū)首地址 (2)size分區(qū)大小 (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ū)的大小(由用戶鍵入) (二)過(guò)程 1、定義check過(guò)程,用于檢查指定的釋放塊(由用戶鍵入)的合法性 2、定義assignment1過(guò)程,實(shí)現(xiàn)First Fit Algor
7、ithm 3、定義assignment2過(guò)程,實(shí)現(xiàn)Best Fit Algorithm 4、定義acceptment1過(guò)程,實(shí)現(xiàn)First Fit Algorithm的回收算法 5、定義acceptment2過(guò)程,實(shí)現(xiàn)Best Fit Algorithm的回收算法 6、定義print過(guò)程,打印空閑區(qū)隊(duì)列 (三)執(zhí)行 程序首先申請(qǐng)一整塊空閑區(qū),其首址為0,大小為32767;然后,提示用戶使用哪種分配算法,再提示是分配還是回收;分配時(shí)要求輸入申請(qǐng)區(qū)的大小,回收時(shí)要求輸入釋放區(qū)的首址和大小。 (四)輸出 要求每執(zhí)行一次,輸出一次空閑區(qū)隊(duì)列情況,內(nèi)容包括: 編號(hào) 首址 終址 大小 注:輸出空閑區(qū)隊(duì)列的
8、排序,應(yīng)符合所用分配算法的要求。附錄1:實(shí)驗(yàn)報(bào)告模版課程名稱 分院 班 組 桌號(hào) 實(shí)驗(yàn)者姓名 實(shí)驗(yàn)日期 年 月 日評(píng)分 教師簽名 一、 實(shí)驗(yàn)?zāi)康耐ㄟ^(guò),了解,體會(huì),掌握,提高。二、 實(shí)驗(yàn)要求。三、 實(shí)驗(yàn)過(guò)程1 準(zhǔn)備A 查閱相關(guān)資料;B 初步編寫程序;C 準(zhǔn)備測(cè)試數(shù)據(jù);D 。2 上機(jī)調(diào)試。3 主要流程和源代碼。4 遇到的主要問(wèn)題和解決方法A;B。四、 實(shí)驗(yàn)結(jié)果。五、 實(shí)驗(yàn)總結(jié)通過(guò)本次實(shí)驗(yàn),我學(xué)到了,了解了,掌握了,提高了。附錄2:實(shí)驗(yàn)教學(xué)大綱操作系統(tǒng)(A)實(shí)驗(yàn)教學(xué)大綱課程編號(hào): 計(jì)劃學(xué)時(shí):12面向?qū)I(yè):計(jì)算機(jī)科學(xué)與技術(shù)專業(yè)制 訂:計(jì)算機(jī)軟件教研室執(zhí) 筆 人:崔來(lái)堂審 定 人:邸書靈一、課程性質(zhì)、目
9、的及任務(wù)操作系統(tǒng)是計(jì)算機(jī)科學(xué)與技術(shù)專業(yè)的一門學(xué)位課。操作系統(tǒng)課程理論性強(qiáng),較抽象,難以理解和接受。因此,有必要加強(qiáng)實(shí)驗(yàn)環(huán)節(jié)。通過(guò)上機(jī)編程,模擬操作系統(tǒng)對(duì)計(jì)算機(jī)資源管理的主要策略和算法,從而有效地加深學(xué)生對(duì)所學(xué)理論知識(shí)的理解和掌握,提高學(xué)生的系統(tǒng)開發(fā)能力和應(yīng)用開發(fā)能力。二、主要參考書1、計(jì)算機(jī)操作系統(tǒng) 張堯?qū)W等 清華大學(xué)出版社 2000.8 2、計(jì)算機(jī)操作系統(tǒng) 劉乃琦等 電子工業(yè)出版社 2003.53、計(jì)算機(jī)操作系統(tǒng) 湯子瀛 西安電子科技大學(xué)出版社 2003.34、計(jì)算機(jī)操作系統(tǒng) 龐麗萍等 華中理工大學(xué)出版社 2000.12 三、考試考核辦法根據(jù)考勤、實(shí)驗(yàn)檢查及實(shí)驗(yàn)報(bào)告等綜合考慮給定。四、實(shí)驗(yàn)項(xiàng)
10、目與內(nèi)容提要序號(hào)實(shí)驗(yàn)項(xiàng)目名稱實(shí)驗(yàn)內(nèi)容提要實(shí)驗(yàn)性質(zhì)實(shí)驗(yàn)者類別學(xué)時(shí)數(shù)開設(shè)組數(shù)每組人數(shù)實(shí)驗(yàn)消耗(元/人時(shí))主要儀器設(shè)備名稱及配套數(shù)1處理機(jī)調(diào)度編程模擬處理機(jī)調(diào)度算法驗(yàn)證 演示設(shè)計(jì)綜合 研究生 微機(jī)、windows/unix/linux、TC/VB/ Dephi本科生67011??粕?2存儲(chǔ)管理編程1模擬內(nèi)存的分區(qū)管理驗(yàn)證 演示 設(shè)計(jì) 綜合研究生 微機(jī)、windows/unix/linux、TC/VB/ Dephi本科生67011??粕?3存儲(chǔ)管理編程2(選作)模擬內(nèi)存的頁(yè)式管理驗(yàn)證 演示 設(shè)計(jì) 綜合研究生 微機(jī)、windows/unix/linux、TC/VB/ Dephi本科生47011??粕?實(shí)
11、驗(yàn)一源代碼#include #include #include #include/*進(jìn)程控制塊數(shù)據(jù)結(jié)構(gòu)*/typedef struct node char name10;/*進(jìn)程名*/int prio; /*進(jìn)程優(yōu)先級(jí)*/ int round; /*循環(huán)輪轉(zhuǎn)法進(jìn)程每次輪轉(zhuǎn)的時(shí)間片*/ int cputime; /*進(jìn)程累計(jì)消耗的CUP時(shí)間*/int needtime; /*進(jìn)程到完成還需要的CUP時(shí)間*/int count; /*循環(huán)輪轉(zhuǎn)法一個(gè)是時(shí)間片內(nèi)進(jìn)程運(yùn)行時(shí)間*/char state; /*進(jìn)程的狀態(tài):R:運(yùn)行,W:等待,F:結(jié)束*/struct node *next;/*指向下一個(gè)進(jìn)程
12、的鏈指針*/ PCB;PCB *finish,*ready,*tail,*run;/*指向三個(gè)隊(duì)列的隊(duì)首的指針,finish為完成隊(duì)列頭指針,ready為就緒隊(duì)列頭指針,tail為就緒隊(duì)列的隊(duì)尾指針,run為當(dāng)前運(yùn)行進(jìn)程頭指針*/int N;/*定義進(jìn)程的數(shù)目*/void firstin(void);/調(diào)度就緒隊(duì)列的第一個(gè)進(jìn)程投入運(yùn)行; void print1(char a);/打印表頭行信息void print2(char chose,PCB *p);/打印每一行的狀態(tài)信息void print(char chose);/打印每執(zhí)行一次算法后所有的進(jìn)程的狀態(tài)信息void insert_prio
13、(PCB *q);/在優(yōu)先數(shù)算法中,將尚未完成的PCB按優(yōu)先數(shù)順序插入到就緒隊(duì)列中;void prior_init(char chose);/進(jìn)程優(yōu)先級(jí)法初始化將進(jìn)程按優(yōu)先級(jí)插入到就緒隊(duì)列里void priority(char chose);/進(jìn)程優(yōu)先級(jí)算法總函數(shù)void insert_rr(PCB *q);/在輪轉(zhuǎn)法中,將執(zhí)行了一個(gè)時(shí)間片單位(為2),但尚未完成的進(jìn)程的PCB,插到就緒隊(duì)列的隊(duì)尾;void roundrun_init(char chose);/循環(huán)輪轉(zhuǎn)法初始化將就緒隊(duì)列保存為FIFO隊(duì)列void roundrun(char chose);/循環(huán)輪轉(zhuǎn)法總算法void main(
14、)/主函數(shù)char chose= ;while(chose!=q)&(chose!=Q)fflush(stdin);printf(選擇進(jìn)程優(yōu)先級(jí)算法請(qǐng)輸入P,選擇循環(huán)輪轉(zhuǎn)算法請(qǐng)輸入R,退出請(qǐng)輸入Qn);printf(請(qǐng)輸入你的選擇:);scanf(%c,&chose);if(chose!=q)&(chose!=Q)system(cls);if(chose=P)|(chose=p)prior_init(chose);priority(chose);system(cls); else if(chose=r)|(chose=R)roundrun_init(chose);roundrun(chose)
15、;system(cls); printf(謝謝使用!n);void firstin(void)/調(diào)度就緒隊(duì)列的第一個(gè)進(jìn)程投入運(yùn)行; if(ready!=NULL) run=ready; ready=ready-next; run-state=R; run-next=NULL; else run=NULL; void print1(char a)/打印表頭行信息if(toupper(a)=P)printf(name cputime needtime priority state n);elseprintf(name cputime needtime count round state n); v
16、oid print2(char chose,PCB *p)/打印每一行的狀態(tài)信息if(toupper(chose)=P) printf(%st%dt%dt%dt%cn,p-name,p-cputime,p-needtime,p-prio,p-state); elseprintf(%st%dt%dt%dt%dt%cn,p-name,p-cputime,p-needtime,p-count,p-round,p-state);void print(char chose)/打印每執(zhí)行一次算法后所有的進(jìn)程的狀態(tài)信息PCB *p;print1(chose);if(run!=NULL)print2(chos
17、e,run);p=ready;while(p!=NULL) print2(chose,p); p=p-next;p=finish;while(p!=NULL)print2(chose,p);p=p-next;void insert_prio(PCB *q)/*在優(yōu)先數(shù)算法中,將尚未 完成的PCB按優(yōu)先數(shù)順序插入到就緒隊(duì)列中;*/PCB *p,*s,*r; /*p,r用來(lái)控制就緒隊(duì)列滾動(dòng),S指向插入的隊(duì)列*/ s=q;p=ready;r=p;if(s-prioready-prio)/ 要插入的進(jìn)程的優(yōu)先級(jí)大于ready的優(yōu)先級(jí) s-next=ready;ready=s; else/要插入的進(jìn)程的
18、優(yōu)先級(jí)不大于ready的優(yōu)先級(jí) while(p) if(p-prio=s-prio)r=p;p=p-next;elsebreak; /找到要插入的位置s-next=p;r-next=s;void prior_init(char chose)/*進(jìn)程優(yōu)先級(jí)法初始化將進(jìn)程按優(yōu)先級(jí)插入到就緒隊(duì)列里*/PCB *p;int i,time;char na10;ready=NULL;finish=NULL;run=NULL;printf(輸入進(jìn)程 的個(gè)數(shù) N:n);scanf(%d,&N);for(i=0;iname,na);p-cputime=0;p-needtime=time;p-state=W;p-
19、prio=50-time;/設(shè)置進(jìn)程優(yōu)先值初值if(ready=NULL) ready=p; ready-next=NULL;else insert_prio(p);printf(當(dāng)前就緒隊(duì)列的進(jìn)程的信息n);print(chose);printf(%d個(gè)進(jìn)程已按優(yōu)先級(jí)從高到低進(jìn)到就緒隊(duì)列中n,N);printf(按回車鍵開始模擬優(yōu)先級(jí)算法.n);fflush(stdin);getchar();firstin();void priority(char chose)/進(jìn)程優(yōu)先級(jí)算法總函數(shù)int i=1;while(run!=NULL)run-cputime+=1;run-needtime-=1;
20、run-prio-=1;if(run-needtime=0) run-next=finish; finish=run; run-state=F; run-prio=0; run=NULL; firstin(); else if(ready!=NULL)&(run-prioprio) run-state=W;insert_prio(run);run=NULL;firstin(); print(chose); getchar();void insert_rr(PCB *q)/在輪轉(zhuǎn)法中,將執(zhí)行了一個(gè)時(shí)間片單位(為2),/但尚未完成的進(jìn)程的PCB,插到就緒隊(duì)列的隊(duì)尾;tail-next=q;tail
21、=q;q-next=NULL;void roundrun_init(char chose)/*循環(huán)輪轉(zhuǎn)法初始化 將就緒隊(duì)列保存為FIFO隊(duì)列*/PCB *p;int i,time;char na10;ready=NULL;finish=NULL;run=NULL;printf(tt循環(huán)輪轉(zhuǎn)算法模擬全過(guò)程nn);printf(輸入進(jìn)程 的個(gè)數(shù) N:n);scanf(%d,&N);for(i=0;iname,na);p-cputime=0;p-needtime=time;p-count=0;p-state=W;p-round=2;if(ready!=NULL)insert_rr(p);else p
22、-next=ready; ready=p; tail=p;printf(當(dāng)前就緒隊(duì)列的進(jìn)程的信息n);print(chose);printf(%d個(gè)進(jìn)程已按FIFO進(jìn)到就緒隊(duì)列中n,N);printf(按回車鍵開始模循環(huán)輪轉(zhuǎn)算法.n);fflush(stdin);getchar();run=ready;ready=ready-next;run-state=R; void roundrun(char chose)/循環(huán)輪轉(zhuǎn)法總算法int i=1;while(run!=NULL)run-cputime+=1;run-needtime-=1;run-count+=1;if(run-needtime=
23、0) run-next=finish; finish=run; run-state=F; run-prio=0; run=NULL; if(ready!=NULL) firstin(); else if(run-count=run-round) run-count=0; if(ready!=NULL) run-state=W; insert_rr(run); firstin(); print(chose); getchar();實(shí)驗(yàn)二源代碼#include#include#include#define MAX_SIZE 32767typedef struct node /定義分區(qū)描述器的結(jié)構(gòu)i
24、nt id; /編號(hào)int adr; /分區(qū)首地址int size; /分區(qū)大小struct node *next;/指向下一個(gè)分區(qū)的指針Node;Node *head1,*head2,*back1,*back2,*assign;/*head-空閑區(qū)隊(duì)列首指針 back-指向釋放區(qū)Node結(jié)構(gòu)的指針 assign-指向申請(qǐng)的內(nèi)存分區(qū)Node結(jié)構(gòu)的指針*/int request; /用戶申請(qǐng)存儲(chǔ)區(qū)的大?。ㄓ捎脩糨斎耄﹊nt check(int add,int siz,char c)/用于檢查指定的釋放塊(由用戶鍵入)的合法性Node *p,*head;int check=1;if(add0|si
25、znext;while(p!=NULL)&check)/*地址不能和空閑區(qū)表中結(jié)點(diǎn)出現(xiàn)重疊*/ if(addadr)&(add+sizp-adr)|(add=p-adr)&(addadr+p-size) check=0; else p=p-next;if(check=0) printf(t輸入釋放區(qū)地址或大小有錯(cuò)誤!n); return check; /*返回檢查結(jié)果*/void init()/初始化,生成兩個(gè)帶頭節(jié)點(diǎn)的空閑隊(duì)列指針, /head1指向first-fit的空閑隊(duì)列頭,head2指向best-fit的空閑隊(duì)列頭Node *p;head1=(Node*)malloc(sizeof(
26、Node);head2=(Node*)malloc(sizeof(Node);p=(Node*)malloc(sizeof(Node);head1-next=p;head2-next=p;p-size=MAX_SIZE;p-adr=0;p-next=NULL;p-id=0;Node* assignment1(int num,int req)/實(shí)現(xiàn)首次適應(yīng)算法的分配Node *before,*after,*ass;ass=(Node*)malloc(sizeof(Node);before=head1;after=head1-next;ass-id=num;ass-size=req;while(a
27、fter-sizenext;after=after-next;if(after=NULL)ass-adr=-1;/分配失敗elseif(after-size=req)/空閑分區(qū)恰好等于所申請(qǐng)的內(nèi)存大小before-next=after-next;ass-adr=after-adr;else/空閑分區(qū)大于所申請(qǐng)的內(nèi)存大小after-size-=req;ass-adr=after-adr;after-adr+=req; return ass; void acceptment1(int address,int siz,int rd)/實(shí)現(xiàn)首次適應(yīng)算法的回收Node *before,*after;in
28、t insert=0;back1=(Node*)malloc(sizeof(Node);before=head1;after=head1-next;back1-adr=address;back1-size=siz;back1-id=rd;back1-next=NULL;while(!insert&after)/將要被回收的分區(qū)插入空閑區(qū)(按首址大小從小到大插入)if(after=NULL)|(back1-adradr)&(back1-adr=before-adr)before-next=back1;back1-next=after;insert=1;elsebefore=before-next
29、;after=after-next; if(insert)if(back1-adr=before-adr+before-size)/和前邊分區(qū)合并before-size+=back1-size;before-next=back1-next;free(back1); else if(after&back1-adr+back1-size=after-adr)/和后邊分區(qū)合并back1-size+=after-size;back1-next=after-next;back1-id=after-id;free(after);after=back1;printf(t首先分配算法回收內(nèi)存成功!n);els
30、eprintf(t首先分配算法回收內(nèi)存失敗!n); Node* assignment2(int num,int req)/實(shí)現(xiàn)最佳適應(yīng)算法的分配 Node *before,*after,*ass,*q;ass=(Node*)malloc(sizeof(Node);q=(Node*)malloc(sizeof(Node);before=head2;after=head2-next;ass-id=num;ass-size=req;while(after-sizenext;after=after-next;if(after=NULL)ass-adr=-1;/分配失敗elseif(after-size
31、=req)/空閑分區(qū)恰好等于所申請(qǐng)的內(nèi)存大小before-next=after-next;ass-adr=after-adr; else/空閑分區(qū)大于所申請(qǐng)的內(nèi)存大小q=after;before-next=after-next;ass-adr=q-adr;q-size-=req;q-adr+=req;before=head2;after=head2-next;if(after=NULL)before-next=q;q-next=NULL;elsewhile(after-size)size)before=before-next;after=after-next; before-next=q;q-
32、next=after; return (ass); void acceptment2(int address,int siz,int rd)/實(shí)現(xiàn)最佳適應(yīng)算法的回收Node *before,*after;int insert=0;/是否被回收的標(biāo)志back2=(Node*)malloc(sizeof(Node);before=head2;after=head2-next;back2-adr=address;back2-size=siz;back2-id=rd;back2-next=NULL;if(head2-next=NULL)/空閑隊(duì)列為空head2-next=back2;head2-siz
33、e=back2-size;else/空閑隊(duì)列不為空while(after)if(back2-adr=after-adr+after-size)/和前邊空閑分區(qū)合并before-next=after-next;after-size+=back2-size;back2=after; elsebefore=before-next;after=after-next;before=head2;after=head2-next;while(after)if(after-adr=back2-adr+back2-size)/和后邊空閑區(qū)合并before-next=after-next;back2-size+=after-size;elsebefore=before-next;after=after-next;before=head2;after=head2-next;while(!insert)/將被回收的塊插入到恰當(dāng)?shù)奈恢茫ò捶謪^(qū)大小從小到大)if(after=NULL|(after-sizeback2-size)&(before-sizesize) before-next=back2; back2-next=after; insert=1;break; else before=before-next; after=after-next; if(insert)pri
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 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ì)用戶上傳內(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025湖北十堰市竹山縣旅游產(chǎn)業(yè)服務(wù)中心招聘公益性崗位人員1人備考題庫(kù)及完整答案詳解
- 2026河南許昌煙草機(jī)械有限責(zé)任公司招聘38人備考題庫(kù)附答案詳解
- 2025中國(guó)科學(xué)院認(rèn)知科學(xué)與心理健康全國(guó)重點(diǎn)實(shí)驗(yàn)室博士后及研究助理招聘2人備考題庫(kù)及答案詳解參考
- 2026中國(guó)科學(xué)院高能物理研究所黨委辦公室主任崗位招聘1人備考題庫(kù)及一套參考答案詳解
- 2026年自然資源部所屬單位公開招聘634人備考題庫(kù)(第一批)參考答案詳解
- 2025恒豐銀行合肥分行社會(huì)招聘11人備考題庫(kù)有完整答案詳解
- 2026浙江臺(tái)州市公路與運(yùn)輸管理中心招聘編制外合同工1人備考題庫(kù)及一套答案詳解
- 2026年反電信詐騙知識(shí)競(jìng)賽試題及答案(共五套)
- 2026年智能門窗管理軟件項(xiàng)目公司成立分析報(bào)告
- 2026年睡眠頭帶項(xiàng)目可行性研究報(bào)告
- 廣東省建筑工程混凝土結(jié)構(gòu)抗震性能設(shè)計(jì)規(guī)程
- 切削液回收及處理合同模板
- 2023年移動(dòng)綜合網(wǎng)絡(luò)資源管理系統(tǒng)技術(shù)規(guī)范功能分冊(cè)
- 幼兒園大班班本課程-邂逅水墨課件
- 計(jì)算機(jī)輔助翻譯智慧樹知到期末考試答案章節(jié)答案2024年西華大學(xué)
- HGT 2520-2023 工業(yè)亞磷酸 (正式版)
- 閻良現(xiàn)代設(shè)施花卉產(chǎn)業(yè)園規(guī)劃設(shè)計(jì)方案
- 2023-2024學(xué)年成都市金牛區(qū)九年級(jí)上英語(yǔ)(一診)期末考試題(含答案)
- 220kV直流系統(tǒng)全部檢驗(yàn)作業(yè)指導(dǎo)書
- NB-T 47013.1-2015 承壓設(shè)備無(wú)損檢測(cè) 第1部分-通用要求
- “超額利潤(rùn)資料新提成”薪酬激勵(lì)方案
評(píng)論
0/150
提交評(píng)論