實(shí)驗(yàn)一、進(jìn)程調(diào)度實(shí)驗(yàn)報(bào)告_第1頁(yè)
實(shí)驗(yàn)一、進(jìn)程調(diào)度實(shí)驗(yàn)報(bào)告_第2頁(yè)
實(shí)驗(yàn)一、進(jìn)程調(diào)度實(shí)驗(yàn)報(bào)告_第3頁(yè)
實(shí)驗(yàn)一、進(jìn)程調(diào)度實(shí)驗(yàn)報(bào)告_第4頁(yè)
實(shí)驗(yàn)一、進(jìn)程調(diào)度實(shí)驗(yàn)報(bào)告_第5頁(yè)
已閱讀5頁(yè),還剩12頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、精品文檔廣東技術(shù)師范學(xué)院實(shí)驗(yàn)報(bào)告學(xué)院:姓名:計(jì)算限學(xué)學(xué)專(zhuān)業(yè):民喘及班級(jí):學(xué)號(hào):組別: 組員:成績(jī):預(yù)習(xí)情況操作情況考勤情況數(shù)據(jù)處理情況實(shí)驗(yàn)地點(diǎn):實(shí)驗(yàn)日期:指導(dǎo)教師簽名:實(shí)驗(yàn)名稱(chēng):實(shí)驗(yàn)一、進(jìn)程調(diào)度實(shí)驗(yàn)一、實(shí)驗(yàn)?zāi)康挠酶呒?jí)語(yǔ)言編寫(xiě)和調(diào)試一個(gè)進(jìn)程調(diào)度程序,以加深對(duì)進(jìn)程的概念及進(jìn)程調(diào)度算法的 理解 二、實(shí)驗(yàn)類(lèi)別綜合性實(shí)驗(yàn)。綜合高級(jí)語(yǔ)言編程、進(jìn)程調(diào)度模型、進(jìn)程調(diào)度算法及數(shù)據(jù)結(jié)構(gòu)等多方 面的知識(shí)三、實(shí)驗(yàn)內(nèi)容和步驟1.編寫(xiě)并調(diào)試一個(gè)模擬的進(jìn)程調(diào)度程序,采用“最高優(yōu)先數(shù)優(yōu)先”調(diào)度算法對(duì)五個(gè)進(jìn) 程進(jìn)行調(diào)度?!白罡邇?yōu)先數(shù)優(yōu)先”調(diào)度算法的基本思想是把CPU分配給就緒隊(duì)列中優(yōu)先數(shù)最高的進(jìn)程。靜態(tài)優(yōu)先數(shù)是在創(chuàng)建進(jìn)程時(shí)確定

2、的,并在整個(gè)進(jìn)程運(yùn)行期間不再改變。動(dòng)態(tài)優(yōu)先數(shù)是指進(jìn)程的優(yōu)先數(shù)在創(chuàng)建進(jìn)程時(shí)可以給定一個(gè)初始值, 并且可以按一定 原則修改優(yōu)先數(shù)。例如:在進(jìn)程獲得一次 CPUt就將其優(yōu)先數(shù)減少1。或者,進(jìn)程等待 的時(shí)間超過(guò)某一時(shí)限時(shí)增加其優(yōu)先數(shù)的值,等等該題根據(jù)老師給的代碼用 Visual C+運(yùn)行,結(jié)果以及分析如下:一 JTt-. I. 9111瓶 . ETl r,-一 一三一三 T'. i 3二' C:Use rsp cD es ktopDe b u, exeB一請(qǐng)輸入進(jìn)程號(hào) 3進(jìn)程號(hào)Mo.小輸入進(jìn)程名二相 輸入迸程優(yōu)先數(shù)二2 輸入進(jìn)程運(yùn)行時(shí)間;6進(jìn)程號(hào)公 輸入進(jìn)程名:血 輸入進(jìn)程優(yōu)先教區(qū) 輸

3、入進(jìn)程運(yùn)行時(shí)間:S進(jìn)程號(hào)Ho . 2 :輸入進(jìn)程名,cc結(jié)果分析:根據(jù)上述輸入的三個(gè)進(jìn)程的信息可以得到:優(yōu)先級(jí)最高的是進(jìn)程cc最先調(diào)度進(jìn)程cc的狀態(tài)為運(yùn)行態(tài),需要執(zhí)行的時(shí)間為 10當(dāng)前就緒隊(duì)列狀態(tài)為:進(jìn)程 aa先級(jí)比較高,處于就緒隊(duì)列前面,而進(jìn)程 bb先級(jí)是三者中最低的,所以處于就緒 隊(duì)列的最后。而此時(shí)這兩個(gè)進(jìn)程的狀態(tài)都為就緒態(tài)。接任一鍵繼續(xù)The execute numbep:2*當(dāng)前正在運(yùn)行的進(jìn)程是:電qn 司 me! aa猛七色te:Rsupei*:2ndt ine !6!Grimt ine一當(dāng)前就緒隊(duì)列狀態(tài)為:superndt incruntine! CG!u!2:10(1qcarws

4、tatesuperndtinerun t imeibbiu;510懶一鍵繼續(xù)- 音輸入法與 =結(jié)果分析:當(dāng)進(jìn)程cc 了一個(gè)時(shí)間片之后而它已占用 CPU時(shí)間已達(dá)到所需要的運(yùn)行時(shí) 問(wèn),則將它的優(yōu)先級(jí)減1之后,再將三個(gè)進(jìn)程按優(yōu)先級(jí)的大小排列,從中選擇優(yōu)先級(jí) 大的進(jìn)程進(jìn)入運(yùn)行狀態(tài),則該次進(jìn)入運(yùn)行態(tài)的是進(jìn)程aa按照這種方式一直運(yùn)行下去:;hb;1;5 ;S接任一鍵繼續(xù).一 .一The execute number;3*當(dāng)前正在運(yùn)行的進(jìn)程是"心I qrbainie Il ccstate!Rsuper:2ndtimeIIO!1v-un t ine1當(dāng)刖就緒隊(duì).列狀態(tài)為I qnanestatesup

5、erdt in)«r-un tl:hh!u!i:5:QI qinamestatesimperrid / ineruntIneIn aa;IJSIi6ilI粳任-一鍵繼續(xù)一融游并二直到:Ihe execute nunbep:qname llbb當(dāng)前正在運(yùn)行的進(jìn)程是fh statesitpei* ndL 七 ime州1-3!514mn t Ine1*當(dāng)刖就緒隊(duì)列狀態(tài)為:qname iaastiite;tjSUpEl*17ndt Ime !615runtimeqnane!ccstatesupep !-3ndt in 虺 !1»lbruntime結(jié)果分析:當(dāng)進(jìn)程bb的CPU占用時(shí)間

6、等于它需要的執(zhí)行時(shí)間時(shí),進(jìn)程bb度完成 則這時(shí)進(jìn)程調(diào)度中還有兩個(gè)進(jìn)程:進(jìn)程 aa進(jìn)程cc按任一鍵繼續(xù)The execute number:17*當(dāng)前正在運(yùn)行的進(jìn)程是:amqname state gupEt1ndt imeruntime:aa :R :-3:6:5當(dāng)前就緒隊(duì)列狀態(tài)加二qname state superndtinsruntine:cc M :-3!10:&進(jìn)程Caal已完成-結(jié)果分析:當(dāng)調(diào)度進(jìn)程中只剩下進(jìn)程 aa程cc這時(shí)根據(jù)進(jìn)程優(yōu)先級(jí)的大小,進(jìn)程 aa入運(yùn)行態(tài)。當(dāng)進(jìn)程aa調(diào)度時(shí),進(jìn)程調(diào)度程序中直剩下進(jìn)程 cc這時(shí)進(jìn)程cc進(jìn)入運(yùn)行 態(tài),而當(dāng)前就緒隊(duì)列將為空。直到:The e

7、xecute nuunh日產(chǎn)二21*當(dāng)前正在運(yùn)行的進(jìn)程是 qnane state supep ndtimeruntinece !R !-G!10!9i*當(dāng)前就緒隊(duì)列狀態(tài)為品進(jìn)程IccJ已完成.按住一鍵繼續(xù)結(jié)果分析:當(dāng)進(jìn)程i的CPU占用時(shí)間等于所需要的執(zhí)行時(shí)間時(shí),進(jìn)程cc調(diào)度完成, 則這時(shí)進(jìn)程調(diào)度中已經(jīng)沒(méi)有需要調(diào)度的進(jìn)程了,則整個(gè)進(jìn)程調(diào)度完成。2、編寫(xiě)并調(diào)試一個(gè)模擬的進(jìn)程調(diào)度程序,采用“輪轉(zhuǎn)法”調(diào)度算法對(duì)五個(gè)進(jìn)程進(jìn)行 調(diào)度。輪轉(zhuǎn)法可以是簡(jiǎn)單輪轉(zhuǎn)法、可變時(shí)間片輪轉(zhuǎn)法,或多隊(duì)列輪轉(zhuǎn)法。簡(jiǎn)單輪轉(zhuǎn)法的基本思想是:所有就緒進(jìn)程按 FCFS排成一個(gè)隊(duì)列,總是把處理機(jī)分 配給隊(duì)首的進(jìn)程,各進(jìn)程占用CPU的時(shí)間

8、片相同。如果運(yùn)行進(jìn)程用完它的時(shí)間片后還為 完成,就把它送回到就緒隊(duì)列的末尾, 把處理機(jī)重新分配給隊(duì)首的進(jìn)程。直至所有的進(jìn) 程運(yùn)行完畢。將老師給的源程序修改成簡(jiǎn)單的時(shí)間片輪轉(zhuǎn)法流程圖如下:時(shí)間片輪轉(zhuǎn)法#include<stdio.h>#include<stdlib.h>#include<conio.h>#define getpch(type) (type*)malloc(sizeof(type)#define NULL 0#define TIME 2 時(shí)間片長(zhǎng)度/typedef struct pcb /進(jìn)程管理塊char name10;/ 進(jìn)程名字char s

9、tate;/進(jìn)程狀態(tài)int queue;/進(jìn)程所在的隊(duì)列int ntime;/進(jìn)程需要運(yùn)行的時(shí)間int rtime;/進(jìn)程已經(jīng)運(yùn)行的時(shí)間int etime; /進(jìn)程在本隊(duì)列可運(yùn)行的時(shí)間片struct pcb *link;/*就緒隊(duì)PCB;PCB *ready = NULL, *pinsert = NULL, *pfend = NULL,*p =NULL;列,進(jìn)程插入位置的變量*/int geti() /使用戶(hù)僅能輸入整數(shù)char ch;int i = 0;fflush(stdin);ch = getchar();while(ch = 'n')printf("tf 輸入

10、不能為空.請(qǐng)重新輸入n");fflush(stdin);ch = getchar();while(ch != 'n')if(ch > '9' | ch < '0')printf("t輸入有誤!輸入只能為正整數(shù),請(qǐng)重新輸入n");fflush(stdin);i = 0;ch = getchar();elsei = i*10 + (ch -'0');ch = getchar();return i;void findpos()/更新?tīng)顟B(tài)量PCB *ps = pfend;if(!ps | !ps

11、-> link | (ps-> link->queue - ps->queue) > 1)pinsert = ps;elsewhile (ps->link && ps ->link->queue != (pfend ->queue +2) ps = ps->link;pinsert = ps;插入進(jìn)程void insert()/if(!ready )ready = p;pfend = p;第一隊(duì)列存在pinsert = p;else if(ready ->queue = 1) / p->link = pfe

12、nd->link;pfend->link = p;pfend = p;findpos();Elsep->link = ready;ready = p;findpos();void input()/*建立進(jìn)程控制塊函數(shù)*/int i,num;printf("n請(qǐng)輸入進(jìn)程的個(gè)數(shù):");num = geti();for(i=0; i < num; i+)printf("n 進(jìn)程號(hào) No.%d:n",i+1);p=getpch(PCB);printf("n輸入進(jìn)程名:");scanf("%s”,p->n

13、ame);printf("n輸入進(jìn)程運(yùn)行時(shí)間:");p ->ntime = geti();printf("n");p->rtime=0;p->state='w'p->queue =1;p->etime = TIME;p->link=NULL;insert。;/*調(diào)用 insert 函數(shù) */void disp(PCB *pr)/*建立進(jìn)程現(xiàn)實(shí)函數(shù),用于顯示當(dāng)前進(jìn)程 */printf("nnamet statet queuet ntimet rtimet在隊(duì)列可停留時(shí)間 t n");p

14、rintf("|%st",pr->name);printf(" |%ct",pr->state);printf(" |%dt",pr->queue);printf(" |%dt",pr->ntime);printf(" |%dt",pr->rtime);printf(" |%dt",pr->etime);printf("n");void check()/*建立進(jìn)程查看函數(shù)*/PCB *pr;printf("n

15、*當(dāng)前正在運(yùn)行的進(jìn)程是:s",ready->name);/*顯示當(dāng)前運(yùn)行的進(jìn)程*/disp(ready);當(dāng)前就緒隊(duì)列狀態(tài)為:n");/*顯示就緒隊(duì)列狀態(tài)*/pr= ready ->link;printf("n*while(pr!=NULL)disp(pr);pr=pr->link;void sort()調(diào)整進(jìn)程隊(duì)列if(!ready->link |ready->queue < ready->link->queue) return;p = ready ->link;ready ->link = pinse

16、rt ->link;pinsert ->link = ready;pinsert = ready;ready = p;if (ready && ready -> queue = pinsert ->queue) findpos();void addnew()/ 添加新的進(jìn)程if(ready ->queue != 1)(ready -> queue)+;ready->etime *= 2;ready -> state='w'sort();/* 調(diào)用 sort 函數(shù)*/input();elseinput();void

17、destroy。/*建立進(jìn)程撤銷(xiāo)函數(shù)(進(jìn)程運(yùn)行結(jié)束,撤銷(xiāo)進(jìn)程)*/printf("n進(jìn)程%s已完成.n",ready->name);p = ready;ready = ready->link;free(p);if (ready && ready -> queue = pinsert ->queue)findpos();void running。/*建立進(jìn)程就緒函數(shù)(進(jìn)程運(yùn)行時(shí)間到,置就緒狀態(tài))*/(ready -> rtime)+;ready ->etime -;if(ready->rtime = ready->

18、;ntime)destroy。;return;else if(ready ->etime = 0)int time = 2;(ready -> queue)+;for(int i = 2; i != ready->queue; +i) time *= 2;ready->etime = time;ready -> state='w'sort();/* 調(diào)用 sort 函數(shù)*/void main()char ch;input();while(ready != NULL)printf("nThe execute name:%sn”,ready

19、->name);ready ->state = 'R'check();running。;printf("n 按i鍵添加新進(jìn)程.按其他任意鍵繼續(xù)運(yùn)行 ) fflush(stdin);ch = getchar();if (ch = 'i'| ch=T)addnew();printf("nn進(jìn)程已經(jīng)完成n");getchar();運(yùn)行結(jié)果如下:根據(jù)題意輸入五個(gè)進(jìn)程"C :U se與 p c Des kt。pDe bugjj £*已'請(qǐng)輸入進(jìn)程的個(gè)數(shù);5進(jìn)程號(hào)則.1: 輸入進(jìn)程名:召a輸入進(jìn)程運(yùn)行時(shí)間

20、n2進(jìn)程號(hào).2 -輸入進(jìn)程名:岫 輸入進(jìn)程運(yùn)行時(shí)間;血進(jìn)程號(hào)Ho. 3,輸入進(jìn)程名:3輸入進(jìn)程運(yùn)行時(shí)間,5"C U sp rs p 匚 Due ktQ p De b u.exe"進(jìn)程號(hào)Nu , 3 :輸入進(jìn)程名3匚輸人進(jìn)程運(yùn)行時(shí)間;5進(jìn)程號(hào)N。-4:輸入ii程名:dd輸入進(jìn)程運(yùn)行時(shí)間,7進(jìn)程號(hào)N。1 5 ;輸入進(jìn)程名魂e輸入進(jìn)程運(yùn)行時(shí)間,9按任意鍵繼續(xù)"C:UserspcDesktopDebugjj-exe"學(xué)鍵添加新進(jìn)程.按其他任意鍵繼續(xù)運(yùn)行卜The execulte name = aa*當(dāng) 前正在運(yùn)行 的選程是:*nane !aastate :Rqu

21、eue 11nt ine 12rtime在隊(duì)列可停留時(shí)間 11當(dāng)前就緒隊(duì)列狀態(tài)為:namestatequeuent inert i_me在隊(duì)列可停留時(shí)間ibbiw:1:B2namestatequeuentinertine在隊(duì)列可停留時(shí)間icciw!1IS1012namestatequeuent imertime在隊(duì)列可停留時(shí)間:dd!u:1(7:012nanestatequeuent inert i_me在隊(duì)列可停留時(shí)間See!u:1:9:0:2按鹿透加飆進(jìn)程.按其他任意鍵繼續(xù)運(yùn)行.wC;UserspcDesktQpDebugjj.exe"i按i鍵添加新進(jìn)程.,* ,按其他任意鍵繼續(xù)

22、運(yùn)行.,Flie execute name :cc*當(dāng)前正在運(yùn)行的進(jìn)程是:"-1rt就叫.stftte queu« nt in? rt ime 在隊(duì)列可悍留時(shí)間:cc;R:1i5;0:2“當(dāng)前就緒隊(duì)到狀態(tài)為:raane號(hào)queue ntine rine 在隊(duì)列可停留時(shí)間;dd”:1:7:0:2nanestatequeuentimert ine在隊(duì)列可停留時(shí)間:ee!u:1!9:0:2name令tatequeuent ±mei*t irae在隊(duì)列可停留時(shí)間1&&;vr12112;212namestateQueuentimeptinn在隊(duì)列可停留時(shí)間;bb!u:2!10Z:2情i鍵麴衡進(jìn)程.按其他任意鍵繼續(xù)運(yùn)行.一*"CAUserspcDesktopDebugjj.exe"一 口按i鍵添加

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論