進程調(diào)度算法 操作系統(tǒng)_第1頁
進程調(diào)度算法 操作系統(tǒng)_第2頁
進程調(diào)度算法 操作系統(tǒng)_第3頁
進程調(diào)度算法 操作系統(tǒng)_第4頁
進程調(diào)度算法 操作系統(tǒng)_第5頁
全文預(yù)覽已結(jié)束

下載本文檔

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

文檔簡介

進程調(diào)度::優(yōu)先數(shù)、時間片輪轉(zhuǎn)、先來先服務(wù)代碼:#include<stdio.h>#include<stdlib.h>#include<string.h>typedefstructnode{charname[10];intprio;intround;intcputime;intneedtime;intcount;charstate;structnode*next;}PCB;PCB*finish,*ready,*run,*r;intN;voidfirstin(){run=ready;run->state='R';ready=ready->next;}voidprt1(chara){if(a=='P'||a=='p')printf("進程號cpu時間所需時間優(yōu)先數(shù)狀態(tài)\n");elseif(a=='r'||a=='R')printf("進程號cpu時間所需時間記數(shù)時間片狀態(tài)5”);elseif(a=='f'||a=='F')printf("進程號所需時間狀態(tài)\n");}voidprt2(chara,PCB*q){if(a=='P'||a=='p')printf("%-10s%-10d%-10d%-10d%c\n",q->name,q->cputime,q->needtime,q->prio,q->state);elseif(a=='r'||a=='R')printf("%-10s%-10d%-10d%-10d%-10d%c\n",q->name,q->cputime,q->needtime,q->count,q->round,q->state);elseif(a=='f'||a=='F')printf("%-10s%-10d%c\n",q->name,q->needtime,q->state);}voidprt(charalgo){PCB*p;prt1(algo);if(run!=NULL&&!(algo=='r'llalgo=='R'))〃這個對RR不適應(yīng)!!prt2(algo,run);p=ready;while(p!=NULL){prt2(algo,p);p=p->next;}p=finish;while(p!=NULL){prt2(algo,p);p=p->next;}getchar();}voidinsert1(PCB*q){PCB*p1,*s,*r;intb;s=q;p1=ready;r=p1;b=1;while((p1!=NULL)&&b){if(p1->prio>=s->prio){r=p1;p1=p1->next;}elseb=0;}if(r!=p1){r->next=s;s->next=p1;}elses->next=p1;ready=s;}}voidcreat1(charalg){PCB*p;inti,time;charna[10];ready=NULL;finish=NULL;run=NULL;printf(”輸入進程號和運行時間:\n");for(i=1;i<=N;i++){p=(PCB*)malloc(sizeof(PCB));scanf("%s",na);scanf("%d",&time);strcpy(p->name,na);p->cputime=0;p->needtime=time;p->state='W';p->prio=50-time;if(ready!=NULL)insert1(p);else{p->next=ready;ready=p;}}//clrscr();if(alg=='p'||alg=='P')printf(”優(yōu)先數(shù)算法輸出信息:\n");elseprintf(”先來先服務(wù)算法輸出信息:\n");「prt(alg);run=ready;ready=ready->next;run->state='R';}voidcreat2(charalg){PCB*p;inti,time,round;charna[10];ready=NULL;finish=NULL;run=NULL;printf(”請輸入時間片:”);scanf("%d",&round);printf("輸入進程號和運行時間:\n");for(i=1;i<=N;i++){p=(PCB*)malloc(sizeof(PCB));scanf("%s",na);scanf("%d",&time);strcpy(p->name,na);p->cputime=0;p->needtime=time;p->state='W';p->count=0;p->round=round;p->next=NULL;if(i==1)/*按順序插入到ready鏈表中*/r=ready=p;elser->next=p;r=p;}//clrscr();printf(”時間片輪轉(zhuǎn)算法輸出信息:\n");「prt(alg);}voidpriority(charalg){while(run!=NULL){run->cputime+=1;run->needtime-=1;run->prio-=3;if(run->needtime==0){run->next=finish;finish=run;run->state='F';run=NULL;if(ready!=NULL)firstin();}elseif((ready!=NULL)&&(run->prio<ready->prio)){run->state='W';insert1(run);firstin();}prt(alg);}}voidroundrun(charalg){boolflag;//當ready列里只有一個時做標記while(N){flag=1;//初始化為1run=ready;//run每次運行ready的隊頭run->count++;〃沒運行一次計數(shù)器加1if(run->needtime<run->round)〃當剩余時間小于時間片輪轉(zhuǎn)時間時的情況{run->cputime+=run->needtime;run->needtime=0;}else{run->cputime+=run->round;run->needtime-=run->round;}run->state='W';//變?yōu)榈却齣f(ready->next!=NULL)ready=ready->next;elseflag=0;//當ready剩一個時做標記if(run->needtime==0){//當run結(jié)束時放入finish隊列里run->next=finish;finish=run;run->state='F';N--;//進程數(shù)少1}else{if(flag){〃執(zhí)行完如果不是剩一個的話,就把run放到隊尾r->next=run;r=run;r->next=NULL;}}if(N)ready->state='R';〃結(jié)束時不應(yīng)該有'R"elseready=NULL;//結(jié)束時應(yīng)該為空prt(alg);//輸出}}voidFCFSrun(charalg){PCB*p;while(run!=NULL){run->cputime+=run->needtime;run->needtime=0;run->next=finish;finish=run;run->state='F';run=NULL;if(ready!=NULL)firstin();prt(alg);}}main(){charalgo;//clrscr();printf("選擇算法:P/R/F(優(yōu)先數(shù)算法/時間片輪轉(zhuǎn)算法/先來先服務(wù)算法)\n");scanf("%c",&algo);printf("輸入進程數(shù):\n");scanf("%d",&N);if(algo=='P'||algo=='p')

溫馨提示

  • 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)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論