進(jìn)程管理 操作系統(tǒng)實(shí)驗(yàn)報(bào)告_第1頁(yè)
進(jìn)程管理 操作系統(tǒng)實(shí)驗(yàn)報(bào)告_第2頁(yè)
進(jìn)程管理 操作系統(tǒng)實(shí)驗(yàn)報(bào)告_第3頁(yè)
進(jìn)程管理 操作系統(tǒng)實(shí)驗(yàn)報(bào)告_第4頁(yè)
進(jìn)程管理 操作系統(tǒng)實(shí)驗(yàn)報(bào)告_第5頁(yè)
全文預(yù)覽已結(jié)束

下載本文檔

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

文檔簡(jiǎn)介

計(jì)算機(jī)與信息技術(shù)學(xué)院綜合性、設(shè)計(jì)性實(shí)驗(yàn)報(bào)告專業(yè):計(jì)算機(jī)科學(xué)與技術(shù)年級(jí)/班級(jí):08級(jí)計(jì)科一班2010—2011學(xué)年第一學(xué)期課程名稱計(jì)算機(jī)操作系統(tǒng)指導(dǎo)教師本組成員學(xué)號(hào)姓名實(shí)驗(yàn)地點(diǎn)計(jì)算機(jī)學(xué)院過(guò)街天橋機(jī)房C區(qū)實(shí)驗(yàn)時(shí)間2010.11.282010.12.52010.12.122010.12.19項(xiàng)目名稱處理機(jī)調(diào)度實(shí)驗(yàn)類型設(shè)計(jì)性實(shí)驗(yàn)?zāi)康耐ㄟ^(guò)先來(lái)先服務(wù)算法的模擬加深對(duì)進(jìn)程概念和進(jìn)程調(diào)度過(guò)程的理解。實(shí)驗(yàn)儀器或設(shè)備每人一臺(tái)計(jì)算機(jī),硬件要求:CPUPII以上,64M內(nèi)存,100M硬盤空間即可;軟件要求:Linux操作系統(tǒng)。總體設(shè)計(jì)(設(shè)計(jì)原理、設(shè)計(jì)方案及流程等)設(shè)計(jì)原理:在作業(yè)調(diào)度中采用先來(lái)先服務(wù)(FCFS)調(diào)度算法時(shí),每次調(diào)度都是都是從后備作業(yè)隊(duì)列中選擇一個(gè)或多個(gè)最先進(jìn)入該隊(duì)列的作業(yè),將它們調(diào)入內(nèi)存,為它們分配資源、創(chuàng)建進(jìn)程,然后放入就緒隊(duì)列中。設(shè)計(jì)方案及流程:四.實(shí)驗(yàn)步驟(包括主要步驟、代碼分析等)主要步驟:(1)、創(chuàng)建一個(gè)PCB鏈表來(lái)模擬進(jìn)程排隊(duì)的隊(duì)列(2)、判斷當(dāng)前隊(duì)列是否為空。若為空,表明所有進(jìn)程已執(zhí)行完畢,若不為空且當(dāng)前時(shí)間>=進(jìn)程到達(dá)時(shí)間,則運(yùn)行進(jìn)程,按先來(lái)先服務(wù)原則,從當(dāng)前就緒隊(duì)列中選擇一個(gè)最先進(jìn)入該隊(duì)列的進(jìn)程,進(jìn)程完或發(fā)生某事件而阻塞后再運(yùn)行下一個(gè)進(jìn)程,否則,等待。(3)、當(dāng)前進(jìn)程運(yùn)行完,出隊(duì)列,運(yùn)行下一個(gè)在等待隊(duì)列中的進(jìn)程,直至隊(duì)列中的所有進(jìn)程運(yùn)行完畢為止。代碼分析:#include<stdio.h>#include<conio.h>#include<process.h>#defineN20 //進(jìn)程名字最多支持20個(gè)字符typedefstructpcb{ charpname[N]; //進(jìn)程名字 intruntime; //估計(jì)進(jìn)程運(yùn)行所需時(shí)間 intarrivetime; //進(jìn)程到達(dá)時(shí)間 charstate; //進(jìn)程狀態(tài) structpcb*next;//連接指針}PCB;PCBhead_input; //鏈表的頭PCB*queue_head,*queue_end;//模擬隊(duì)列的頭和尾指針//FILE*f; //文件保存intsum_turnaroundtime=0;//總周轉(zhuǎn)時(shí)間intnum; //總進(jìn)程數(shù)目staticcharR='r',C='c';unsignedlongcurrent; //系統(tǒng)當(dāng)前時(shí)間,按秒計(jì)算voidinputprocess(); //創(chuàng)建進(jìn)程的子函數(shù),按照到達(dá)時(shí)間進(jìn)入隊(duì)列voidrunreadyprocess(); //運(yùn)行就緒的隊(duì)列voidrunreadyprocess(){ inti=0,time,runtime1; PCB*p1; while(queue_end!=NULL) { i++; p1=queue_end;while((unsignedlong)p1->arrivetime>current)//如果到達(dá)時(shí)間大于當(dāng)前時(shí)間,等待 current++; printf("NO.%3dprocess%shasstarted!\n",i,p1->pname); time=0;runtime1=p1->runtime; while(p1->runtime>0)//運(yùn)行進(jìn)程,先來(lái)先服務(wù),運(yùn)行完先來(lái)的,再運(yùn)行下一個(gè) { p1->runtime--; time++; current++; printf("NO.%3dprocess%shasrun%ds,stillhas%dstocomplete!\n",i,p1->pname,time,runtime1-time); } p1->state=C;//進(jìn)程運(yùn)行完,更改狀態(tài) printf("NO.%3dprocess%shascompleted!\n",i,p1->pname);printf("NO.%3dprocess%s'sturnaround_timeis:%d\n",i,p1->pname,current-p1->arrivetime); printf("\n"); sum_turnaroundtime+=current-p1->arrivetime; queue_end=queue_head->next; queue_head=queue_end; } }voidinputprocess(){ PCB*p1,*p2; printf("Howmanyprocessesdoyouwanttorun:"); //fprintf(f,"Howmanyprocessesdoyouwanttorun:"); scanf("%d",&num); //fprintf(f,"%d\n",&num); p1=&head_input; p2=p1; p1->next=newPCB; p1=p1->next; for(inti=0;i<num;i++)//創(chuàng)建num個(gè)進(jìn)程 { printf("NO.%3dprocessesinputpname:",i+1); //fprintf(f,"NO.%3dprocessesinputpname:",i+1); scanf("%s",p1->pname); //fprintf(f,"%s\n",p1->pname); printf("NO.%3dprocessesruntime:",i+1); //fprintf(f,"NO.%3dprocessesruntime:",i+1); scanf("%d",&(p1->runtime)); //fprintf(f,"%d\n",&(p1->runtime)); printf("NO.%3dprocessesarrivetime:",i+1); //fprintf(f,"NO.%3dprocessesarrivetime:",i+1); scanf("%d",&(p1->arrivetime)); //fprintf(f,"%d\n\n",&(p1->arrivetime)); printf("\n"); p1->state=R; p1->next=newPCB; p2=p1; p1=p1->next; } deletep1; p1=NULL; p2->next=NULL;}voidmain(){ //f=fopen("result.txt","w"); current=0; inputprocess(); queue_head=&head_input; queue_end=queue_head->next; queue_head=queue_end; runreadyprocess(); printf("Theaverageturnaround_timeofalltheprocessesis:%d\n",sum_turnaroundtime/num); //system("typeresult.txt");}結(jié)果分析與總結(jié):結(jié)果如下:分析:結(jié)果中進(jìn)程運(yùn)行的順序?yàn)閜rocesspro1、processpro2、processpro3、processpro4、processpro5,與輸入順序一致,根據(jù)先來(lái)先服務(wù)算法的思想來(lái)看,結(jié)果是正確的??偨Y(jié):實(shí)驗(yàn)結(jié)果顯示,本實(shí)驗(yàn)正確模擬了動(dòng)態(tài)優(yōu)先級(jí)調(diào)度算法,每次都是調(diào)度優(yōu)先權(quán)最高的進(jìn)程運(yùn)行,在優(yōu)先權(quán)相同的情況下,按照FCFS原則進(jìn)行調(diào)度,優(yōu)先權(quán)隨著進(jìn)程的推進(jìn)和在就緒隊(duì)列中等待時(shí)間的增加而實(shí)現(xiàn)了動(dòng)態(tài)變化。處理及調(diào)度的算法有一定的難度,因?yàn)槠淅碚撋系碾y度,但是通過(guò)學(xué)習(xí)讓我對(duì)其有了更加深入的

溫馨提示

  • 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)論