高優先權優先調度算法_第1頁
高優先權優先調度算法_第2頁
高優先權優先調度算法_第3頁
高優先權優先調度算法_第4頁
高優先權優先調度算法_第5頁
已閱讀5頁,還剩14頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、 # 動態高優先權算法實驗報告一、實驗目的通過動態優先權算法的模擬加深對進程概念和進程調度過程的理解。提高自己的動手能力,主要是通過自己去思考并自己編碼更進一步及更貼切的去理解弄明白動態優先權算法的模擬加深對進程概念和進程調度過程的工作流程及其原理!二、實驗要求在運行界面里輸入進程名稱,進程優先級和進程時間;每運行一個時間單位,作業的優先權級數減一;在運行出的用戶界面中顯示初始作業名,作業狀態,優先權級數,需要服務的時間,己經運行的時間;每次調度前后顯示作業隊列;三、實驗內容動態優先權是指在創建進程時所賦予的優先權,是可以隨著進程的推進或隨其等待時間得增加而改變的。實驗內容利用C語言來實現對N

2、個進程釆用動態優先權優先算法的進程調度。優先數改變的原則:進程每運行一個時間片,優先數減1。四、實驗結果登陸界面: #亡入*F八個人C+s)ebugs.exe*穫砸薛鶴法101計08-1班盧彩方290807010122281105170按回車犍進八演示程序I # # # # 輸入進程名字,進程優先數和進程時間:SX曲個人C+sDeb*ugs.exe*已數吋:先行.0名優云一號進進進費入入23.間b數州:先行.1名優運No程程程口-V進進進?AA18-間C數州:先行.2名優運Noa程程號進進進程八入入3CU間d數州:先行.3名優運No程程程口-V進進進?AA間e數州:先行.4名優運Noa程程號進

3、進進程八入入 # Theexecutenumber:1卄當前正在運行的進程杲cqna.neCstateR8super1ndtine0runtimeMWt*當前就緒狀態的隊列為:qna.nestatesuperndtinei*untimedW630qna.nestatesuperndtinei*untimeaU530qnamestatesuperndtimeruntimebU320qna.mestatesuperndtimepuntimeeW148 Theexecutenunbei*:2當前正在運行的進程是:dqnamestatesuperndtimedR630當前就緒狀態的隊列為:qnames

4、tatesuperndtineaW530qnanestatesuperndtimebW320qnamestatesuperndtimeeW140Theexecutenumber:3當前正在運行的進程是;減qnanestatesuperndtimedR531當前就緒狀態的隊列為:qnamestatesuperndtimeaW530qnamestatesuperndtimebW320qnanestatesuperndtimeeW140憑*F:個人C+sDebugs.exe*runtinerntineruntimepuntineruntime:puntineruntineruntime # # #

5、#1Theexecutenunber:4k-當前正在運行的進程是:aqnanestatesuperndtimeruntimelr1530i當前就緒狀態的隊列為:qnamestatesupepndtimeruntimedR432qnamestatestipepndtimeruntimebW320qnanestatesuperndtimeruntimeeW1140 Theexecutenumber:?*當前正在運行的逬程是:aq:namestatesuperndtimeruntimeaK332當前就緒狀態的隊列為:qnamestatesuperndtineruntimebU320qn-anesta

6、tesuperndtineruntineeU14Q # #Theexecutenumber=8puntime7當前正在運行的進程是:hqnamestatesupei*ndtimebR320當前就緒狀態的隊列為 # #wnamestateWsuper1ndtime0rntine # Theexecutenumber:97當前正在運行的進程是b.qnamestatesupei*ndtimeruntimebR221當前就緒狀態的隊列為:q:namestateWsuper14ndtime0runtime睛按任意犍繼續五、實驗小結本次實驗代碼和基于時間片輪轉算法代碼是一樣的,是在別人代碼的基礎上,結合自

7、己對高優先權算法和時間片輪轉算法的了解,通過switch語句把兩者合二為一了,當輸入1的時候,執行HigliPnonty函數,也就是動態高優先權函數。在實現的過程中,使用foi語句,限制進程數為5個:for(inti=0;i!=5;卄1),定義pt作為臨時節點來創建鏈表,processes作為頭結點來存儲鏈表,psorted用來存放排序后的鏈表。這次實驗,在最初的時候,遇到了很大的麻煩,畢竟是改的別人代碼,所以對代碼理解的不是很透徹,但在同學們和老師的幫助下,終于調試成功了。也使我更加明白了高優先權調度的過程。六、附錄#include#includestmctPCBcliarp_name20;

8、intp_piiority;intp_needTime;intp_mnTmie;charp_state;stnictPCB*next;voidHigliPnorityO;voidRoundRobin();voidhifoniiationO;chaiChoiceQ;stmctPCB*SoitList(PCB*HL);mtmam()IiifonnationQ;charchoice=ChoiceQ;switch(choice)caseT:system(nclsn);HighPnoiityO;break;case2:system(nclsn);RoundRobinQ;break;default:bre

9、ak;svstem(npausen);letuni0;voidhifoniiationOprmtf(nnnu);*E);模擬進程調度算法n”);pimtfC*nnE);班級:計科08-1班5”);prmtf(姓名:盧彩方n”);plllltf(n學號:2008070101225”);printf(n實驗日期:2011年05月17日prmtf(getchaiQ;按回車鍵進入演示程序”);system(nclsu);chaiChoiceQprmtf(nnnu);*E);進程調度演示nnE);1演示最高優先數優先算法。iin);2演示輪轉法算法。3退出程序。nnnn”);選擇進程調度方法門;char

10、ch=getchaiQ;retunicli;system(Hclsu);voidHigliPnorityQstmctPCB*processes,*pt;/pt作為臨時節點來創建鏈表processes=pt=(structPCB*)malloc(sizeof(stnictPCB);foi(inti=0;i!=5;卄i)stmctPCB*p=(structPCB*)malloc(sizeof(stnictPCB);printf(M進程號No.%d:n”,i);pnntf(H輸入進程名:”);scanf(H%sn,p-p_name);pnntf(H輸入進程優先數:”);scanf(n%d,&p-p_

11、priority);pnntf(H輸入進程運行時間:”);scanf(H%d,&p-p_needTime);p-p_mnTime=0;p-p_state=p-next=NULL;pt-next=p;pup;pnntf(niiiin);getcliaiQ;接受回車/processes作為頭結點來存儲鏈表processes=piocesses-next;mtcases=0;stmctPCB*psoited=processes;while(1)+cases;pt=processes;對鏈表按照優先數排序/psoned用來存放排序后的鏈表psorted=SortList(psorted);piintf

12、(nTlieexecutenumber:%diiiin,cases);printf(H*當前正在運彳亍的進程是:psoiled-p_name);psoiled-p_state=R:printf(nqiiamestatesuperndtmienintiiiieiin);printf(H%st%ct%dt%dt%dtiiii,psoited-p_name,psorted-p_state5psoited-p_pnonty,psorted-p_needTune?psoited-p_ninTime);pt-p_state=W;psoited-p_ninTime+;psoited-p_pnoiity;pi

13、intf(H*當前就緒狀態的隊列為:iiii);/pt指向己經排序的隊列pt=psorted-next;wlule(pt!=NULL)pnntf(nqnamestatesuperndtimenuitimeiin);pnntf(H%st%ct%dt%dt%dtiin,pt-p_name,pt-p_state,pt-p_pnonty,pt-p_needTime,pt-p_ninTime);pt=pt-next;/pt指向己經排序的鏈表,判斷鏈表是否有己用時間啊等于需要時間的pt=psoited;stnictPCB*ap;ap=NULL;/ap指向pt的前一個節點wlule(pt!=NULL)if(

14、pt-p_needTime=pt-p_ninTime)if(ap=NULL)pt=psoited-next;psoiled=pt;elseap-next=pt-next;ap=pt;pt=pt-next;if(psorted-next=NULL)break;getchar();stmctPCB*SoitList(PCB*HL)stmctPCB*SL;SL=(stmctPCB*)malloc(sizeof(stmctPCB);SL=NULL;stmctPCB*i=HL;while(1!=NULL)stmctPCB*t=r-next;stmctPCB*cp=SL;stmctPCB*ap=NULL;

15、wlule(cp!=NULL)if(r-p_pnoiitycp-p_pnonty)break;elseap=cp;cp=cp-next;if(ap=NULL)r-next=SL;SL=r;elser-next=cp;ap-next=r; r=t;letuinSL;輪轉算法voidRoundRobin()stmctPCB*processes,*pt;/pt作為臨時節點來創建鏈表processes=pt=(structPCB*)malloc(sizeof(stnictPCB);for(inti=0;i!=5;+i)stmctPCB*p=(stmctPCB*)malloc(sizeof(stiuct

16、PCB);piintf(M進程號No.%d:pnntf(H輸入進程名:”);scanf(n%s,p-p_name);pnmf(”輸入進程運行時間:”);scanf(H%d,&p-p_needTime);p-p_ninTime=0;p-p_state=W1;p-next=NULL;pt-next=p;Pt=P;pnntf(niiiiH);getchaiQ;接受回車/processes作為頭結點來存儲鏈表processes=piocesses-next;intcases=0;while(1)+cases;pt=processes;piintf(nTlieexecutenumber:%diiiin,

17、cases);pnntf(H*當前正在運彳亍的進程是:%sii,pt-p_name);pt-p_state=R;pnntf(HqnamestatesuperndtunenmtimeE);piintf(H%st%ct%dt%dt%dtiiii,pt-p_name,pt-p_state?pt-p_prionty?pt-p_needTime,pt-p_ninTime);pt-p_state=W;pt-p_mnTinie+;pt-p_pnonty;pnntf(H*當前就緒狀態的隊列為:iiiiH);pt=pt-next;wlule(pt!=NULL)pnntf(nqnamestatesuperndtunenuitimeiin);pnntf(n%st%ct%dt%dt%dtiinpt-p_name,pt-p_state,pt-p_prionty?pt-p_needTime,pt-p_ninTime);pt=pt-next;檢測是否運行時間等于需要時間,是的話從隊列里面刪除,不是的話加到隊列最尾部pt=processes;if(

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論