操作系統(tǒng)處理器調(diào)度算法C++程序_第1頁(yè)
操作系統(tǒng)處理器調(diào)度算法C++程序_第2頁(yè)
操作系統(tǒng)處理器調(diào)度算法C++程序_第3頁(yè)
操作系統(tǒng)處理器調(diào)度算法C++程序_第4頁(yè)
操作系統(tǒng)處理器調(diào)度算法C++程序_第5頁(yè)
已閱讀5頁(yè),還剩5頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、實(shí)用文檔一、先來(lái)先服務(wù)算法1 .程序簡(jiǎn)介先來(lái)先服務(wù)算法按照作業(yè)進(jìn)入系統(tǒng)后備作業(yè)隊(duì)列的先后次序挑選作業(yè),先進(jìn)入系統(tǒng)的作業(yè)將優(yōu)先被挑選進(jìn)入主存,創(chuàng)建用戶進(jìn)程,分配所需資源,然后,移入就緒隊(duì)列.這是一種非剝奪式調(diào) 度算法,易于實(shí)現(xiàn),但效率不高.只顧及作業(yè)的等候時(shí)間,未考慮作業(yè)要求服務(wù)時(shí)間的長(zhǎng)短,不利 于短作業(yè)而優(yōu)待長(zhǎng)作業(yè),不利于I/O繁忙型作業(yè)而有利于 CPU繁忙型作業(yè).有時(shí)為了等待場(chǎng)作 業(yè)執(zhí)行結(jié)束,短作業(yè)的周轉(zhuǎn)時(shí)間和帶全周轉(zhuǎn)時(shí)間將變得很大,從而若干作業(yè)的平均周轉(zhuǎn)時(shí)間和平均帶權(quán)周轉(zhuǎn)時(shí)間也變得很大。2 .分析1 .先定義一個(gè)數(shù)組代表各作業(yè)運(yùn)行的時(shí)間,再定義一個(gè)數(shù)組代表各作業(yè)到達(dá)系統(tǒng)的時(shí)間,注意到達(dá)系統(tǒng)

2、的時(shí)間以第一個(gè)作業(yè)為0基礎(chǔ)(注意:若各程序都同時(shí)到達(dá)系統(tǒng),則到達(dá)系統(tǒng)時(shí)間都為0)。2 .輸入作業(yè)數(shù)。3 .然后運(yùn)用循環(huán)結(jié)構(gòu)累積作業(yè)周轉(zhuǎn)時(shí)間和帶權(quán)周轉(zhuǎn)時(shí)間。4 .最后,作業(yè)周轉(zhuǎn)時(shí)間和帶權(quán)周轉(zhuǎn)時(shí)間分別除以作業(yè)數(shù)即可得到平均作業(yè)周轉(zhuǎn)時(shí)間和平均 帶權(quán)周轉(zhuǎn)時(shí)間。3 .詳細(xì)設(shè)計(jì)源程序如下:#include#includeusing namespace std;int main()int n,a100,b100;double s100,m100,T=0,W=0;cout”請(qǐng)輸入作業(yè)數(shù):n;cout請(qǐng)分別輸入各作業(yè)到達(dá)系統(tǒng)的時(shí)間:endl;for(int i=0;ibi;cout請(qǐng)分別輸入各作業(yè)所運(yùn)行的時(shí)間:

3、endl;for(i=0;iai;s0=0;si+1=si+ai;mi+1=(si+1-bi)/ai;T=T+si+1-bi;W=W+mi+1;文案大全實(shí)用文檔cout”平均周轉(zhuǎn)時(shí)間為:T/nendl;cout平均帶權(quán)周轉(zhuǎn)時(shí)間為 :W/nendl; return 0;4 .運(yùn)行與測(cè)試1 .運(yùn)行程序,輸入作業(yè)數(shù),如 A.1所示。請(qǐng)輸入作業(yè)數(shù):3分別輸入各作業(yè)到達(dá)系統(tǒng)的時(shí)間工A1啟動(dòng)界面2 .輸入各作業(yè)到達(dá)系統(tǒng)的時(shí)間,如A.2所示。請(qǐng)輸入作業(yè)數(shù):3分別輸入各作業(yè)到達(dá)系統(tǒng)的時(shí)間;0 S 18 15請(qǐng)分別輸入各作業(yè)所運(yùn)行的時(shí)間=A2輸入各作業(yè)到達(dá)系統(tǒng)的時(shí)間3 .輸入各作業(yè)所運(yùn)行的時(shí)間,如 A.3所示。

4、請(qǐng)輸入作業(yè)數(shù):3分別輸入各作業(yè)到達(dá)系統(tǒng)的時(shí)間:3 5 10 15請(qǐng)分別輸入各作業(yè)所運(yùn)行的時(shí)間=20 15 5 10鞍糊第田Press any *號(hào)學(xué) to continueA3輸入各作業(yè)運(yùn)行的時(shí)間、最短作業(yè)優(yōu)先算法1 .程序簡(jiǎn)介最短作業(yè)優(yōu)先算法以進(jìn)入系統(tǒng)的作業(yè)所要求的CPU運(yùn)行時(shí)間的長(zhǎng)短為標(biāo)準(zhǔn),總是選取預(yù)計(jì)計(jì)算時(shí)間最短的作業(yè)投入運(yùn)行。這是一種非剝奪式調(diào)度算法,能克服FCFS算法偏愛(ài)長(zhǎng)作業(yè) 的缺點(diǎn),易于實(shí)現(xiàn),但執(zhí)行效率也不高。2 .分析文案大全實(shí)用文檔1 .分兩種情況來(lái)介紹這種算法,一是各作業(yè)到達(dá)系統(tǒng)的時(shí)間都相同,二是各作業(yè)到達(dá)系統(tǒng) 的時(shí)間不同,且以第一個(gè)作業(yè)到達(dá)系統(tǒng)的時(shí)間為0作基礎(chǔ)。2 .到達(dá)

5、系統(tǒng)時(shí)間都相同的情況只要累積CPU運(yùn)行的時(shí)間,最后加一個(gè)排序函數(shù)即可。3 .到達(dá)系統(tǒng)時(shí)間不相同的情況則是要在前面FCFS的基礎(chǔ)上加一個(gè)排序函數(shù)即可。4 .注意本程序認(rèn)為第一個(gè)作業(yè)完成后,其它作業(yè)都已經(jīng)到達(dá)系統(tǒng)了。3 .詳細(xì)設(shè)計(jì)源程序如下:/SJF(到達(dá)系統(tǒng)時(shí)間都相同的情況)#includeusing namespace std;void B(float a口,int size)float t;for(int i=1;isize;i+)for(int j=0;jsize-1;j+)if(a加aj+1)t=aj;aj=aj+1;aj+1=t;int main(void)float n,a100;d

6、ouble s100,m100,T=0,W=0;cout”請(qǐng)輸入作業(yè)數(shù):n;cout請(qǐng)分別輸入各作業(yè)所運(yùn)行的時(shí)間:endl;for(int i=0;iai;B(a,n);cout作業(yè)調(diào)度順序?yàn)椋篹ndl;for(i=0;in;i+)coutai;s0=0;si+1=si+ai;mi+1=si+1/ai;T=T+si+1;W=W+mi+1;coutendl;cout”平均周轉(zhuǎn)時(shí)間為:T/nendl;文案大全實(shí)用文檔cout平均帶權(quán)周轉(zhuǎn)時(shí)間為:W/nendl;return 0;)/SJF(到達(dá)系統(tǒng)時(shí)間不相同的情況)#includeusing namespace std;void B(float a

7、,int size)float t;for(int i=2;isize;i+)for(int j=1;jsize-1;j+)if(a加aj+1)t=aj;aj=aj+1;aj+1=t;)int main(void)float n,a100,b100;double s100,m100,T=0,W=0;cout請(qǐng)輸入作業(yè)數(shù):n;cout請(qǐng)分別輸入各作業(yè)所運(yùn)行的時(shí)間:endl;for(int i=0;iai;B(a,n);cout作業(yè)調(diào)度順序?yàn)?endl;for(i=0;in;i+) coutai; coutendl;cout請(qǐng)分別輸入各作業(yè)到達(dá)系統(tǒng)的時(shí)間:endl;for(i=0;ibi;for(

8、i=0;in;i+)s0=0;si+1=si+ai;文案大全實(shí)用文檔mi+1=(si+1-bi)/ai;T=T+si+1-bi;W=W+mi+1;cout”平均周轉(zhuǎn)時(shí)間為:T/nendl;cout平均帶權(quán)周轉(zhuǎn)時(shí)間為 :W/nendl; return 0;4 .運(yùn)行與測(cè)試/SJF(到達(dá)系統(tǒng)時(shí)間都相同的情況)1 .運(yùn)行程序,輸入作業(yè)數(shù),如 A.1所示。請(qǐng)輸入作業(yè)數(shù):3分別輸入各作業(yè)所運(yùn)行的時(shí)間:A1啟動(dòng)界面2 .輸入各作業(yè)所運(yùn)彳T的時(shí)間,如 A.2所示。清輸入作業(yè)數(shù)二善分別輸入各作業(yè)所運(yùn)行的時(shí)間=P 4 18 8作業(yè)調(diào)度順序?yàn)?4 8 9 10豐穗蠲黑敲=1-98333Pi*ess any key

9、 to continueA2輸入各作業(yè)所運(yùn)行的時(shí)間/SJF(到達(dá)系統(tǒng)時(shí)間不相同的情況)1 .運(yùn)行程序,輸入作業(yè)數(shù),如 A.1所示。請(qǐng)輸入作業(yè)數(shù):3分別輸入各作業(yè)所運(yùn)行的時(shí)間二A1啟動(dòng)界面2 .輸入各作業(yè)所運(yùn)彳T的時(shí)間,如 A.2所示。文案大全實(shí)用文檔請(qǐng)輸入作業(yè)數(shù);腦分別輸入各作業(yè)所運(yùn)行的時(shí)間:20 15 5 10作業(yè)調(diào)度順序?yàn)?2 。 5 10 15請(qǐng)分別輸入各作業(yè)到達(dá)系統(tǒng)的時(shí)間;A2輸入各作業(yè)所運(yùn)行的時(shí)間3 .輸入各作業(yè)到達(dá)系統(tǒng)的時(shí)間,如 A.3所示。請(qǐng)輸入作業(yè)數(shù)二年分別輸入各作業(yè)所運(yùn)行的時(shí)間:20 15 5 10作業(yè)調(diào)度順序?yàn)?28 5 10 15請(qǐng)分別輸入各作業(yè)到達(dá)系統(tǒng)的時(shí)間工M 1 1

10、5 SPress any key to continueA3輸入各作業(yè)到達(dá)系統(tǒng)的時(shí)間三、優(yōu)先級(jí)調(diào)度算法1 .程序簡(jiǎn)介優(yōu)先級(jí)調(diào)度算法根據(jù)確定的優(yōu)先級(jí)來(lái)選取進(jìn)程/線程,總是選擇就緒隊(duì)列中的優(yōu)先級(jí)最高者投入運(yùn)行。本實(shí)驗(yàn)介紹的是非剝奪式優(yōu)先級(jí)調(diào)度算法,如果在就緒隊(duì)列中出現(xiàn)優(yōu)先級(jí)更高的就讓當(dāng)前進(jìn)程/線程繼續(xù)運(yùn)行,直到它結(jié)束或出現(xiàn)等待事件而主動(dòng)讓出處理器,再調(diào)度另一 個(gè)優(yōu)先級(jí)高的進(jìn)程/線程運(yùn)行。2 .分析1 .先定義一個(gè)二維數(shù)組 a皿0代表各作業(yè)的優(yōu)先級(jí),ai1代表各作業(yè)運(yùn)行的時(shí)間。2 .輸入作業(yè)數(shù)。3 .根據(jù)排序函數(shù)得出作業(yè)調(diào)度順序。4 .最后,累積得作業(yè)周轉(zhuǎn)時(shí)間和帶權(quán)周轉(zhuǎn)時(shí)間后分別除以作業(yè)數(shù)即可得到平

11、均作業(yè)周轉(zhuǎn)時(shí) 間和平均帶權(quán)周轉(zhuǎn)時(shí)間。3 .詳細(xì)設(shè)計(jì)源程序如下:#includeusing namespace std;void B(float a口2,int size)文案大全實(shí)用文檔(float t,p;for(int i=0;isize;i+)(for(int j=0;jaj+10)(t=aj0;aj0=aj+10;aj+10=t;P=aj1;aj1=aj+11;aj+11=p;int main(void)(float n,a1002;double s1002,m1002,T=0,W=0;cout”請(qǐng)輸入作業(yè)數(shù):endl;:n;cout請(qǐng)分別輸入各作業(yè)優(yōu)先級(jí)和所運(yùn)行的時(shí)間for(int

12、i=0;iai0ai1;B(a,n);cout作業(yè)調(diào)度順序?yàn)?endl;for(i=0;in;i+)(coutai0ai1;s01=0;si+11=si1+ai1;mi+11=si+11/ai1;T=T+si+11;W=W+mi+11;coutendl;cout平均周轉(zhuǎn)時(shí)間為:T/nendl;cout平均帶權(quán)周轉(zhuǎn)時(shí)間為 :W/nendl;return 0;4 .運(yùn)行與測(cè)試1 .運(yùn)行程序,輸入作業(yè)數(shù),如 A.1所示。文案大全實(shí)用文檔請(qǐng)輸入作業(yè)數(shù)二分別輸入各作業(yè)優(yōu)先級(jí)和所運(yùn)行的時(shí)間:A1啟動(dòng)界面2 .輸入各作業(yè)優(yōu)先級(jí)和所運(yùn)行的時(shí)間,如A.2所示。請(qǐng)輸入作業(yè)數(shù);卷分別輸入各作業(yè)優(yōu)先級(jí)和所運(yùn)行的時(shí)間:

13、3 20 1 15 2 25作業(yè)調(diào)度順序?yàn)椋?15 225 320平均固轉(zhuǎn)時(shí)閭為:38 .3333平均備收周轉(zhuǎn)時(shí)間為H86667Press any key to continueA2輸入各作業(yè)的優(yōu)先級(jí)和所運(yùn)行的時(shí)間四、響應(yīng)比最高者優(yōu)先算法1 .程序簡(jiǎn)介響應(yīng)比最高者優(yōu)先算法是介乎這兩種算法之間的一種折中的非剝奪式算法,既考慮作業(yè)的等待時(shí)間,又考慮作業(yè)的處理時(shí)間,這樣既照顧短作業(yè)又不會(huì)使長(zhǎng)作業(yè)的等待時(shí)間過(guò)長(zhǎng),有效地改進(jìn)調(diào)度的性能。HRRF算法的缺點(diǎn)是每次計(jì)算各道作業(yè)的響應(yīng)比會(huì)導(dǎo)致一定時(shí)間的開(kāi) 銷,其性能比SJF算法略差。2 .分析1 .先定義一個(gè)二維數(shù)組a皿0代表各作業(yè)的等待時(shí)間,ai1代表各作業(yè)

14、運(yùn)行的時(shí)間,ai2代表響應(yīng)比-1。2 .輸入作業(yè)數(shù)。3 .根據(jù)排序函數(shù)得出作業(yè)調(diào)度順序。4 .最后,累積得作業(yè)周轉(zhuǎn)時(shí)間和帶權(quán)周轉(zhuǎn)時(shí)間后分別除以作業(yè)數(shù)即可得到平均作業(yè)周轉(zhuǎn)時(shí) 間和平均帶權(quán)周轉(zhuǎn)時(shí)間。3 .詳細(xì)設(shè)計(jì)源程序如下:#includeusing namespace std;void B(double a口3,int size)double t,p,s;for(int i=2;isize;i+)文案大全實(shí)用文檔(for(int j=1;jsize-1;j+)if(aj2aj+12)(s=aj2;aj2=aj+12;aj+12=s;t=aj0;aj0=aj+10;aj+10=t;P=aj1;aj

15、1=aj+11;aj+11=p;)int main(void)(double n,a1003,s1003,m1003,T=0,W=0;cout”請(qǐng)輸入作業(yè)數(shù):endl;:n;cout請(qǐng)分別輸入各作業(yè)等待時(shí)間和所運(yùn)行的時(shí)間for(int i=0;iai0ai1;)for(i=1;in;i+)(ai2=(a01-ai0)/ai1;)B(a,n);cout作業(yè)調(diào)度順序?yàn)椋篹ndl;for(i=0;in;i+)(coutai0ai1;s01=0;si+11=si1+ai1;mi+11=(si+11卜ai0)/ai1;T=T+si+11-ai0;W=W+mi+11;coutendl;cout平均周轉(zhuǎn)時(shí)間為:T/nendl;cout平均帶權(quán)周轉(zhuǎn)時(shí)間為:W/nendl;return 0;4 .運(yùn)行

溫馨提示

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