




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
操作系統(tǒng)實驗〔2〕實驗題目:作業(yè)調(diào)度實課程名稱:操作系統(tǒng)學(xué)院:專業(yè)班級:學(xué)號(1):姓名(1):學(xué)號(2):姓名(2):任課教師:2010年4月12日學(xué)院:管理學(xué)院班級:組員:組員:評定:實驗題目:作業(yè)調(diào)度實驗實驗?zāi)康模河酶呒壵Z言編寫和調(diào)試一個或多個作業(yè)調(diào)度的模擬程序,以加深對作業(yè)調(diào)度算法的理解。〔2〕實驗內(nèi)容:編寫并調(diào)試一個單道處理系統(tǒng)的作業(yè)等待模擬程序。作業(yè)等待算法:分別采用先來先效勞〔FCFS〕,最短作業(yè)優(yōu)先〔SJF〕、響應(yīng)比高者優(yōu)先〔HRN〕的調(diào)度算法。對每種調(diào)度算法都要求打印每個作業(yè)開始運行時刻、完成時刻、周轉(zhuǎn)時間、帶權(quán)周轉(zhuǎn)時間,以及這組作業(yè)的平均周轉(zhuǎn)時間及帶權(quán)平均周轉(zhuǎn)時間,以比擬各種算法的優(yōu)缺點。源代碼〔含注釋〕:=1\*GB3①先來先效勞〔FCFS〕:#include"stdio.h"#include<stdlib.h>#include<conio.h>#definegetpch(type)(type*)malloc(sizeof(type))#defineNULL0structjcb{/*定義作業(yè)控制塊PCB*/charname[10];charstate;intttime;intntime;intrtime;intotime;intetime;floatzztime;floatdqtime;structjcb*link;}*ready=NULL,*p;intnum,n;intsrtime=0,ertime=1;floatpztime=0.0,pqtime=0.0;typedefstructjcbJCB;voidsort()/*建立對進程進行提交時間排列函數(shù)*/{JCB*first,*second;intinsert=0;if((ready==NULL)||((p->ttime)<(ready->ttime)))/*提交時間最大者,插入隊首*/{p->link=ready;ready=p;}else/*進程比擬提交時間,插入適當(dāng)?shù)奈恢弥?/{first=ready;second=first->link;while(second!=NULL){if((p->ttime)<(second->ttime))/*假設(shè)插入進程比當(dāng)前提交時間早*/{/*插入到當(dāng)前進程前面*/p->link=second;first->link=p;second=NULL;insert=1;}else/*插入進程提交時間最晚,那么插入到隊尾*/{first=first->link;second=second->link;}}if(insert==0)first->link=p;}}voidpl(){JCB*pr;pr=ready;if(p->link!=NULL){if(ready->ttime<=srtime){while(pr->link!=NULL){pr=pr->link;}pr->link=p;p->link=NULL;p=ready;ready=p->link;}}else{ready=p;}}voidinput()/*建立進程控制塊函數(shù)*/{inti;clrscr();/*清屏*/printf("\ninputthenumberofprocess?");scanf("%d",&num);n=num;for(i=0;i<num;i++){printf("\nprocessNo.%d:\n",i);p=getpch(JCB);printf("\ninputtheprocessname:");scanf("%s",p->name);printf("\ninputthesubmittime:");scanf("%d",&p->ttime);printf("\ninputtheprocess'timeneedtorun:");scanf("%d",&p->ntime);printf("\n");p->rtime=0;p->state='w';p->link=NULL;sort();/*調(diào)用sort函數(shù)*/}}voiddisp(JCB*pr)/*建立進程顯示函數(shù),用于顯示當(dāng)前進程*/{printf("\nqname\tstate\tndtime\truntime\tttime\n");printf("|%s\t",pr->name);printf("|%c\t",pr->state);printf("|%d\t",pr->ntime);printf("|%d\t",pr->rtime);}voidcheck()/*建立進程查看函數(shù)*/{JCB*pr;printf("\n****nowtherunningprocessis:%s",p->name);/*顯示當(dāng)前運行進程*/disp(p);printf("|%d\t",p->ttime);pr=ready;printf("\n****thereadyteamare:\n");/*顯示就緒隊列狀態(tài)*/while((pr!=NULL)&&(p->link!=NULL)){if(pr->ttime<=srtime)disp(pr);pr=pr->link;}}voiddestroy()/*建立進程撤消函數(shù)(進程運行結(jié)束,撤消進程)*/{num--;p->etime=ertime;p->zztime=ertime-p->ttime;p->dqtime=p->zztime/p->ntime;pztime=pztime+p->zztime;pqtime=pqtime+p->dqtime;printf("\nprocess[%s]havebeenachieved.\n",p->name);printf("turnaroundtimeis%-3.1f,turnaroundtimewiththerightis%-3.1f",p->zztime,p->dqtime);free(p);if(p->link==NULL)ready==NULL;if(ready->link!=NULL){p=ready;ready=p->link;}else{p=ready;}}voidrunning()/*建立進程就緒函數(shù)(進程運行時間到,置就緒狀態(tài)〕*/{if(p->ttime<=srtime){(p->rtime)++;check();srtime++;ertime++;pl();if(p->rtime==p->ntime)destroy();/*調(diào)用destroy函數(shù)*/else{p->state='w';}}else{printf("theprocessisn'tcomeintomerroy,waitthenexttime");srtime++;ertime++;}}voidmain()/*主函數(shù)*/{inth=0;charch;input();p=ready;ready=p->link;while((num!=0)&&(ready!=NULL)){ch=getchar();h++;printf("\nTheexecutenumber:%d\n",h);p->state='R';running();printf("\npressanykeytocontinue......");ch=getchar();}pztime=pztime/n;pqtime=pqtime/n;printf("\n\nprocesshavebeenachieved.\n");printf("theaverageturnaroundtimeis%-3.1f,theaverageturnaroundtimewithrightis%-3.1f\n",pztime,pqtime);ch=getchar();}=2\*GB3②最短作業(yè)優(yōu)先〔SJF〕:#include"stdio.h"#include<stdlib.h>#include<conio.h>#definegetpch(type)(type*)malloc(sizeof(type))#defineNULL0structjcb{/*定義作業(yè)控制塊PCB*/charname[10];charstate;intttime;intntime;intrtime;intotime;intetime;floatzztime;floatdqtime;structjcb*link;}*ready=NULL,*p;intnum,n;intsrtime=0,ertime=1;floatpztime=0.0,pqtime=0.0;typedefstructjcbJCB;voidsort()/*建立對進程進行提交時間排列函數(shù)*/{JCB*first,*second;intinsert=0;if((ready==NULL)||((p->ttime)<(ready->ttime)))/*提交時間最大者,插入隊首*/{p->link=ready;ready=p;}else/*進程比擬提交時間,插入適當(dāng)?shù)奈恢弥?/{first=ready;second=first->link;while(second!=NULL){if((p->ttime)<(second->ttime))/*假設(shè)插入進程比當(dāng)前提交時間早*/{/*插入到當(dāng)前進程前面*/p->link=second;first->link=p;second=NULL;insert=1;}else/*插入進程提交時間最晚,那么插入到隊尾*/{first=first->link;second=second->link;}}if(insert==0)first->link=p;}}voidpl(){JCB*pr1,*pr2,*prx,*pry;floatx,y;prx=p;pry=prx->link;x=(srtime-p->otime)+(p->ntime);y=x/p->ntime;if(p->link!=NULL){while(pry!=NULL){if(y<=pry->ntime-pry->rtime){y=pry->ntime-pry->rtime;pr1=prx;pr2=pry;}prx=prx->link;pry=prx->link;}if(prx!=p&&pr2->ttime<=srtime){pr1->link=pr2->link;pr2->link=p;p=pr2;ready=p->link;}}else{ready=p;}}voidinput()/*建立進程控制塊函數(shù)*/{inti;clrscr();/*清屏*/printf("\ninputthenumberofprocess?");scanf("%d",&num);n=num;for(i=0;i<num;i++){printf("\nprocessNo.%d:\n",i);p=getpch(JCB);printf("\ninputtheprocessname:");scanf("%s",p->name);printf("\ninputthesubmittime:");scanf("%d",&p->ttime);printf("\ninputtheprocess'timeneedtorun:");scanf("%d",&p->ntime);printf("\n");p->rtime=0;p->state='w';p->otime=0;p->link=NULL;sort();/*調(diào)用sort函數(shù)*/}}voiddisp(JCB*pr)/*建立進程顯示函數(shù),用于顯示當(dāng)前進程*/{printf("\nqname\tstate\tndtime\truntime\tttime\n");printf("|%s\t",pr->name);printf("|%c\t",pr->state);printf("|%d\t",pr->ntime);printf("|%d\t",pr->rtime);}voidcheck()/*建立進程查看函數(shù)*/{JCB*pr;p->otime=srtime;printf("\n****nowtherunningprocessis:%s",p->name);/*顯示當(dāng)前運行進程*/disp(p);printf("|%d\t",p->ttime);pr=ready;printf("\n****thereadyteamare:\n");/*顯示就緒隊列狀態(tài)*/while((pr!=NULL)&&(p->link!=NULL)){if(pr->ttime<=srtime){pr->state='w';disp(pr);}pr=pr->link;}}voiddestroy()/*建立進程撤消函數(shù)(進程運行結(jié)束,撤消進程)*/{num--;p->etime=ertime;p->zztime=ertime-p->ttime;p->dqtime=p->zztime/p->ntime;pztime=pztime+p->zztime;pqtime=pqtime+p->dqtime;printf("\nprocess[%s]havebeenachieved.\n",p->name);printf("turnaroundtimeis%-3.1f,turnaroundtimewiththerightis%-3.1f",p->zztime,p->dqtime);free(p);if(p->link==NULL)ready==NULL;if(ready->link!=NULL){p=ready;ready=p->link;}else{p=ready;}}voidrunning()/*建立進程就緒函數(shù)(進程運行時間到,置就緒狀態(tài)〕*/{if(p->ttime<=srtime){(p->rtime)++;check();srtime++;ertime++;pl();if(p->rtime==p->ntime)destroy();/*調(diào)用destroy函數(shù)*/else{p->state='w';}}else{printf("theprocessisn'tcomeintomerroy,waitthenexttime");srtime++;ertime++;}}voidmain()/*主函數(shù)*/{inth=0;charch;input();p=ready;ready=p->link;while((num!=0)&&(ready!=NULL)){ch=getchar();h++;printf("\nTheexecutenumber:%d\n",h);p->state='R';running();printf("\npressanykeytocontinue......");ch=getchar();}pztime=pztime/n;pqtime=pqtime/n;printf("\n\nprocesshavebeenachieved.\n");printf("theaverageturnaroundtimeis%-3.1f,theaverageturnaroundtimewithrightis%-3.1f\n",pztime,pqtime);ch=getchar();}=3\*GB3③響應(yīng)比高者優(yōu)先〔HRN〕:#include"stdio.h"#include<stdlib.h>#include<conio.h>#definegetpch(type)(type*)malloc(sizeof(type))#defineNULL0structjcb{/*定義作業(yè)控制塊PCB*/charname[10];charstate;intttime;intntime;intrtime;intotime;intetime;floatzztime;floatdqtime;structjcb*link;}*ready=NULL,*p;intnum,n;intsrtime=0,ertime=1;floatpztime=0.0,pqtime=0.0;typedefstructjcbJCB;voidsort()/*建立對進程進行提交時間排列函數(shù)*/{JCB*first,*second;intinsert=0;if((ready==NULL)||((p->ttime)<(ready->ttime)))/*提交時間最大者,插入隊首*/{p->link=ready;ready=p;}else/*進程比擬提交時間,插入適當(dāng)?shù)奈恢弥?/{first=ready;second=first->link;while(second!=NULL){if((p->ttime)<(second->ttime))/*假設(shè)插入進程比當(dāng)前提交時間早*/{/*插入到當(dāng)前進程前面*/p->link=second;first->link=p;second=NULL;insert=1;}else/*插入進程提交時間最晚,那么插入到隊尾*/{first=first->link;second=second->link;}}if(insert==0)first->link=p;}}voidpl(){JCB*pr1,*pr2,*prx,*pry;intx;prx=p;pry=prx->link;x=(p->ntime)-(p->rtime);if(p->link!=NULL){while(pry!=NULL){if(x>pry->ntime-pry->rtime){x=pry->ntime-pry->rtime;pr1=prx;pr2=pry;}prx=prx->link;pry=prx->link;}if(prx!=p&&pr2->ttime<=srtime){pr1->link=pr2->link;pr2->link=p;p=pr2;ready=p->link;}}else{ready=p;}}voidinput()/*建立進程控制塊函數(shù)*/{inti;clrscr();/*清屏*/printf("\ninputthenumberofprocess?");scanf("%d",&num);n=num;for(i=0;i<num;i++){printf("\nprocessNo.%d:\n",i);p=getpch(JCB);printf("\ninputtheprocessname:");scanf("%s",p->name);printf("\ninputthesubmittime:");scanf("%d",&p->ttime);printf("\ninputtheprocess'timeneedtorun:");scanf("%d",&p->ntime);printf("\n");p->rtime=0;p->state='w';p->link=NULL;sort();/*調(diào)用sort函數(shù)*/}}voiddisp(JCB*pr)/*建立進程顯示函數(shù),用于顯示當(dāng)前進程*/{printf("\nqname\tstate\tndtime\truntime\tttime\n");printf("|%s\t",pr->name);printf("|%c\t",pr->state);printf("|%d\t",pr->ntime);printf("|%d\t",pr->rtime);}voidcheck()/*建立進程查看函數(shù)*/{JCB*pr;printf("\n****nowtherunningprocessis:%s",p->name);/*顯示當(dāng)前運行進程*/disp(p);printf("|%d\t",p->ttime);pr=ready;printf("\n****thereadyteamare:\n");/*顯示就緒隊列狀態(tài)*/while((pr!=NULL)&&(p->link!=NULL)){if(pr->ttime<=srtime){pr->state='w';disp(pr);}pr=pr->link;}}voiddestroy()/*建立進程撤消函數(shù)(進程運行結(jié)束,撤消進程)*/{num--;p->etime=ertime;p->zztime=ertime-p->ttime;p->dqtime=p->zztime/p->ntime;pztime=pztime+p->zztime;pqtime=pqtime+p->dqtime;printf("\nprocess[%s]havebeenachieved.\n",p->name);printf("turnaroundtimeis%-3.1f,turnaroundtimewiththerightis%-3.1f",p->zztime,p->dqtime);free(p);if(p->link==NULL)ready==NULL;if(ready->link!=NULL){p=ready;ready=p->link;}else{p=ready;}}voidrunning()/*建立進程就緒函數(shù)(進程運行時間到,置就緒狀態(tài)〕*/{if(p->ttime<=srtime){(p->rtime)++;check();srtime++;ertime++;pl();if(p->rtime==p->ntime)destroy();/*調(diào)用destroy函數(shù)*/else{p->state='w';}}else{printf("theprocessisn'tcomeintomerroy,waitthenexttime");srtime++;ertime++;}}voidmain()/*主函數(shù)*/{inth=0;charch;input();p=ready;ready=p->link;while((num!=0)&&(ready!=NULL)){ch=getchar();h++;printf("\nTheexecutenumber:%d\n",h);p->state='R';running();printf("\npressanykeytocontinue......");ch=getchar();}pztime=pztime/n;pqtime=pqtime/n;printf("\n\nprocesshavebeenachieved.\n");printf("theaverageturnaroundtimeis%-3.1f,theaverageturnaroundtimewithrightis%-3.1f\n",pztime,pqtime);ch=getchar();}每個函數(shù)的流程圖:=1\*GB3①先來先效勞〔FCFS〕:voidsort()函數(shù):該函數(shù)用于對進程進行提交時間排列。insert=0開始insert=0開始ready是否為空或者(p->ttime)是否小于(ready->ttime)?是否ready是否為空或者(p->ttime)是否小于(ready->ttime)?first=ready;second=first->link進程比擬提交時間,插入適當(dāng)?shù)奈恢弥衟->link=ready;ready=p即提交時間最大者插入隊首second是否為空?second是否為空?否是(p->ttime)是否小于(second->ttime)(p->ttime)是否小于(second->ttime)insert是否為0是否是first=first->linkfirst=first->linksecond=second->link插入進程提交時間最晚,那么插入到隊尾first->link=pp->link=secondp->link=second;first->link=psecond=NULL;insert=1假設(shè)插入進程比當(dāng)前提交時間早,那么插入到當(dāng)前進程前面結(jié)束結(jié)束voidpl()函數(shù)開始開始pr=readypr=readyp->linkp->link是否為空?否是ready->ttimeready->ttime是否小于等于srtimeready=pready=p是否pr->link是否為空pr->link是否為空 是pr->link=ppr->link=pp->link=NULLp=readyready=p->linkpr=pr->linkpr=pr->link結(jié)束結(jié)束voidinput()函數(shù):該函數(shù)用于建立進程控制塊。開始開始清屏清屏輸入進程數(shù)目輸入進程數(shù)目n=numn=numi是否小于numi是否小于num是否p=getpch(JCB)p=getpch(JCB)結(jié)束結(jié)束輸入進程名、提交時間和進程所需運行時間輸入進程名、提交時間和進程所需運行時間p->rtime=0p->state='w';p->link=NULL調(diào)用sort函數(shù)調(diào)用sort函數(shù)voiddisp(JCB*pr)函數(shù):建立進程顯示函數(shù),用于顯示當(dāng)前進程。開始開始顯示當(dāng)前進程〔進程名、進程狀態(tài)、所需要的時間、運行時間和提交時間〕顯示當(dāng)前進程〔進程名、進程狀態(tài)、所需要的時間、運行時間和提交時間〕結(jié)束結(jié)束voidcheck()函數(shù):該函數(shù)用于進程查看。開始開始顯示當(dāng)前運行進程顯示當(dāng)前運行進程顯示就緒隊列狀態(tài)顯示就緒隊列狀態(tài)pr和p->link是否同時為空pr和p->link是否同時為空否是pr->ttimepr->ttime是否小于等于srtime否是disp(pr)pr=pr->link結(jié)束結(jié)束開始voiddestroy()函數(shù):建立進程撤消函數(shù)(進程運行結(jié)束,撤消進程)。開始num--num--p->etime=ertimep->zztime=ertime-p->ttimep->dqtime=p->zztime/p->ntimepztime=pztime+p->zztimepqtime=pqtime+p->dqtime進程已經(jīng)完成進程已經(jīng)完成輸出周轉(zhuǎn)時間和帶權(quán)周轉(zhuǎn)時間釋放p釋放pp->linkp->link是否為空?是否 ready==NULLready==NULLready->linkready->link是否為空?否是p=readyp=readyp=readyready=p->link結(jié)束結(jié)束voidrunning()函數(shù):建立進程就緒函數(shù)(進程運行時間到,置就緒狀態(tài)〕。開始開始p->ttimep->ttime是否小于等于srtime是否進程未進入內(nèi)存,等待下一時間(p->rtime)++進程未進入內(nèi)存,等待下一時間(p->rtime)++check()srtime++ertime++調(diào)用pl()函數(shù)srtime++ertime++p->rtime是否等于p->ntimesrtime++ertime++p->rtime是否等于p->ntime?是否p->state='w'p->state='w'調(diào)用destroy函數(shù)調(diào)用destroy函數(shù)結(jié)束結(jié)束主函數(shù)開始開始h=0input()p=readyready=p->linknum是否為0且同時ready是否為空?num是否為0且同時ready是否為空?否是pztime=pztime/npqtime=pqtime/npztime=pztime/npqtime=pqtime/nch=getchar()ch=getchar()h++進程完成輸出平均周轉(zhuǎn)時間和平均帶權(quán)周轉(zhuǎn)時間進程完成輸出平均周轉(zhuǎn)時間和平均帶權(quán)周轉(zhuǎn)時間p->state='R'running()按任意鍵繼續(xù)按任意鍵繼續(xù)ch=getchar()ch=getchar()ch=getchar()ch=getchar()結(jié)束結(jié)束=2\*GB3②最短作業(yè)優(yōu)先〔SJF〕:voidsort()函數(shù):該函數(shù)用于對進程進行提交時間排列。開始開始inser=0inser=0ready是否為空或者(p->ttime)是否小于(ready->ttime)?是否ready是否為空或者(p->ttime)是否小于(ready->ttime)?first=ready;second=first->link進程比擬提交時間,插入適當(dāng)?shù)奈恢弥衟->link=ready;ready=p即提交時間最大者插入隊首second是否為空?second是否為空?否是(p->ttime)是否小于(second->ttime)(p->ttime)是否小于(second->ttime)insert是否為0是否是first=first->linkfirst=first->linksecond=second->link插入進程提交時間最晚,那么插入到隊尾first->link=pp->link=secondp->link=second;first->link=psecond=NULL;insert=1假設(shè)插入進程比當(dāng)前提交時間早,那么插入到當(dāng)前進程前面結(jié)束結(jié)束voidpl()函數(shù)開始開始prx=ppry=prx->linkx=(srtime-p->otime)+(p->ntime)y=x/p->ntimep->linkp->link是否為空?否是pry是否為空?pry是否為空?ready=pready=p否是y是否小于等于pry->ntime-pry->rtimey是否小于等于pry->ntime-pry->rtimeprx!=p&&pr2->ttime<=srtimeprx!=p&&pr2->ttime<=srtime? 是 否y=pry->ntime-pry->rtimey=pry->ntime-pry->rtimepr1=prxpr2=pry 否pr1->link=pr2->linkpr1->link=pr2->linkpr2->link=pp=pr2ready=p->linkprx=prx->linkprx=prx->linkpry=prx->link結(jié)束結(jié)束voidinput()函數(shù):該函數(shù)用于建立進程控制塊。開始開始清屏清屏輸入進程數(shù)目輸入進程數(shù)目n=numn=numi是否小于numi是否小于num是否p=getpch(JCB)p=getpch(JCB)結(jié)束結(jié)束輸入進程名、提交時間和進程所需運行時間輸入進程名、提交時間和進程所需運行時間p->rtime=0p->rtime=0p->state='w'p->otime=0p->link=NULL調(diào)用sort函數(shù)調(diào)用sort函數(shù)voiddisp(JCB*pr)函數(shù):建立進程顯示函數(shù),用于顯示當(dāng)前進程。開始開始顯示當(dāng)前進程〔進程名、進程狀態(tài)、所需要的時間、運行時間和提交時間〕顯示當(dāng)前進程〔進程名、進程狀態(tài)、所需要的時間、運行時間和提交時間〕結(jié)束結(jié)束voidcheck()函數(shù):該函數(shù)用于進程查看。開始開始顯示當(dāng)前運行進程顯示當(dāng)前運行進程顯示就緒隊列狀態(tài)顯示就緒隊列狀態(tài)pr和p->link是否同時為空pr和p->link是否同時為空否是pr->ttimepr->ttime是否小于等于srtime否是pr->state='w'disp(pr)pr->state='w'disp(pr)pr=pr->linkpr=pr->link結(jié)束結(jié)束voiddestroy()函數(shù):建立進程撤消函數(shù)(進程運行結(jié)束,撤消進程)。開始開始num--num--p->etime=ertimep->zztime=ertime-p->ttimep->dqtime=p->zztime/p->ntimepztime=pztime+p->zztimepqtime=pqtime+p->dqtime進程已經(jīng)完成進程已經(jīng)完成輸出周轉(zhuǎn)時間和帶權(quán)周轉(zhuǎn)時間釋放p釋放pp->linkp->link是否為空?是否 ready==NULLready==NULLready->linkready->link是否為空?否是p=readyp=readyp=readyready=p->link結(jié)束結(jié)束voidrunning()函數(shù):建立進程就緒函數(shù)(進程運行時間到,置就緒狀態(tài)〕。開始開始p->ttimep->ttime是否小于等于srtime是否進程未進入內(nèi)存,等待下一時間(p->rtime)++進程未進入內(nèi)存,等待下一時間(p->rtime)++check()srtime++ertime++調(diào)用pl()函數(shù)srtime++ertime++p->rtime是否等于p->ntime?是否srtime++ertime++p->rtime是否等于p->ntime?p->state='w'p->state='w'調(diào)用destroy函數(shù)調(diào)用destroy函數(shù)結(jié)束結(jié)束主函數(shù)開始開始h=0input()p=readyready=p->linknum是否為0且同時ready是否為空?num是否為0且同時ready是否為空?否是pztime=pztime/npqtime=pqtime/npztime=pztime/npqtime=pqtime/nch=getchar()ch=getchar()h++進程完成輸出平均周轉(zhuǎn)時間和平均帶權(quán)周轉(zhuǎn)時間進程完成輸出平均周轉(zhuǎn)時間和平均帶權(quán)周轉(zhuǎn)時間p->state='R'running()按任意鍵繼續(xù)按任意鍵繼續(xù)ch=getchar()ch=getchar()ch=getchar()ch=getchar()結(jié)束結(jié)束=3\*GB3③響應(yīng)比高者優(yōu)先〔HRN〕:voidsort()函數(shù):該函數(shù)用于對進程進行提交時間排列。開始開始inser=0inser=0ready是否為空或者(p->ttime)是否小于(ready->ttime)?是否ready是否為空或者(p->ttime)是否小于(ready->ttime)?first=ready;second=first->link進程比擬提交時間,插入適當(dāng)?shù)奈恢弥衟->link=ready;ready=p即提交時間最大者插入隊首second是否為空?second是否為空?否是(p->ttime)是否小于(second->ttime)(p->ttime)是否小于(second->ttime)insert是否為0是否是first=first->linkfirst=first->linksecond=second->link插入進程提交時間最晚,那么插入到隊尾first->link=pp->link=secondp->link=second;first->link=psecond=NULL;insert=1假設(shè)插入進程比當(dāng)前提交時間早,那么插入到當(dāng)前進程前面結(jié)束結(jié)束voidpl()函數(shù)開始開始prx=ppry=prx->linkx
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 三年級數(shù)學(xué)故事解讀
- 小王子書中純真之愛讀后感
- 自然資源開發(fā)與保護合作協(xié)議
- 智能家電銷售與保修協(xié)議
- 初中生歷史故事解讀
- 運輸合同運輸補充協(xié)議
- 辦公區(qū)域布局調(diào)研報告
- 環(huán)保咨詢服務(wù)協(xié)議
- 電子設(shè)備銷售及安裝維護合同
- 物流行業(yè)運輸損壞物品賠償協(xié)議
- 2025年哈爾濱幼兒師范高等??茖W(xué)校單招職業(yè)技能測試題庫學(xué)生專用
- 企業(yè)內(nèi)部系統(tǒng)使用權(quán)限規(guī)范
- 2024年亳州職業(yè)技術(shù)學(xué)院單招職業(yè)技能測試題庫
- 2025年旅行與旅游的未來:擁抱可持續(xù)與包容性增長報告(英文版)-世界經(jīng)濟論壇
- 《裝修流程圖課件》課件
- T-CBIA 010-2024 營養(yǎng)素飲料標(biāo)準(zhǔn)
- 牛羊定點屠宰廠項目可行性研究報告-甲乙丙資信
- 03SG520-1實腹式鋼吊車梁(中輕級工作制A1~A5_Q235鋼_跨度6.0m、7.5m、9.0m)
- (完整word版)消化系統(tǒng)知識點整理
- 全國防返貧監(jiān)測信息系統(tǒng)業(yè)務(wù)管理子系統(tǒng)操作手冊
- 出差行程計劃表(模版)
評論
0/150
提交評論