資源描述:
《先來先服務(wù)實驗報告.doc》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。
1、數(shù)據(jù)結(jié)構(gòu)實驗報告安徽大學先來先服務(wù)算法完成進程調(diào)度實驗報告一、實驗?zāi)康模海?)加深對進程的理解(2)理解進程控制塊的結(jié)構(gòu)(3)理解進程運行的并發(fā)性(1)掌握先來先服務(wù)算法進程調(diào)度算法一、實驗內(nèi)容:(1)進程的調(diào)度策略采用先來先服務(wù)算法(2)設(shè)計三個鏈隊列,分別表示運行隊列、就緒隊列和完成隊列(3)用戶輸入進程標識符以及進程所需的時間,申請空間存放進程PCB信息。(4)每個進程結(jié)束時,輸出各進程的進程號,進程到達的時間,進程開始執(zhí)行的時間,進程執(zhí)行完成的時間,以及狀態(tài)(即用W表示等待,R表示運行,F(xiàn)
2、表示完成)二、提示:先來先服務(wù)調(diào)度:按照進程進入的先后次序來分配處理器。先進入就緒隊列的進程優(yōu)先被挑選,運行進程一旦占有處理器將一直運行下去,直到運行結(jié)束或被阻塞,這是中非剝奪式調(diào)度。進程控制塊可以采用如下定義:typedefstructpcb{charID[3];charname[10];charstate;intarrivetime;intbeginttime;intfinishtime;intservicetime;floatturnaroundtime;floatweightedturna
3、roundtime;structPCB*next;}pcb;四、實驗代碼:#include"stdio.h"#include"stdlib.h"typedefstructpcb{charID[3];charname[10];charstate;intarrivetime;intbeginttime;intfinishtime;intservicetime;floatturnaroundtime;floatweightedturnaroundtime;structPCB*next;}pcb;intt
4、ime;intn;pcb*head=NULL,*p,*q;voidrun_fcfs(pcb*p1){time=p1->arrivetime>time?p1->arrivetime:time;p1->begintime=time;printf("現(xiàn)在時間是%d,開始運行作業(yè)%s",time,p1->name);time+=p1->servicetime;p1->state='T';p1->finishtime=time;p1->turnaroundtime=p1->finishtime-p1
5、->arrivetime;p1->weightedturnaroundtime=p1->turnaroundtime/p1->servicetime;printf("ID到達時間開始時間服務(wù)時間完成時間周轉(zhuǎn)時間帶權(quán)周轉(zhuǎn)時間");printf(""%s%6d%10d%8d%10.1f%10.2f"",p1->ID,p1->arrivetime,p1->begintime,p1->servicetime,p1->finishtime,p1->turnaroundtime,p1->weighte
6、dturnaroundtime);}voidfcfs(){inti,j;p=head;for(i=0;istate=='F'){q=p;run_fcfs(q);}p=p->next;}}voidgetInfo(){intnum;printf("作業(yè)個數(shù):");scanf("%d",&n);for(num=0;num7、"%st%st%dt%d",&p->ID,&p->name,&p->arrivetime,&p->servicetime);if(head==NULL){head=p;q=p;time=p->arrivetime;}if(p->arrivetime
8、LL;p-state='F';q=p;}}voidmain(){printf("先來先服務(wù)算法模擬");getInfo();p=head;fcfs();}五運行結(jié)果:六、實驗總結(jié):通過此次實驗,加深了對進程的理解,同時掌握了進程控制塊的結(jié)構(gòu),理解了進程運行的并發(fā)性。