實驗一、進程調(diào)度實驗報告_第1頁
實驗一、進程調(diào)度實驗報告_第2頁
實驗一、進程調(diào)度實驗報告_第3頁
實驗一、進程調(diào)度實驗報告_第4頁
實驗一、進程調(diào)度實驗報告_第5頁
已閱讀5頁,還剩14頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、實驗一、進程調(diào)度實驗報告廣東技術(shù)師范學院實驗報告學院:計算機科學學專業(yè):技算師范與班級:成績:姓名:學號:組別:組員:實驗地點:實驗日期:指導教師簽名:預(yù)習情況操作情況考勤情況數(shù)據(jù)處理情況實驗名稱:實驗一、進程調(diào)度實驗一、實驗?zāi)康挠酶呒壵Z言編寫和調(diào)試一個進程調(diào)度程序,以加深對進程的概念及進程調(diào)度算法的 理解二、實驗類別綜合性實驗。綜合高級語言編程、進程調(diào)度模型、進程調(diào)度算法及數(shù)據(jù)結(jié)構(gòu)等多方 面的知識三、實驗內(nèi)容和步驟1 編寫并調(diào)試一個模擬的進程調(diào)度程序,采用“最高優(yōu)先數(shù)優(yōu)先”調(diào)度算法對五個進 程進行調(diào)度。“最高優(yōu)先數(shù)優(yōu)先”調(diào)度算法的基本思想是把CPU分配給就緒隊列中優(yōu)先數(shù)最高的進程。靜態(tài)優(yōu)先數(shù)

2、是在創(chuàng)建進程時確定的,并在整個進程運行期間不再改變。動態(tài)優(yōu)先數(shù)是指進程的優(yōu)先數(shù)在創(chuàng)建進程時可以給定一個初始值, 并且可以按一定 原則修改優(yōu)先數(shù)。例如:在進程獲得一次 CPU后就將其優(yōu)先數(shù)減少1?;蛘?,進程等待 的時間超過某一時限時增加其優(yōu)先數(shù)的值,等等該題根據(jù)老師給的代碼用 Visual C+運行,結(jié)果以及分析如下:rr i. ina. i小 “ Iiii門鼻 i【 4i C:U se rsp cD es ktopDe b u. exe一請輸入進程號:3進程號No_0 =輸入進程名:血 輸入進程優(yōu)先數(shù)立 輸入進程運行時間話進程號No.i =輸入進程名:麗 輸入進程優(yōu)先數(shù)汕 輸入進程運行時間再進

3、程號Mo * 2 :輸入進程名;x結(jié)果分析:根據(jù)上述輸入的三個進程的信息可以得到:優(yōu)先級最高的是進程CC最先調(diào)度進程CC的狀態(tài)為運行態(tài),需要執(zhí)行的時間為 10當前就緒隊列狀態(tài)為:進 程aa先級比較高,處于就緒隊列前面,而進程 bb先級是三者中最低的,所以處于 就緒隊列的最后。而此時這兩個進程的狀態(tài)都為就緒態(tài)。按任一犍繼綾The execute numbep:2*當前正在運行的進程是! aa$七at七巳 :Rsupei* :2ndt ine !6!Grim t ine*當前就緒隊列狀態(tài)為:superndt incruntine! CG!2:10!1statesuperndtinerun t im

4、eibb!u!1;510結(jié)果分析:當進程CC了一個時間片之后而它已占用 CPU時間已達到所需要的運行時 間,則將它的優(yōu)先級減1之后,再將三個進程按優(yōu)先級的大小排列,從中選擇優(yōu)先級 大的進程進入運行狀態(tài),則該次進入運行態(tài)的是進程aa按照這種方式一直運行下去:Su=-一 S1!5:01燈-鍵繼續(xù)-1 The execute number;3I當前正在運行的進程是SCI qniamestatesuperndtimeF-unt luteli cc::R:2110 !11 3*當刖就潔隊列狀態(tài)為(jnane魯七a tusuperdt in)run t irt:hh!u:5:Qqua mestatesup

5、ernilt ineruntimei aa;u;1i6il按任L扌踰并首輸入法半丁_直到:Ihe execute nunbep:i?uin t Ime14*當刖正在運廳的進程是:hb qnane state sitpei* ndLt j_me hb 亦!-3 IS*當前就緒隊列狀態(tài)為:qnanei flrLsupei* -3ndt Ime!6i5runtimeQnanestateccsupei* -3runtimeiI/13輸咆&S結(jié)果分析:當進程bb的CPU占用時間等于它需要的執(zhí)行時間時,進程bb度完成。則這時進程調(diào)度中還有兩個進程:進程aa進程cc按任一鍵繼緘The execute num

6、ber:17當前正在運行的進程是冷曰 qname state wupEt1ndt ime:aa:R:-3:6:5runtiiwi當前就緒隊列狀態(tài)為:qname state superndtine:cc血:-3$10:&runtlm;u進程Caal已完成.結(jié)果分析:當調(diào)度進程中只剩下進程 aa程cc這時根據(jù)進程優(yōu)先級的大小,進程 aa入運行態(tài)。當進程aa調(diào)度時,進程調(diào)度程序中直剩下進程 cc這時進程cc進入運 行態(tài),而當前就緒隊列將為空。C:UserspcDeslctopDebugifiT 度 Exh按任一鍵繼絞Tlie execute nu.mber: 18 當前正在運行的進程是二哄svpci

7、 ndt ineruninciccIB;-3:1016*當前就緒隊列狀態(tài)為=按任一鍵繼續(xù)直到:The execute nuLinbei二1*當前正在運行的進程是託匚qnane state supep ndtimeruntinece!H!-G!10!9*當前就緒隊列狀態(tài)為=進程lJ已完咸.按任一鍵繼續(xù)結(jié)果分析:當進程i的CPU占用時間等于所需要的執(zhí)行時間時,進程 cc調(diào)度完 成,則這時進程調(diào)度中已經(jīng)沒有需要調(diào)度的進程了,則整個進程調(diào)度完成。2、編寫并調(diào)試一個模擬的進程調(diào)度程序,采用“輪轉(zhuǎn)法”調(diào)度算法對五個進程進行 調(diào)度。輪轉(zhuǎn)法可以是簡單輪轉(zhuǎn)法、可變時間片輪轉(zhuǎn)法,或多隊列輪轉(zhuǎn)法。簡單輪轉(zhuǎn)法的基本思

8、想是:所有就緒進程按 FCFS排成一個隊列,總是把處理機分 配給隊首的進程,各進程占用CPU的時間片相同。如果運行進程用完它的時間片后還為 完成,就把它送回到就緒隊列的末尾, 把處理機重新分配給隊首的進程。直至所有的進 程運行完畢。將老師給的源程序修改成簡單的時間片輪轉(zhuǎn)法流程圖如下:開始J初始化上PCB輸 各講程按FCFS原則所有就緒隊列首進時間片到,時間片輪轉(zhuǎn)法#in clude#in clude#in clude#defi ne getpch(type) (type*)malloc(sizeof(type)#defi ne NULL 0#defi ne TIME 2時間片長度/typede

9、f struct pcb /進程管理塊char name10;/進程名字char state;/ 進程狀態(tài)int queue; /進程所在的隊列int ntime;/進程需要運行的時間in t rtime;/進程已經(jīng)運行的時間int etime;/進程在本隊列可運行的時間片struct pcb *li nk;PCB;/*就緒隊PCB *ready = NULL, *pinsert = NULL, *pfend = NULL,*p =NULL;列,進程插入位置的變量*/int geti() /使用戶僅能輸入整數(shù)char ch;int i = 0;fflush(stdi n);ch = getch

10、ar();while(ch = n)printf(tf輸入不能為空請重新輸入n);fflush(stdi n);ch = getchar();while(ch != n)if(ch 9 | ch link | (ps- lin k-queue - ps-queue) 1)pin sert = ps;elsewhile (ps-li nk & ps -li nk-queue != (pfe nd -queue +2) ps = ps-li nk;pin sert = ps;插入進程oid in sert()/if(!ready )ready = p; pfend = p;pin sert = p

11、;第一隊列存在else if(ready -queue = 1) / p-li nk = pfen d-li nk;pfen d-li nk = p;pfend = p;fin dpos();Elsep-li nk = ready; ready = p;fin dpos();oid input()/*建立進程控制塊函數(shù)*/int i,num;prin tf(n請輸入進程的個數(shù):);num = geti();for(i=0; i n ame);printf(n輸入進程運行時間:);p -n time = geti();prin tf(n);p-rtime=O;p-state=w;p-queue

12、=1;p-etime = TIME;p-li nk=NULL;insert();/* 調(diào)用 insert 函數(shù) */oid disp(PCB *pr)/*建立進程現(xiàn)實函數(shù),用于顯示當前進程 */prin tf(nn amet statet queuet n timet rtimetprin tf(|%st,pr- n ame);prin tf( |%ct,pr-state);prin tf( |%dt,pr-queue);prin tf( |%dt,pr- n time);prin tf( |%dt,pr-rtime);prin tf( |%dt,pr-etime);prin tf(n);oi

13、d check()/*建立進程查看函數(shù)*/PCB *pr;prin tf(n *程*/disp(ready); pr= ready -li nk; prin tf(n*在隊列可停留時間t n)當前正在運行的進程是:s,ready- name);/*顯示當前運行的進當前就緒隊列狀態(tài)為:n);/* 顯示就緒隊列狀態(tài)*/while(pr!=NULL)disp(pr);pr=pr-li nk;oid sort()調(diào)整進程隊列if(!ready-li nk |ready-queue li nk-queue) return; p = ready -li nk;ready -li nk = pinsert

14、-li nk;pinsert -li nk = ready;pin sert = ready;ready = p;if (ready & ready - queue = pinsert -queue)fin dpos();oid add new() 添加新的進程if(ready -queue != 1)(ready - queue)+;ready-etime *= 2;ready - state=w;sort();/* 調(diào)用 sort 函數(shù) */ in put();elsein put();oid destroy。/*建立進程撤銷函數(shù)(進程運行結(jié)束,撤銷進程)*/printf(n進程%s已完成

15、.n,ready-name);p = ready;ready = ready-li nk;free(p);if (ready & ready - queue = pin sert -queue) fin dpos();oid running()/*建立進程就緒函數(shù)(進程運行時間到,置就緒狀態(tài))*/(ready - rtime)+;ready -etime -;if(ready-rtime = ready-n time)return;else if(ready -etime = 0)int time = 2;(ready - queue)+;for(i nt i = 2; i != ready-

16、queue; +i)time *= 2;ready-etime = time;ready - state=w;sort();/* 調(diào)用 sort 函數(shù) */oid mai n()char ch;in put();while(ready != NULL)printf(nThe execute name:%sn,ready -name);ready -state = R;check();runnin g();printf(n按i鍵添加新進程.按其他任意鍵繼續(xù)運行.);fflush(stdi n);ch = getchar();if (ch = i| ch=T)add new();進程已經(jīng)完成n);

17、getchar();運行結(jié)果如下:根據(jù)題意輸入五個進程XC:UserspcDesktopDebugj.exe進程號Ku - 3 :輸入進程名心輸入進程運行時間汚進程號附-4:輸入進程名:罰輸人進程運行時間汐進程號Ho 5:輸入進程名輸入進程運行時間汐按任意鍵繼續(xù)C:UserspcDesktopDebugjj-exe按i犍添加新進程-按其他任意鍵繼續(xù)運行-The execute name*當 刖正在運行的進程是 9耳在隊列可停留時闔namestatequeuentinertime:aa1RIIE12:111“當前就緒隊列狀態(tài)為:najmestatequeuent inert i_me在隊列可停留

18、時間ibb;u:1:B;2nainestatequeuent inertine在隊列可停留時間icclwilIS1012namestatequeuent imertime在隊列可停留時間:dd亦!1:7:012naumestatequeueninert i_me在隊列可停留時間!ee!u:1J 9:0:2按i憚逐加新進程.-按其他任意鍵繼續(xù)運行 - XHC;UserspcDesktopDebugjj.exe按i鍵添加新進程援其他任意鍵繼續(xù)運行eThe execute name:cc*當前正在運行的進程是:cc ntine:5rt ine :0在隊列可停留時間 :2nane :ccstate :

19、Rqueue :1當前就緒隊列狀態(tài)為*nanequeuentinert ine在隊列可停留時間:dd!vi!7:0:2nanestatequeuentinei*t ine在隊列可停留時間See:VJ:1:9:0:2panestatequeuentinert ime在隊列可停留時間!aa!vi:2!12:2:2name1statequeuentinertine在隊列可停留時間:hhiVI:2:10:2:2按i鍵添加新進程.按其他任意鍵繼續(xù)運行IW宀 4、丄_按i鍵添加新進程 . 按其他任意鍵繼續(xù)運行eTheexecute nane:dd*當前正在運行的進程是:dd在隊列可亭留時間namestatequeuentiner-t ineIdd!R!1!7!0!2XX MX當前就緒隊列狀態(tài)為:namest

溫馨提示

  • 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

提交評論