![操作系統(tǒng)-時間片輪轉算法_第1頁](http://file4.renrendoc.com/view/1461bda2d1d06a083e00992fa71522c5/1461bda2d1d06a083e00992fa71522c51.gif)
![操作系統(tǒng)-時間片輪轉算法_第2頁](http://file4.renrendoc.com/view/1461bda2d1d06a083e00992fa71522c5/1461bda2d1d06a083e00992fa71522c52.gif)
![操作系統(tǒng)-時間片輪轉算法_第3頁](http://file4.renrendoc.com/view/1461bda2d1d06a083e00992fa71522c5/1461bda2d1d06a083e00992fa71522c53.gif)
![操作系統(tǒng)-時間片輪轉算法_第4頁](http://file4.renrendoc.com/view/1461bda2d1d06a083e00992fa71522c5/1461bda2d1d06a083e00992fa71522c54.gif)
![操作系統(tǒng)-時間片輪轉算法_第5頁](http://file4.renrendoc.com/view/1461bda2d1d06a083e00992fa71522c5/1461bda2d1d06a083e00992fa71522c55.gif)
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
進程時間片輪轉調度算法一、實驗題目:進程時間片輪轉調度算法二、實驗原理:在多道程序系統(tǒng)中,一個作業(yè)被提交后必須經(jīng)過處理機調度后,方能獲得處理機執(zhí)行。對調度的處理又都可采用不同的調度方式和調度算法。調度算法是指:根據(jù)系統(tǒng)的資源分配策略所規(guī)定的資源分配算法。三、實驗目的:1、加深對進程概念的理解,明確進程和程序的區(qū)別。2、深入系統(tǒng)如何組織進程、創(chuàng)建進程。3、進一步認識如何實現(xiàn)處理器調度。4、通過對進程調度算法的設計,深入理解進程調度的原理.5、加深對時間片輪轉調度算法的理解。四、實驗要求:用C語言編寫程序完成單處理機的進程調度,要求采用時間片輪轉調度算法。實驗具體要求包括:首先確定作業(yè)控制塊的內容和組成方式;然后完成作業(yè)調度;最后編寫主函數(shù),并對所做工作進行測試.五、運行結果時間片大小為1時(q=1):請輸入時間片大小,=1進程名 到達時間 服各時間 進程狀態(tài) 執(zhí)行次數(shù)EI 0 4 U B請輸入時間片大小,=1進程名 到達時間 服各時間 進程狀態(tài) 執(zhí)行次數(shù)EI 0 4 U B4旦由I服拜時間I15,11,14,6,13時間:3到達時間若成時間周轉時間1511143.SS13帶權周轉3.2S時間片大小為4時(q=4):EC:^|V/indows\t5y5iem32\cmdl.eKe42鬲輸入時間片大小,邱服務時間4進程狀態(tài)港程名至I]服務時間4進程狀態(tài)a0b11到達時間0服務時EJ4六、代碼includ"stdafxh"#includ<stdio.hinclud<stdlib.h>#includ<string.h>include(windowsoh〉#defineOK0#defineOVERFLOW1charpro[20];//進程intprocessNum;//進程數(shù)inttimeSlice=0//時間片typedefcharQlemTypeChartypedefintQlemTypeInttypedefintStatu;typedefstrucQNode(QlemTypeChardataQlemTypeInttimeArrive=0QlemTypeInttimeService=0;QlemTypeInttimeCount=0;QlemTypeIntrunCount=;0QlemTypeInttimeFinal=0;//完成時間QlemTypeInttimeRound=;0/凋轉時間floattimeRightRound=0//帶權周轉時間QlemTypeCharproState-W';//進程的狀態(tài),W一就緒態(tài),R一執(zhí)行態(tài),F(xiàn)—完成態(tài)structQNode*next//鏈表指針}QNode,*QueuePtrtypedefstruc(QueuePtrfront;/;隊頭指針QueuePtrrear;//隊尾指針}LinkQueueStatusInitQueueLinkQueue&Q){Q.frontQ=.rear=(QueuePtr)mallocsizeo(QNode));i(Q。fron)exit(OVERFLOW);Q。front)nextNULLreturnOK}StatusEnQueueLinkQueue&Q,QlemTypeChare){QueuePtrpp=(QueuePtr)malloc(sizeoQNode));if(!p)exit(OVERFLOW);p->dataep-〉nextNULLQ.rea-〉next=;pQ。rear=;preturnOK)StatusDeQueue(LinkQueue&Q,QlemTypeChar&e)(QueuePtrpif(Q.front=:=.rearreturrERROR;p=Q°fron—〉next;e=p>data;Q。fron-〉next=—next;if(Q.rear==Q)rearQ.front;free(g)returnOKLinkQueueQPrqQNodeqq[10];voidProGetFirs)t(//取出就緒隊列隊首進程InitQueue(QPro);printf"請輸入要創(chuàng)建的進程名稱:帶);forinti=0;i<proce-SNumi++){fflusstdi);scanf_s("%c",&pro[i]);}fflushstdi);forInti=0;pirocessNum-L;i++(qq[i].data=pdotiEnQueue(QPro,qq[i].dat);})voidscanfData{)printf”請輸入要創(chuàng)建的進程數(shù)目:”);scanf_s(”%d”,&processNum);processNum++;fflushstdi);print"\if);ProGetFirst;()printf"創(chuàng)建進程到達時間:\n");inttime_Arr[10forInti=0;〈iprocessNum—1;i++)(scanf_s("%d",&time_Arr[]i);)forinti=0;i<process-Umi++)(qq[i].timeArrive=timelAfi;EnQueue(QPro,qq[i].timeArrive);}printf"創(chuàng)建進程服務時間:\n”);inttime-Seif10[;for(inti=;0i〈processNum-1;i++)(scanf_s("%d”,&time_SerIi;}forinti=;0i<processNum—1;i++){qq[i[。timeService=time-SdrliEnQueue(QPro,qqDitimeServicsfe;}printf”請輸入時間片大小::");scanf_s"%d”,&timeSlice)printf”\n);}voidProOutPut1()//獲取進程信息printf"進程名\t到達時間\t服務時間\t進程狀態(tài)\t執(zhí)行次數(shù)\n");for(inti=;0i<processNum1i++){printf"%c\t\t%d\t聯(lián)d\t\t%c\t^td\n",qq[i]data,qqlitimeArrive,hi]timeServic,eqq[i]proStateqq[i]。runCount)voidCalculatetimeFi)al((//計算完成時間inttimecou=;intcountTemp=;0QlemTypeChareeforinti=0;〈iprocessNum—1;i++(countTemp+=qq[i]。timeServiqe)while(timecou〈countTemp)(for(inti=0;i<processNumi++)(if(qq[i].timeFinal)=0(if(qq[i]。timeServicc—qq[i]timeCount〉=timeSlide(timecou+=timeSlice;)elsetimecou+=(qq[i].timeSer—cqq[i].timeCount);//DeQueue(QPro,ee);)if(timeSlice〈qq[i].timeServ)ce//時間片大小〈服務時間(inttimetemp=timeSliCeqq[i].timeService?[qq.timeService:timpSliceif((qc[i].timeCount+timetemp)<[qq].timeService){if(qq[i]timeService—qq[i].timeCount=timeSlice){qq[i]timeCount+=timeSlice}else{qq[i].timeCount+=[qi]。timeService—qq[i]。timeCount);))else{if(qq[i].timeFinal)=0{qq[i]]timeFinal=timecou;)}}else//時間片大小>=服務時間qq[i].timeFinal=timecou//該進程的完成時間=countfor(intfor(inti=;0i〈processNum—1;++i)qq[i]otimeRound=qq[i].timeFinHqq[i]otimeArriv;eqqli.timeServiceqq[i]timeRightRound=floa)qq[i]timeRound/qqli.timeServicevoidProOutPut2(){/原取進程處理后的信息print”進程名\t到達時間 服務時間完成時間周轉時間帶權周轉\n);forintvoidProOutPut2(){/原取進程處理后的信息print”進程名\t到達時間 服務時間完成時間周轉時間帶權周轉\n);forinti=;0iprocessNum-1;i++){printf"%c\t\%d\t%d\t%d\t%d\t%.2f\n,qq[i].data,.timeArrive,[qqqq[i]。qq[i]。timeRightRoun);int_tmain(intarg,_TCHAR*arg[]){scanfData(;ProOutPut1();CalculatetimeFinai;(printf"\n‘);print”CPU處理中?!?。\n”);printf”完成時間:”);forinti=;0i<processNum—1;i++)(print”%d,”,qq[i]timeFinal;)printf”\
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- ppp停車 合同范例
- 辦公家具采購合同范例
- 與公司相關合同范本文檔
- 2025年度農業(yè)種植灌溉設備租賃與維護服務合同
- 北京蓋民房合同范本
- 從黔東南苗侗民族文化的傳承現(xiàn)狀看民族文化的發(fā)展觀
- 中標合同范本
- 專屬藝人合同范本
- 勞務分包補充合同范本
- 亮化出租維修合同范本
- 河道保潔服務日常巡邏方案及措施
- (高清版)DZT 0399-2022 礦山資源儲量管理規(guī)范
- 解憂雜貨鋪ppt讀書分享
- 技術規(guī)范書完整版本
- 精益生產(chǎn)工作匯報(模板)
- 中央空調節(jié)能改造方案
- 高校圖書館服務
- 河南省南陽市唐河縣2023-2024學年八年級上學期期末數(shù)學試題(含答案)
- 市政標化工地檢查評分表
- 招聘技巧培訓課件模板
- 中醫(yī)治未病課件
評論
0/150
提交評論