版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、操作系統(tǒng)課程實驗報告實驗名稱:動態(tài)高優(yōu)先權(quán)優(yōu)先姓名:學號:地點:指導老師專業(yè)班級一、實驗內(nèi)容:1、實驗內(nèi)容:2、模擬實現(xiàn)動態(tài)咼優(yōu)先權(quán)優(yōu)先(若數(shù)值越大優(yōu)先權(quán)越咼,每運行一個時間單位優(yōu)先權(quán)n,若數(shù)值越小優(yōu)先權(quán)越高,沒運行一個時間單位優(yōu)先權(quán)+n),具體如下:3、設(shè)置作業(yè)體:作業(yè)名,作業(yè)的到達時間,服務(wù)時間,初始優(yōu)先權(quán),作業(yè)狀態(tài)(W等待,R運行,F完成),作業(yè)間的鏈接指針4、作業(yè)初始化:由用戶輸入作業(yè)名、服務(wù)時間、初始優(yōu)先權(quán)進行初始化,同時,初始化作業(yè)的狀態(tài)為W。5、顯示函數(shù):在作業(yè)調(diào)度前、調(diào)度中和調(diào)度后進行顯示。6、排序函數(shù):對就緒狀態(tài)的作業(yè)按照優(yōu)先權(quán)排序。優(yōu)先權(quán)相同時進入等待隊列時間早的作業(yè)在前。
2、注意考慮到達時間7、調(diào)度函數(shù):每次從等待隊列隊首調(diào)度優(yōu)先權(quán)最咼的作業(yè)執(zhí)行,狀態(tài)變化。并在執(zhí)行一個時間單位后優(yōu)先權(quán)變化,服務(wù)時間變化,狀態(tài)變化。當服務(wù)時間為0時,狀態(tài)變?yōu)镕。8、刪除函數(shù):撤銷狀態(tài)為F的作業(yè)。實驗要求:9、測試數(shù)據(jù)可以隨即輸入或從文件中讀入。10、必須要考慮到作業(yè)的到達時間11、最終能夠計算每一個作業(yè)的周轉(zhuǎn)時間。三、實驗代碼#include#includestructPCBcharp_name20;intp_priority;intp_needTime;intp_runTime;charp_state;structPCB*next;voidHighPriority();voidR
3、oundRobin();voidInformation();charChoice();structPCB*SortList(PCB*HL);intmain()Information();charchoice=Choice();switch(choice)case1:system(cls);HighPriority();break;case2:system(cls);RoundRobin();break;default:break;system(pause);return0;charChoice()printf(nn);printf(n);printf(printf(nnn);printf(pr
4、intf(printf(printf(#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*進程調(diào)度演示n);#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*演示
5、最高優(yōu)先數(shù)優(yōu)先算法。n);演示輪轉(zhuǎn)法算法。n);退出程序。nnnn);選擇進程調(diào)度方法:);charch=getchar();returnch;system(cls);voidHighPriority()structPCB*processes,*pt;/pt作為臨時節(jié)點來創(chuàng)建鏈表processes=pt=(structPCB*)malloc(sizeof(structPCB);for(inti=0;i!=5;+i)structPCB*p=(structPCB*)malloc(sizeof(structPCB);printf(進程號No.%d:n,i);printf(輸入進程名:);scanf(
6、%s,p-p_name);printf(輸入進程優(yōu)先數(shù):);scanf(%d,&p-p_priority);printf(輸入進程運行時間:);scanf(%d,&p-p_needTime);p-p_runTime=0;p-p_state=W;p-next=NULL;pt-next=p;pt=p;printf(nn);getchar();/接受回車/processes作為頭結(jié)點來存儲鏈表processes=processes-next;intcases=0;structPCB*psorted=processes;while(1)+cases;pt=processes;/對鏈表按照優(yōu)先數(shù)排序/p
7、sorted用來存放排序后的鏈表psorted=SortList(psorted);printf(Theexecutenumber:%dnn,cases);printf(*當前正在運行的進程是:%sn,psorted-p_name);psorted-p_state=R;printf(qnamestatesuperndtimeruntimen);printf(%st%ct%dt%dt%dtnn,psorted-p_name,psorted-p_state,psorted-p_priority,psorted-p_needTime,psorted-p_runTime);pt-p_state=W;p
8、sorted-p_runTime+;psorted-p_priority-;printf(*當前就緒狀態(tài)的隊列為:nn);/pt指向已經(jīng)排序的隊列pt=psorted-next;while(pt!=NULL)printf(qnamestatesuperndtimeruntimen);printf(%st%ct%dt%dt%dtnn,pt-p_name,pt-p_state,pt-p_priority,pt-p_needTime,pt-p_runTime);pt=pt-next;/pt指向已經(jīng)排序的鏈表,判斷鏈表是否有已用時間啊等于需要時間的pt=psorted;structPCB*ap;ap=
9、NULL;ap指向pt的前一個節(jié)點while(pt!=NULL)if(pt-p_needTime=pt-p_runTime)if(ap=NULL)pt=psorted-next;psorted=pt;elseap-next=pt-next;ap=pt;pt=pt-next;if(psorted-next=NULL)break;getchar();structPCB*SortList(PCB*HL)structPCB*SL;SL=(structPCB*)malloc(sizeof(structPCB);SL=NULL;structPCB*r=HL;while(r!=NULL)structPCB*
10、t=r-next;structPCB*cp=SL;structPCB*ap=NULL;while(cp!=NULL)if(r-p_prioritycp-p_priority)break;elseap=cp;cp=cp-next;if(ap=NULL)r-next=SL;SL=r;elser-next=cp;ap-next=r;r=t;returnSL;/輪轉(zhuǎn)算法voidRoundRobin()structPCB*processes,*pt;/pt作為臨時節(jié)點來創(chuàng)建鏈表processes=pt=(structPCB*)malloc(sizeof(structPCB);for(inti=0;i!=
11、5;+i)structPCB*p=(structPCB*)malloc(sizeof(structPCB);printf(進程號No.%d:n,i);printf(輸入進程名:);scanf(%s,p-p_name);printf(輸入進程運行時間:);scanf(%d,&p-p_needTime);p-p_runTime=0;p-p_state=W;p-next=NULL;pt-next=p;pt=p;printf(nn);getchar();/接受回車/processes作為頭結(jié)點來存儲鏈表processes=processes-next;intcases=0;while(1)+cases
12、;pt=processes;printf(Theexecutenumber:%dnn,cases);printf(*當前正在運行的進程是:sn,pt-p_name);pt-p_state=R;printf(qnamestatesuperndtimeruntimen);printf(%st%ct%dt%dt%dtnn,pt-p_name,pt-p_state,pt-p_priority,pt-p_needTime,pt-p_runTime);pt-p_state=W;pt-p_runTime+;pt-p_priority-;printf(*當前就緒狀態(tài)的隊列為:nn);pt=pt-next;wh
13、ile(pt!=NULL)printf(qnamestatesuperndtimeruntimen);printf(%st%ct%dt%dt%dtnn,pt-p_name,pt-p_state,pt-p_priority,pt-p_needTime,pt-p_runTime);pt=pt-next;/檢測是否運行時間等于需要時間,是的話從隊列里面刪除,不是的話加到隊列最尾部pt=processes;if(pt-p_needTime=pt-p_runTime)pt-p_state=C;pt=processes-next;processes=pt;elseif(pt-next!=NULL)/尋找最
14、后一個節(jié)點while(pt-next!=NULL)pt=pt-next;structPCB*ptem;/臨時節(jié)點用來幫助把頭結(jié)點插到尾部ptem=processes-next;pt-next=processes;processes-next=NULL;processes=ptem;pt=processes;if(pt=NULL)break;getchar();四、實驗結(jié)果輸入進程名字,進程優(yōu)先數(shù)和進程時間:5:可.1a數(shù)時:仃.0名曜耳進進進賞入入3:間h熱州:仃.1名饑邁號進進進費入入8:可.1C數(shù)時:fe行.2名他邁1號進進進費入入ai:.出數(shù)時:姐行.3名他邁號進進進黛入入ai1:可.1
15、E數(shù)時:姐行.4名他邁號進進進費入入c*:個人C+sDebugs.eze圖3Theexecutenumbei:1訂4十4V-乙-M=Lnscndtime0runtime耳MX耳qnameC3刖止仕旦仃曲進性疋:stateRsuper81耳mt耳當前就緒狀態(tài)的隊列為:qnamestatesuperndtimeruntimedU633qnamestatesupeindtimeruntimeau530qnamestatesupeindtin巳runtinebV320qnamestatesuperndtimepuntimeeU140圖4圖 s0e:汕*F:AC+sDe=bugs.exeTheexecL
16、itenLimber:2i當前就緒伏態(tài)的隊列為superndtine0runtineqnamesuperndtivne0runtineqnameesuper14nH七iiTiE0runtineTheexecutenLimbep:31當前就緒狀態(tài)的隊列為qn-amesuperndtine0runtimesuper14ndtine0runtineqn-ameqname卜*當前正在運行的進程是=donamestatesuperndtinedR630puntine嚴*當前正在運行的進程是=donamestatesuperncItivnEdR531puntineqnamesuperndtinepunti
17、neTheexecutenLimber:41._L1.亠1I.11LI當前止往運行旳迸程是:aqnamestatesuperndtimeruntimeaR530:KXNH當前就緒狀態(tài)的隊列為:qnamestatesupeindtin)eruntinedR432qnamestatesupeindtin)eruntinebU320qnanestatesuperndtimepuntineeU140圖 qnameqnameqnameqnameqnameqname1qnaneeTheexecutenuinbei:5iuntimeIuntimeruntimesuperiuntimestatesuperTh
18、eexecutenumber=6iuntimeiuntimesuperiuntimestateruntimesuperstateRndtime0ndtime0ndtime&ndtime0ndtime2ndtime2i當前就緒狀態(tài)的隊列為:statesupep4K*當前就緒狀態(tài)的隊列為:c*F:4wC+sDebugs.exeH*當前正在運行的進程是:玄ndtime1h*當前正在運彳亍的進程是:dndtime圖7Theexecutenumber:7H*當前正在運行的進程是:已qnameastnteR3super3rMtim亡2runtime當前就緒狀態(tài)的隊列九qnamestatesuperndtimepuntimetoW320qnamestatesuperndtimeruntimeEu140theexecutenumber:8卜*當刖正在運行的進程是bnnamestatesupepndtimeruntimehR3204當前就緒狀態(tài)的隊列為:qnamestatesupei*imeruntimeM140pTheexe
溫馨提示
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 上海視覺藝術(shù)學院《電子商務(wù)理論與實踐》2023-2024學年第一學期期末試卷
- 上海師范大學天華學院《數(shù)字電子技術(shù)C》2023-2024學年第一學期期末試卷
- 鄉(xiāng)村改造項目報告范文
- 《DNA突變技術(shù)》課件
- 課題申報書:高中階段職普協(xié)調(diào)發(fā)展的社會支持體系研究
- 課題申報書:高校思政課數(shù)字化轉(zhuǎn)型的動力機制、障礙因素與行動路徑研究
- 課題申報書:兒童社會善念的發(fā)展及其代際影響機制研究
- 課題申報書:俄羅斯舞蹈教育歷史研究
- 教育機構(gòu)培訓選培員競聘
- 統(tǒng)編版語文二年級上冊小鯉魚跳龍門 導讀課公開課一等獎創(chuàng)新教學設(shè)計
- 2024年統(tǒng)編版新教材語文小學一年級上冊全冊單元測試題及答案(共8單元)
- 企業(yè)年會的活動策劃方案
- 可降解包裝材料采購合作合同
- 醫(yī)院老人去世后遺體處理及管理流程
- 電大成本會計機考判斷題專項試題及答案
- 零星維修工程施工方案
- 2025新高考志愿填報規(guī)則
- 記錄我的一天(教案)-2024-2025學年一年級上冊數(shù)學北師大版
- 部編 2024版歷史七年級上冊期末復習(全冊)教案
- 工程管理畢業(yè)論文范文(三篇)
- 新能源發(fā)電技術(shù) 電子課件 2.5 可控核聚變及其未來利用方式
評論
0/150
提交評論