實(shí)驗(yàn)3高(動態(tài))優(yōu)先權(quán)優(yōu)先的進(jìn)程調(diào)度算法模擬_第1頁
實(shí)驗(yàn)3高(動態(tài))優(yōu)先權(quán)優(yōu)先的進(jìn)程調(diào)度算法模擬_第2頁
實(shí)驗(yàn)3高(動態(tài))優(yōu)先權(quán)優(yōu)先的進(jìn)程調(diào)度算法模擬_第3頁
實(shí)驗(yàn)3高(動態(tài))優(yōu)先權(quán)優(yōu)先的進(jìn)程調(diào)度算法模擬_第4頁
實(shí)驗(yàn)3高(動態(tài))優(yōu)先權(quán)優(yōu)先的進(jìn)程調(diào)度算法模擬_第5頁
已閱讀5頁,還剩5頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、實(shí)驗(yàn)3 高(動態(tài))優(yōu)先權(quán)優(yōu)先的進(jìn)程調(diào)度算法模擬1. 實(shí)驗(yàn)?zāi)康耐ㄟ^動態(tài)優(yōu)先權(quán)算法的模擬加深對進(jìn)程概念和進(jìn)程調(diào)度過程的理解。2. 實(shí)驗(yàn)環(huán)境裝有操作系統(tǒng)Windows XP和開發(fā)工具VC+6.0,內(nèi)存在256M以上的微機(jī);或者:裝有Linux(Fedora 7)操作系統(tǒng)和gcc編譯器,內(nèi)存在256M以上的微機(jī)。3. 實(shí)驗(yàn)內(nèi)容(1) 用C語言來實(shí)現(xiàn)對N個(gè)進(jìn)程采用動態(tài)優(yōu)先權(quán)優(yōu)先算法的進(jìn)程調(diào)度。(2) 每個(gè)用來標(biāo)識進(jìn)程的進(jìn)程控制塊PCB用結(jié)構(gòu)來描述,包括以下字段:l 進(jìn)程標(biāo)識數(shù)ID;l 進(jìn)程優(yōu)先數(shù)PRIORITY,并規(guī)定優(yōu)先數(shù)越大的進(jìn)程,其優(yōu)先權(quán)越高;l 進(jìn)程已占用的CPU時(shí)間CPUTIME;l 進(jìn)程還需

2、占用的CPU時(shí)間NEEDTIME。當(dāng)進(jìn)程運(yùn)行完畢時(shí),NEEDTIME變?yōu)?;l 進(jìn)程的阻塞時(shí)間STARTBLOCK,表示當(dāng)進(jìn)程再運(yùn)行STARTBLOCK個(gè)時(shí)間片后,進(jìn)程將進(jìn)入阻塞狀態(tài);l 進(jìn)程被阻塞的時(shí)間BLOCKTIME,表示已阻塞的進(jìn)程再等待BLOCKTIME個(gè)時(shí)間片后,進(jìn)程將轉(zhuǎn)換成就緒狀態(tài);l 進(jìn)程狀態(tài)STATE;(READY, RUNNING, BLOCK, FINISH)l 隊(duì)列指針NEXT,用來將PCB排成隊(duì)列。(3) 優(yōu)先數(shù)改變的原則:l 進(jìn)程在就緒隊(duì)列中呆一個(gè)時(shí)間片,優(yōu)先數(shù)增加1;l 進(jìn)程每運(yùn)行一個(gè)時(shí)間片,優(yōu)先數(shù)減3。(4) 假設(shè)在調(diào)度前,系統(tǒng)中有5個(gè)進(jìn)程,它們的初始狀態(tài)如下:

3、ID01234PRIORITY93830290CPUTIME00000NEEDTIME33634STARTBLOCK2-1-1-1-1BLOCKTIME30000STATEREADYREADYREADYREADY READY(5) 為了清楚地觀察進(jìn)程的調(diào)度過程,程序應(yīng)將每個(gè)時(shí)間片內(nèi)的進(jìn)程的情況顯示出來,參照的具體格式如下:RUNNING PROCESS: $id0READY QUEUE: $id1->$id2BLOCK QUEUE: $id3->$id4 FINISH QUEUE: $id0->$id1->$id2->$id3->$id4=ID PRIORI

4、TY CPUTIME NEEDTIME STATE STARTBLOCK BLOCKTIME0 XX XX XX XX XX XX1 XX XX XX XX XX XX2 XX XX XX XX XX XX3 XX XX XX XX XX XX4 XX XX XX XX XX XX=4. 實(shí)驗(yàn)要求(1) 將源程序(priority.c)和程序運(yùn)行結(jié)果寫入實(shí)驗(yàn)報(bào)告。(2) 將該算法執(zhí)行過程與高響應(yīng)比優(yōu)先調(diào)度算法的執(zhí)行過程進(jìn)行比較。#include <stdio.h> #include <iostream>using namespace std; int i; /循環(huán)值 i

5、nt j; /還在阻塞或就緒隊(duì)列中的進(jìn)程數(shù) int s; int m; /最大priority的id struct pcb int id; int p; /priority int cputime; int alltime; int startblock; int blocktime; int state; /0 表示ready 1表示end -1表示block ; struct pcb pro5= 0,9,0,3,2,3,0, 1,38,0,3,-1,0,0, 2,30,0,6,-1,0,0, 3,29,0,3,-1,0,0, 4,0,0,4,-1,0,0 ; int changestate

6、0() if(pro0.startblock=0) pro0.state=-1; pro0.startblock-; return 1; if(pro0.blocktime=0) pro0.state=0; return 1; if(pro0.state=0&&pro0.startblock!=-1) pro0.startblock-;return 1; if(pro0.state=-1&&pro0.blocktime!=0) pro0.blocktime-;return 1; int state0() changestate0(); s=pro0.p; if(

7、pro0.state=-1) s=-100; return s; int maxp()/求出最大priority state0(); int max=s; m=pro0.id; for(i=0;i<j;i+) if(proi+1.p>proi.p) max=proi+1.p; m=proi+1.id; return m; void change() maxp(); int x;/得到m現(xiàn)在的數(shù)組編號 for(i=0;i<j;i+) proi.p+; for(i=0;i<j;i+) if(proi.id=m) x=i; prox.cputime+; prox.p=prox

8、.p-4; prox.alltime-; if(prox.alltime=0) prox.state=1; void display() change(); cout<<"RUNNING PROG:"<<m<<endl; cout<<"=n" cout<<"ID " for(i=0;i<j;i+) cout.width(10); cout<<proi.id; cout<<endl<<"PRIORITY " for(

9、i=0;i<j;i+) cout.width(10); cout<<proi.p; cout<<endl<<"CPUTIME " for(i=0;i<j;i+) cout.width(10); cout<<proi.cputime; cout<<endl<<"ALLTIME " for(i=0;i<j;i+) cout.width(10); cout<<proi.alltime; cout<<endl<<"STARTBL

10、OCK" for(i=0;i<j;i+) cout.width(10); cout<<proi.startblock; cout<<endl<<"BLOCKTIME " for(i=0;i<j;i+) cout.width(10); cout<<proi.blocktime; cout<<endl<<"STATE " for(i=0;i<j;i+) cout.width(10); cout<<proi.state; cout<<en

11、dl; int main() j=5;/剛開始有5個(gè)進(jìn)程 while(j!=0) for(i=0;i<j;i+) if(proi.state=1) for(;i<j;i+) proi=proi+1; j=j-1; display(); getchar(); 運(yùn)行結(jié)果:RUNNING PROG:1=ID          0         1      &

12、#160;  2         3         4PRIORITY         10        35        31      &#

13、160; 30         1CPUTIME          0         1         0         0     

14、    0ALLTIME          3         2         6         3         4STARTBLOCK &

15、#160;       1        -1        -1        -1        -1BLOCKTIME          3  

16、       0         0         0         0STATE          0         0&

17、#160;        0         0         0RUNNING PROG:1=ID          0         1    

18、0;    2         3         4PRIORITY         11        32        32     

19、;   31         2CPUTIME          0         2         0         0   

20、60;     0ALLTIME          3         1         6         3         4STARTBLO

21、CK         0        -1        -1        -1        -1BLOCKTIME          3

22、60;        0         0         0         0STATE          0       

23、  0         0         0         0RUNNING PROG:1=ID          0         1   &

24、#160;     2         3         4PRIORITY         12        29        33   &#

25、160;    32         3CPUTIME          0         3         0         0  

26、       0ALLTIME          3         0         6         3        

27、4STARTBLOCK        -1        -1        -1        -1        -1BLOCKTIME         

28、3         0         0         0         0STATE         -1       &

29、#160; 1         0         0         0RUNNING PROG:2=ID          0         2   &#

30、160;     3         4PRIORITY         13        30        33         4CPUTIME  &#

31、160;       0         1         0         0ALLTIME          3       

32、60; 5         3         4STARTBLOCK        -1        -1        -1        -1BLOCK

33、TIME          2         0         0         0STATE         -1     

34、0;   0         0         0RUNNING PROG:3=ID          0         2         3  

35、;       4PRIORITY         14        31        30         5CPUTIME         

36、0         1         1         0ALLTIME          3         5      

37、   2         4STARTBLOCK        -1        -1        -1        -1BLOCKTIME      &

38、#160;   1         0         0         0STATE         -1         0    &

39、#160;    0         0RUNNING PROG:2=ID          0         2         3         4PR

40、IORITY         15        28        31         6CPUTIME          0      

41、0;  2         1         0ALLTIME          3         4         2    

42、60;    4STARTBLOCK        -1        -1        -1        -1BLOCKTIME          0   

43、0;     0         0         0STATE         -1         0         0  

44、0;      0RUNNING PROG:3=ID          0         2         3         4PRIORITY      

45、;   16        29        28         7CPUTIME          0         2     &

46、#160;   2         0ALLTIME          3         4         1         4STARTBLOCK &#

47、160;      -1        -1        -1        -1BLOCKTIME          0         0  &

48、#160;      0         0STATE          0         0         0         0RU

49、NNING PROG:2=ID          0         2         3         4PRIORITY         17   &#

50、160;    26        29         8CPUTIME          0         3         2   

51、;      0ALLTIME          3         3         1         4STARTBLOCK        -

52、1        -1        -1        -1BLOCKTIME          0         0        

53、0         0STATE          0         0         0         0RUNNING PROG:3=ID   

54、60;      0         2         3         4PRIORITY         18        27  

55、;      26         9CPUTIME          0         3         3         0ALL

56、TIME          3         3         0         4STARTBLOCK        -1      

57、;  -1        -1        -1BLOCKTIME          0         0         0      

58、;   0STATE          0         0         1         0RUNNING PROG:2=ID          0&

59、#160;        2         4PRIORITY         19        24        10CPUTIME       

60、60;  0         4         0ALLTIME          3         2         4STARTBLOCK  

61、0;     -1        -1        -1BLOCKTIME          0         0         0STATE  

62、;        0         0         0RUNNING PROG:2=ID          0         2     &#

63、160;   4PRIORITY         20        21        11CPUTIME          0         5   &#

64、160;     0ALLTIME          3         1         4STARTBLOCK        -1        -1 &

65、#160;      -1BLOCKTIME          0         0         0STATE          0      

66、   0         0RUNNING PROG:2=ID          0         2         4PRIORITY         21

67、0;       18        12CPUTIME          0         6         0ALLTIME       &#

68、160;  3         0         4STARTBLOCK        -1        -1        -1BLOCKTIME     

69、0;    0         0         0STATE          0         1         0RUNNING PROG:0=ID

70、          0         4PRIORITY         18        13CPUTIME          1    

71、60;    0ALLTIME          2         4STARTBLOCK        -1        -1BLOCKTIME         

72、0         0STATE          0         0RUNNING PROG:0=ID          0         4PRIORITY &

73、#160;       15        14CPUTIME          2         0ALLTIME          1      

74、;   4STARTBLOCK        -1        -1BLOCKTIME          0         0STATE          0         0RUNNING PROG:0=ID         

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論