處理機(jī)調(diào)度模擬程序_第1頁
處理機(jī)調(diào)度模擬程序_第2頁
處理機(jī)調(diào)度模擬程序_第3頁
處理機(jī)調(diào)度模擬程序_第4頁
處理機(jī)調(diào)度模擬程序_第5頁
已閱讀5頁,還剩14頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、四川理工學(xué)院課程設(shè)計(jì)書系別專業(yè)班級(jí)題目教師學(xué)生計(jì)科系計(jì)算機(jī)科學(xué)與技術(shù)04級(jí)1班處理機(jī)調(diào)度模擬程序& 個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)& 個(gè)個(gè)個(gè) 個(gè)個(gè)個(gè) TOC o 1-5 h z 目 錄- 設(shè)計(jì)任務(wù)1一二設(shè)計(jì)思想1設(shè)計(jì)目的1設(shè)計(jì)題目2設(shè)計(jì)要求2設(shè)計(jì)框圖2 HYPERLINK l bookmark32 o Current Document 程序代碼3文 檔12總 結(jié)14操作系統(tǒng)課程設(shè)計(jì)處理機(jī)調(diào)度模擬程序小組成員:*設(shè)計(jì)完成時(shí)間:2006年7月13日星期四一、設(shè)計(jì)任務(wù)選擇一個(gè)調(diào)度算法,實(shí)現(xiàn)處理機(jī)調(diào)度。二、設(shè)計(jì)思想進(jìn)程控制塊的內(nèi)容如右:進(jìn)程名進(jìn)程狀態(tài)要求運(yùn)行時(shí)間優(yōu)先數(shù)鏈接指針其中優(yōu)先數(shù)是賦給進(jìn)程的優(yōu)先級(jí)調(diào)度時(shí)總是選

2、取優(yōu)先數(shù)最大的進(jìn)程優(yōu)先運(yùn)行每個(gè)進(jìn)程的優(yōu)先數(shù),運(yùn)行時(shí)間,由程序任意指定。為了調(diào)度方便,把進(jìn)程按給定優(yōu)先級(jí)(動(dòng)態(tài)優(yōu)先級(jí)算法中)從小到大排成一個(gè)隊(duì) 歹U。按給定運(yùn)行時(shí)間(短作業(yè)優(yōu)先)從小到大排成一個(gè)隊(duì)列用一個(gè)變量作為隊(duì)首指 針,指向隊(duì)列的第一個(gè)進(jìn)程。處理機(jī)調(diào)度總是選隊(duì)首進(jìn)程運(yùn)行。由于本實(shí)驗(yàn)是模擬處理機(jī)調(diào)度,所以被選中的 進(jìn)程并不實(shí)際的啟動(dòng)運(yùn)行,而是執(zhí)行:優(yōu)先數(shù)-1(動(dòng)態(tài)優(yōu)先級(jí)算法中)要求運(yùn)行時(shí)間-1來模擬進(jìn)程的一次運(yùn)行。進(jìn)程運(yùn)行一次后,若要求運(yùn)行時(shí)間不等于0,則再將它加入隊(duì)列(動(dòng)態(tài)優(yōu)先級(jí)算 法中:按優(yōu)先數(shù)大小插入。),且改變隊(duì)首指針:若要求運(yùn)行時(shí)間=0,則把它的狀態(tài) 改為完成(C)狀態(tài),且退出隊(duì)列。

3、若就緒隊(duì)列不空,則重復(fù)上述的4和5,直接所有的進(jìn)程成為完成狀態(tài)。在所設(shè)計(jì)的程序中應(yīng)有顯示或打印語句,以顯示或打印每次被選中的進(jìn)程的進(jìn)程 名以及運(yùn)行一次后進(jìn)程隊(duì)列的變化。.設(shè)計(jì)目的在多道程序和多任務(wù)系統(tǒng)中,系統(tǒng)內(nèi)同時(shí)處于就緒狀態(tài)的進(jìn)程可能有若干 個(gè)。也就是說能運(yùn)行的進(jìn)程數(shù)大于處理機(jī)個(gè)數(shù)。為了使系統(tǒng)中的進(jìn)程能有 條不紊地工作,必須選用某種調(diào)度策略,選擇一進(jìn)程占用處理機(jī)。要求學(xué) 生設(shè)計(jì)一個(gè)模擬處理機(jī)調(diào)動(dòng)算法,以鞏固和加深處理機(jī)調(diào)度的概念。四.五.設(shè)計(jì)題目處理機(jī)調(diào)度模擬程序。設(shè)計(jì)要求進(jìn)程調(diào)度算法包括:時(shí)間片輪轉(zhuǎn)法,短作業(yè)優(yōu)先算法,動(dòng)態(tài)優(yōu) 先級(jí)算法??蛇x擇進(jìn)程數(shù)量本程序包括三種算法,用C語言實(shí)現(xiàn),執(zhí)行時(shí)

4、在主界面選擇算 法(可用函數(shù)實(shí)現(xiàn)),進(jìn)入子頁面后輸入進(jìn)程數(shù),(運(yùn)行時(shí)間, 優(yōu)先數(shù)由隨機(jī)函數(shù)產(chǎn)生),執(zhí)行,顯示結(jié)果。兩人一組,每組交一份設(shè)計(jì)報(bào)告,包含源代碼。六.設(shè)計(jì)框圖調(diào)度算法的流程圖如下:七.程序代碼#include #include #include #include typedef struct nodechar name10;int prio;int round;int cputime;int needtime;int count;char state;struct node *next;PCB;PCB *finish,*ready,*tail,*run;int N;firstin()

5、run=ready;run-state=R;ready=ready-next;int timesj(void)int i,xt;time_t t;srand(unsigned) time(&t);xt = rand() % 10 +1;return xt;void prt1(char a)staten);if(toupper(a)=1)printf( name cputime needtime priority elseif(toupper(a)=2)printf( name cputime needtime priority staten); elseprintf( name cputime

6、 needtime priority staten);void prt2(char a,PCB *q)if(toupper(a)=1)printf( %-10s%-10d%-10d%-10d %cn,q-name,q-cputime,q-needtime,q-prio,q-state);elseif(toupper(a)=2)printf( %-10s%-10d%-10d%-10d %cn”,q-name,q-cputime,q-needtime,q-prio,q-state);elseprintf( %-10s%-10d%-10d%-10d %cn”,q-name, q-cputime,q-

7、needtime,q-prio,q-state);void prt(char algo)PCB *p;prt1(algo);if(run!=NULL)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;getch();return;insert1(PCB *q)PCB *p1,*s,*r;int b;s=q;p1=ready;r=p1;b=1;while(p1!=NULL)&b)if(p1-prio=s-prio)r=p1;p1=p1-ne

8、xt;elseb=0;if(r!=p1)r-next=s;s-next=p1;elses-next=p1;ready=s;insert2(PCB *p2)tail-next=p2;tail=p2;p2-next=NULL;insert3(PCB *q)PCB *p1,*s,*r;int b;s=q;p1=ready;r=p1;b=1;while(p1!=NULL)&b)if(p1-needtimeneedtime)r=p1;p1=p1-next;elseb=0;if(r!=p1)r-next=s;s-next=p1;elses-next=p1;ready=s;void create1(char

9、 alg)PCB *p;int i,time,sjt,priost;char na10;ready=NULL;finish=NULL;run=NULL;printf(Enter name and time of processn);printf(-n);for(i=1;iname,na);p-cputime=0;p-needtime=sjt;p-state=w;p-prio=20-sjt;if(ready!=NULL)insertl(p);elsep-next=ready;ready=p;clrscr();printf(Display Process Of Priority:n);printf

10、(-n);prt(alg);run=ready;ready=ready-next;run-state=R;void create2(char alg)PCB *p;int i,time,sjt;char na10;ready=NULL;finish=NULL;run=NULL;printf(Enter name and time of round processn);printf(-n);for(i=1;iname,na);p-cputime=0;p-needtime=sjt;p-round=1;p-state=w;p-count=0;p-prio=20-sjt;if(ready!=NULL)

11、insert2(p);elsep-next=ready;ready=p;tail=p;clrscr();printf(Display Process Of Roundrobinn);printf(-n);prt(alg);run=ready;ready=ready-next;run-state=R;void create3(char alg)PCB *p;int i,time,sjt;char na10;ready=NULL;finish=NULL;run=NULL;printf(Enter name and time of processn);printf(-n);for(i=1;iname

12、,na);p-cputime=0;p-needtime=sjt;p-state=w;p-prio=20-sjt;if(ready!=NULL)insert1(p);elsep-next=ready;ready=p;clrscr();printf(Display Process Of Priority:n);printf(-n);prt(alg);run=ready;ready=ready-next;run-state=R;priority(char alg)while(run!=NULL)run-cputime=run-cputime+1;run-needtime=run-needtime-1

13、;run-prio=run-prio-1;if(run-needtime=0)run-next=finish;finish=run;run-state=C;run=NULL;if(ready!=NULL)firstin();elseif(ready!=NULL)&(run-prioprio)run-state=W;insert1(run);firstin();prt(alg);roundrun(char alg)while(run!=NULL)run-cputime=run-cputime+1;run-needtime=run-needtime-1;run-count=run-count+1;

14、run-prio=run-prio-1;if(run-needtime=0)run-next=finish;finish=run;run-state=C;run=NULL;if(ready!=NULL)firstin();elseif(run-count=run-round)run-count=0;if(ready!=NULL)run-state=W;insert2(run);firstin();prt(alg);shorttask(char alg)while(run!=NULL)run-cputime=run-cputime+1;run-needtime=run-needtime-1;ru

15、n-prio=run-prio-1;if(run-needtime=0)run-next=finish;finish=run;run-state=C;run=NULL;if(ready!=NULL)firstin();elseif(ready!=NULL)&(run-needtimeready-needtime)run-state=W;insert1(run);firstin();prt(alg);return;menu() char algo;clrscr();printf(nnCOMPUTER OS WORKnn);printf(nnBy pangao(Class 1) & wangjun

16、(Class 1)nnn);printf(choose one of following:);printf(n1.PRIORITY.nn);printf(2.ROUNDROBIN.nn);printf(3.SHORTTASK.nn);printf(4.EXIT.nnn);printf(n please enter your choice:);scanf(%c”,&algo);if(algo=1)printf(Enter process numbern);scanf(%d”,&N);create1(algo);priority(algo);elseif(algo=2)printf(Enter p

17、rocess numbern);scanf(%d”,&N);create2(algo);roundrun(algo);elseif(algo=3)printf(Enter process numbern);scanf(%d”,&N);create3(algo);shorttask(algo);return;else if(algo=4)exit(0);main()while(1)menu();八、文檔七運(yùn)行環(huán)境采用Borland Turbo C 2.0環(huán)境開發(fā)。2.輸入條件及輸出結(jié)果g C:U)OCUME面KHULIJI.EXE回吸COMPUTER OS UORKpangao & uangju

18、n choose one of following:PRIORITY.2.ROUNDROBIN.3.SHORTTfiSK.4.EXIT.please enter your choice:本程序包括三種算法,由上圖可知,其中1為動(dòng)態(tài)優(yōu)先級(jí)算法,2為時(shí)間片輪轉(zhuǎn)法,3為 短作業(yè)優(yōu)先算法。用C語言實(shí)現(xiàn),執(zhí)行時(shí)在主界面選擇算法(可用函數(shù)實(shí)現(xiàn)),進(jìn)入子 頁面后輸入進(jìn)程數(shù),(運(yùn)行時(shí)間,優(yōu)先數(shù)由隨機(jī)函數(shù)產(chǎn)生),執(zhí)行,顯示結(jié)果。相應(yīng)圖如下:其中以短作業(yè)優(yōu)先算法為例,首先選擇1進(jìn)入子頁面,COMPUTER OS UORKpangao(Class 1 & uangjun (Class 1choose one of

19、follouing:PRIORITV.ROUNDROBIN.3.SHORTTASK.4.EXIT.please enter your choice:1 Enter process number然后輸入進(jìn)程數(shù),假設(shè)為2個(gè)進(jìn)程,則圖為:-|n| x|Display Process OfPriority:ml2 a j j n 0 0ml2 a-J-J n 0 0ml2 a-J-J n 0 0m21 a-J-J n 0 0m21 a-J-J n 0 0m21 a-J-J n 0 0cputime00cputime10cputime20cputime03cputime13cputimem21 a-J-J n 0 0cputime071i 1 J061i 1 J051i 1 J014 iL L004il Lo 4-19 1o 4i8 1stateVJ stateRVJ stateRwtRctRctRctRCCOMPUTER OS WORKpangao(Class 1 & uangjun choose one of ollowing: PRIORITY.2.ROUNDROBIN.3_SHORTTASK_4.EXIT.please enter your choice

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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)論