資源描述:
《實(shí)驗(yàn)三進(jìn)程調(diào)度蔡鳳武.doc》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫(kù)。
1、實(shí)驗(yàn)三進(jìn)程調(diào)度實(shí)驗(yàn)?zāi)康?、理解有關(guān)進(jìn)程控制塊、進(jìn)程隊(duì)列的概念。2、掌握進(jìn)程優(yōu)先權(quán)調(diào)度算法和時(shí)間片輪轉(zhuǎn)調(diào)度算法的處理邏輯。實(shí)驗(yàn)內(nèi)容與基本要求1、設(shè)計(jì)進(jìn)程控制塊PCB的結(jié)構(gòu),分別適用于優(yōu)先權(quán)調(diào)度算法和時(shí)間片輪轉(zhuǎn)調(diào)度算法。2、建立進(jìn)程就緒隊(duì)列。3、編制兩種進(jìn)程調(diào)度算法:優(yōu)先權(quán)調(diào)度算法和時(shí)間片輪轉(zhuǎn)調(diào)度算法。實(shí)驗(yàn)報(bào)告內(nèi)容一.優(yōu)先權(quán)調(diào)度算法和時(shí)間片輪轉(zhuǎn)調(diào)度算法原理。對(duì)于優(yōu)先權(quán)調(diào)度算法,其關(guān)鍵是在于是采用靜態(tài)優(yōu)先權(quán)還是動(dòng)態(tài)優(yōu)先權(quán),以及如何確定進(jìn)程的優(yōu)先權(quán)。靜態(tài)優(yōu)先權(quán)是在創(chuàng)建進(jìn)程是確定的,并且規(guī)定它在進(jìn)程的整個(gè)運(yùn)行期間保持不變。動(dòng)態(tài)優(yōu)先權(quán)要配合搶占調(diào)度方式使用,它是指在創(chuàng)建進(jìn)程時(shí)所賦予的
2、優(yōu)先權(quán),可以隨著進(jìn)程的推進(jìn)而發(fā)生改變,以便獲得更好的調(diào)度性能。在就緒隊(duì)列中等待調(diào)度的進(jìn)程,可以隨著等待時(shí)間的增加,其優(yōu)先權(quán)也以某個(gè)速率增加。因此,對(duì)于優(yōu)先權(quán)初值很低的進(jìn)程,在等待足夠時(shí)間后,其優(yōu)先權(quán)也可能升為最高,從而獲得調(diào)度,占用處理器并執(zhí)行。對(duì)已時(shí)間片輪轉(zhuǎn)調(diào)度算法,系統(tǒng)將所有的就緒進(jìn)程按進(jìn)路就緒隊(duì)列的先后次序排列。每次調(diào)度時(shí)把CPU分配給隊(duì)首進(jìn)程,讓其執(zhí)行一個(gè)時(shí)間片,當(dāng)時(shí)間片用完,由計(jì)時(shí)器發(fā)出時(shí)鐘中斷,調(diào)度程序則暫停改程序的執(zhí)行,使其退出處理器,并將它送人就緒隊(duì)的末尾,等待下一輪調(diào)度執(zhí)行。然后,把cpu分配給就緒隊(duì)列中新的隊(duì)首進(jìn)程,同時(shí)讓它執(zhí)行一個(gè)時(shí)間片。二.程序流程
3、圖。結(jié)束就緒隊(duì)列為空嗎二.程序及注釋。#include#include#include#include#include#include#defineP_NUM5#defineP_TIME50enumst{ready,execute,block,finish};//狀態(tài)定義進(jìn)程//structpcb{charname[4];//進(jìn)程名字//intpriority;//進(jìn)程優(yōu)先權(quán)//intcputime;//CPU運(yùn)行時(shí)間//intneedtime;//進(jìn)程運(yùn)行
4、需要的時(shí)間//intcount;//進(jìn)程執(zhí)行次數(shù)//intround;//時(shí)間片輪轉(zhuǎn)輪次//stprocess;//進(jìn)程狀態(tài)//pcb*next;};//定義進(jìn)程//pcb*get_process(){pcb*q;pcb*t;pcb*p;inti=0;cout<<"inputnameandtime"<>q->name;cin>>q->needtime;q->cputime=0;q->priority=P_TIME-q->needtime;q->proces
5、s=ready;q->next=NULL;if(i==0){p=q;t=q;}else{t->next=q;t=q;}i++;}returnp;//輸入模擬測(cè)試的進(jìn)程名和執(zhí)行所需的時(shí)間,初始設(shè)置可模擬5個(gè)進(jìn)程的調(diào)度//}voiddisplay(pcb*p){cout<<"name"<<""<<"cputime"<<""<<"needtime"<<""<<"priority"<<""<<"st"<name;cout<<"";cout<cputime;cout<<"";cout<needtime;cout<<""
6、;cout<priority;cout<<"";switch(p->process){caseready:cout<<"ready"<next;}}//顯示模擬結(jié)果,包含進(jìn)程名,cpu的時(shí)間。運(yùn)行所需時(shí)間以及優(yōu)先級(jí)//intprocess_finish(pcb*q){intbl=1;while(bl&&q
7、){bl=bl&&q->needtime==0;q=q->next;}returnbl;//結(jié)束進(jìn)程,即將隊(duì)列中各進(jìn)程的所需時(shí)間設(shè)置為零//}voidcpuexe(pcb*q){pcb*t=q;inttp=0;while(q){if(q->process!=finish){q->process=ready;if(q->needtime==0)q->process=finish;}if(tppriority&&q->process!=finish){tp=q->priority;t=q;}q=q->next;}if(t-