使用動(dòng)態(tài)優(yōu)先權(quán)的進(jìn)程調(diào)度算法的模擬_第1頁(yè)
使用動(dòng)態(tài)優(yōu)先權(quán)的進(jìn)程調(diào)度算法的模擬_第2頁(yè)
使用動(dòng)態(tài)優(yōu)先權(quán)的進(jìn)程調(diào)度算法的模擬_第3頁(yè)
使用動(dòng)態(tài)優(yōu)先權(quán)的進(jìn)程調(diào)度算法的模擬_第4頁(yè)
使用動(dòng)態(tài)優(yōu)先權(quán)的進(jìn)程調(diào)度算法的模擬_第5頁(yè)
已閱讀5頁(yè),還剩8頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

=====WORD完整版----可編輯----專業(yè)資料分享使用動(dòng)態(tài)優(yōu)先權(quán)的進(jìn)程調(diào)度算法的模擬1、 實(shí)驗(yàn)?zāi)康耐ㄟ^(guò)動(dòng)態(tài)優(yōu)先權(quán)算法的模擬加深對(duì)進(jìn)程概念和進(jìn)程調(diào)度過(guò)程的理解。2、 實(shí)驗(yàn)內(nèi)容(1) 用C語(yǔ)言來(lái)實(shí)現(xiàn)對(duì)N個(gè)進(jìn)程采用動(dòng)態(tài)優(yōu)先算法的進(jìn)程調(diào)度;(2) 每個(gè)用來(lái)標(biāo)識(shí)進(jìn)程的進(jìn)程控制塊PCB用結(jié)構(gòu)來(lái)描述,包括以下字段:?進(jìn)程標(biāo)識(shí)符id?進(jìn)程優(yōu)先數(shù)priority,并規(guī)定優(yōu)先數(shù)越大的進(jìn)程,其優(yōu)先權(quán)越高;進(jìn)程已占用的CPU時(shí)間cputime;進(jìn)程還需占用的CPU時(shí)間alltime,當(dāng)進(jìn)程運(yùn)行完畢時(shí),alltime變?yōu)?;進(jìn)程的阻塞時(shí)間startblock,表示當(dāng)進(jìn)程再運(yùn)行startblock個(gè)時(shí)間片后,進(jìn)程將進(jìn)入阻塞狀態(tài);進(jìn)程被阻塞的時(shí)間blocktime,表示已阻塞的進(jìn)程再等待blocktime個(gè)時(shí)間片后,將轉(zhuǎn)換成就緒態(tài)進(jìn)程狀態(tài)state;?隊(duì)列指針next,用來(lái)將PCB排成隊(duì)列(3) 優(yōu)先數(shù)改變的原則:?進(jìn)程在就緒隊(duì)列中呆一個(gè)時(shí)間片,優(yōu)先數(shù)增加1?進(jìn)程每運(yùn)行一個(gè)時(shí)間片,優(yōu)先數(shù)減3。(4) 假設(shè)在調(diào)度前,系統(tǒng)中有5個(gè)進(jìn)程,它們的初始狀態(tài)如下:ID01234PRIORITY93830290CPUTIME00000ALLTIME33634STARTBLOCK2-1-1-1-1BLOCKTIME30000STATEREADYREADYREADYREADYREADY(5)為了清楚地觀察諸進(jìn)程的調(diào)度過(guò)程,程序應(yīng)將每個(gè)時(shí)間片內(nèi)的進(jìn)程的情況顯示出來(lái),參照的具體格式如下:RUNNINGPROG:iREADY_QUEUE:->id1->id2BLOCK_QUEUE:->id3->id4ID01234PRIORITYP0P1P2P3P4CPUTIMEC0C1C2C3C4ALLTIMEA0A1A2A3A4STARTBLOCKT0T1T2T3T4BLOCKTIMEB0B1B2B3B4STATES0S1S2S3S43、思考題(1)在實(shí)際的調(diào)度中,除了按調(diào)度算法選擇下一個(gè)執(zhí)行的進(jìn)程外,還應(yīng)處理哪些工作?一、實(shí)驗(yàn)?zāi)康耐ㄟ^(guò)動(dòng)態(tài)優(yōu)先權(quán)算法的模擬加深進(jìn)程概念和進(jìn)程調(diào)度過(guò)程的理解,并學(xué)習(xí)撰寫規(guī)范的科學(xué)研究報(bào)告。二、 實(shí)驗(yàn)環(huán)境及設(shè)備實(shí)驗(yàn)地點(diǎn):實(shí)C三樓機(jī)房、宿舍主要儀器設(shè)備:PC機(jī)、RedFlagLinux和Windows?操作系統(tǒng)、g++和VC++6.0環(huán)境三、 實(shí)驗(yàn)內(nèi)容對(duì)N個(gè)進(jìn)程采用動(dòng)態(tài)優(yōu)先權(quán)算法的進(jìn)程調(diào)度;每個(gè)用來(lái)標(biāo)識(shí)進(jìn)程的進(jìn)程控制塊PCB用結(jié)構(gòu)描述,包括以下字段:進(jìn)程標(biāo)識(shí)數(shù)ID,進(jìn)程優(yōu)先數(shù)PRIORITY,進(jìn)程以占用的CPU時(shí)間CPUTIME,進(jìn)程還需占用的CPU時(shí)間ALLTIME,進(jìn)程狀態(tài)STATE等。優(yōu)先數(shù)改變的原則:進(jìn)程在就緒隊(duì)列中呆一個(gè)時(shí)間片,優(yōu)先數(shù)增加1,進(jìn)程每運(yùn)行一個(gè)時(shí)間片優(yōu)先數(shù)減3。設(shè)置調(diào)度前的初始狀態(tài)。將每個(gè)時(shí)間片內(nèi)的進(jìn)程情況顯示出來(lái)。四、 調(diào)試分析程序首先設(shè)置一個(gè)struct,模擬操作系統(tǒng)的PCB數(shù)據(jù)結(jié)構(gòu),并初始化。PCB有ID、PRIORITY.CPUTIME、ALLTIME、STATE五個(gè)字段,其中STATE有兩個(gè)狀態(tài),0為未完成,1為完成。首先,程序會(huì)調(diào)用maxp()函數(shù)找出優(yōu)先權(quán)PRIORITY最大的進(jìn)程ID,如果有若十個(gè)進(jìn)程的PRIORITY相同,則程序會(huì)選擇還需時(shí)間ALLTIME最少的進(jìn)程,取出ID作為下一個(gè)時(shí)間片要執(zhí)行的進(jìn)程。當(dāng)前進(jìn)程執(zhí)行完后,程序會(huì)調(diào)用change()函數(shù)修改進(jìn)程的各個(gè)字段,未執(zhí)行的進(jìn)程呆一個(gè)時(shí)間片優(yōu)先權(quán)PRIORITY就+1,剛執(zhí)行完的進(jìn)程優(yōu)先權(quán)PRIORITY就-3,并且已經(jīng)執(zhí)行的CPU時(shí)間CPUTIME增加1,還需CPU時(shí)間ALLTIME減少1。如果一個(gè)進(jìn)程還需CPU時(shí)間ALLTIME為0,說(shuō)明該進(jìn)程完成了,狀態(tài)STATE就修改為1,表示進(jìn)程已經(jīng)完成了,同時(shí)優(yōu)先權(quán)變?yōu)?或者更低的數(shù)值,表示該進(jìn)程不能再執(zhí)行了。程序每運(yùn)行一個(gè)時(shí)間片,就調(diào)用display()函數(shù)將所有進(jìn)程的字段顯示出來(lái)。如果所有程序的狀態(tài)都為1了,表示所有進(jìn)程都執(zhí)

行完了,程序?qū)⑼顺?。五、?shí)驗(yàn)結(jié)果ID01234PRIORITY93830290CPUTIME00000ALLTIME33634STATE00000RUNNINGPROG:1ID01234PRIORITY103531301CPUTIME01000ALLTIME32634STATE00000RUNNINGPROG:1ID01234PRIORITY113232312CPUTIME02000ALLTIME31634STATE00000RUNNINGPROG:1ID01234PRIORITY12033323CPUTIME03000ALLTIME30634STATE01000RUNNINGPROG:2

ID01234PRIORITY13030334CPUTIME03100ALLTIME30534STATE01000RUNNINGPROG:3ID01234PRIORITY14031305CPUTIME03110ALLTIME30524STATE01000RUNNINGPROG:2ID01234PRIORITY15028316CPUTIME03210ALLTIME30424STATE01000RUNNINGPROG:3ID01234PRIORITY16029287CPUTIME03220ALLTIME30414STATE01000RUNNINGPROG:2ID01234PRIORITY17026298CPUTIME03320ALLTIME30314STATE01000RUNNINGPROG:3ID01234PRIORITY1802709CPUTIME03330ALLTIME30304STATE01010RUNNINGPROG:2ID01234PRIORITY19024010CPUTIME03430ALLTIME30204STATE01010RUNNINGPROG:2ID01234PRIORITY20021011CPUTIME03530ALLTIME30104STATE01010RUNNINGPROG:2ID01234PRIORITY2100012CPUTIME03630ALLTIME30004STATE01110ID01234PRIORITY1800013CPUTIME13630ALLTIME20004STATE01110RUNNINGPROG:0ID01234PRIORITY1500014CPUTIME23630ALLTIME10004STATE01110RUNNINGPROG:0ID01234PRIORITY000015CPUTIME33630ALLTIME00004STATE11110RUNNINGPROG:4ID01234PRIORITY000012CPUTIME33631ALLTIME00003STATE11110RUNNINGPROG:4ID01234PRIORITY00009CPUTIME33632ALLTIME00002STATE11110RUNNINGPROG:4ID01234PRIORITY00006CPUTIME33633ALLTIME00001STATE11110RUNNINGPROG:4ID01234PRIORITY00000CPUTIME33634ALLTIME00000STATE11111RUNNINGPROG:0Pressanykeytocontinue從上面的執(zhí)行結(jié)果知道,進(jìn)程的執(zhí)行順序?yàn)椋?->1->1->2->3->2->3->2->3->2->2->2->0->0->0->4->4->4->4六、實(shí)驗(yàn)源程序〃使用動(dòng)態(tài)優(yōu)先權(quán)的進(jìn)程調(diào)度算法的模擬#include<stdio.h>#include<iostream.h>inti; //彳循環(huán)值intj; //未執(zhí)行完的進(jìn)程數(shù)即還在阻塞或就緒隊(duì)列中的進(jìn)程數(shù)ints; //優(yōu)先權(quán)數(shù)intm; //最大priority的id即應(yīng)該被調(diào)用的id號(hào)structpcb{intid;intp; //priority優(yōu)先權(quán)intcputime;intalltime;intstate; //0 就緒1 完成};structpcbpro[5]={{0,9,0,3,0},{1,38,0,3,0},{2,30,0,6,0},{3,29,0,3,0},{4,0,0,4,0}};intmaxp() //求出最大priority所在進(jìn)程的id{s=pro[0].p;intmaxpriority=pro[0].p;intminalltime=pro[0].alltime;m=pro[0].id;for(i=1;i<j;i++){if(pro[i].p>maxpriority){maxpriority=pro[i].p; //max為最大的優(yōu)先權(quán)數(shù)minalltime=pro[i].p;m=pro[i].id; //最大p的id}elseif(pro[i].p==maxpriority){if(pro[i].alltime>minalltime){minalltime=pro[i].alltime;m=pro[i].id;}}}returnm;}voidchange(){maxp();intx; //得到m現(xiàn)在的數(shù)組編號(hào)for(i=0;i<j;i++){if(1!=pro[i].state)〃完成執(zhí)行一個(gè)時(shí)間片優(yōu)先權(quán)加1〃完成執(zhí)行一個(gè)時(shí)間片優(yōu)先權(quán)加1的操作for(i=0;i<j;i++)if(pro[i].id==m)x=i;pro[x].cputime++;pro[x].p=pro[x].p-4;pro[x].alltime—;if(pro[x].alltime==0){pro[x].state=1;pro[x].p=0;}}voiddisplay(){cout<<〃===============================================================\n〃;cout<<"ID〃<<〃\t〃;for(i=0;i<j;i++){cout.width(10);cout<<pro[i].id;}cout<<endl<<"PRIORITY";for(i=0;i<j;i++){cout.width(10);cout<<pro[i].p;}cout<<endl<<"CPUTIME";for(i=0;i<j;i++){cout.width(10);cout<<pro[i].cputime;}cout<<endl<<"ALLTIME";for(i=0;i<j;

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論