版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、實(shí)驗(yàn)一模擬進(jìn)程狀態(tài)轉(zhuǎn)換及其PCB的變化一、實(shí)驗(yàn)?zāi)康模鹤孕芯幹颇M程序,通過(guò)形象化的狀態(tài)顯示,使學(xué)生理解進(jìn)程的概念、進(jìn)程之間的狀態(tài)轉(zhuǎn)換及其所帶來(lái)的PCB內(nèi)容、組織的變化,理解進(jìn)程與其PCB間的一一對(duì)應(yīng)關(guān)系。二、實(shí)驗(yàn)內(nèi)容及要求:(1)、設(shè)計(jì)并實(shí)現(xiàn)一個(gè)模擬進(jìn)程狀態(tài)轉(zhuǎn)換及其相應(yīng)PCB內(nèi)容、組織結(jié)構(gòu)變化的程序。(2)、獨(dú)立編寫(xiě)、調(diào)試程序。進(jìn)程的數(shù)目、進(jìn)程的狀態(tài)模型(三狀態(tài)、五狀態(tài)、七狀態(tài)或其它)以及PCB勺組織形式可自行選擇。(3)、合理設(shè)計(jì)與進(jìn)程PCBffi對(duì)應(yīng)的數(shù)據(jù)結(jié)構(gòu)。PCB的內(nèi)容要涵蓋進(jìn)程的基本信息、控制信息、資源需求及現(xiàn)場(chǎng)信息。(4)、設(shè)計(jì)出可視性較好的界面,應(yīng)能反映出進(jìn)程狀態(tài)的變化引起的對(duì)應(yīng)
2、PCBft容、組織結(jié)構(gòu)的變化。(5)、代碼書(shū)寫(xiě)要規(guī)范,要適當(dāng)?shù)丶尤胱⑨尅?6)、鼓勵(lì)在實(shí)驗(yàn)中加入新的觀點(diǎn)或想法,并加以實(shí)現(xiàn)。(7)、認(rèn)真進(jìn)行預(yù)習(xí),完成預(yù)習(xí)報(bào)告。(8)、實(shí)驗(yàn)完成后,要認(rèn)真總結(jié),完成實(shí)驗(yàn)報(bào)告。三、實(shí)現(xiàn):數(shù)據(jù)結(jié)構(gòu)structPCBcharname;intpriority;intneedtime;booloperator<(constPCB&b)constreturnpriority>b.priority;五狀態(tài)進(jìn)程模型最高優(yōu)先數(shù)優(yōu)先調(diào)度算法流程圖f四、運(yùn)行結(jié)果:l;New2;rispatch3:Tijnsout4:Event5;Eventoccur01日jd1輸
3、A.I-5實(shí)現(xiàn)相反的功?。?輸人要例建的進(jìn)程數(shù):2輸入量呈名一八字符人所帚時(shí)間(T跚3優(yōu)先級(jí)(一個(gè)般);a43輸入法程名(一個(gè)字符人所需時(shí)間(T酬人優(yōu)先皴(一個(gè)酬):b67壯丸域程送往CFU執(zhí)行本非旱%*X5%*X*旱布K*率*率尊#不匚£Utim&'*彳*5率軍*軍*尊*事林¥等*早*早*米¥桃*隼*狀態(tài)迸程名需要時(shí)間優(yōu)先級(jí)Rum二星;b5CReadzO:a431ryY>44"十#4"天"Iry-1r4-y*率*-4-|"y|n|r沖+寸中*s*tUt寸*/Wy|n|r十*寸中*"fr*Tj
4、r"1"4W*中¥4-1r叱卡卡l:Nsw2:Dispatch3:lineout4:Eventwait5:Eventoccur0:exit輸入l續(xù)現(xiàn)相應(yīng)的功能;圖1創(chuàng)建2個(gè)進(jìn)程,因?yàn)檫@時(shí)cpu空閑所以內(nèi)核調(diào)度,b優(yōu)先級(jí)高先執(zhí)行l(wèi):IVew2iMspatch3:TireoLLt4:Eventwait5:Eventocair0:esit府入LT實(shí)現(xiàn)相應(yīng)的功能3*本七時(shí)旬片月完*煒士拜專在CP時(shí)護(hù)丁*+4*+#*+"*+*5珅/+*+4<;putiEe2+#*+*+=k+*+*#+*4#*+*狀態(tài)法程名需要時(shí)間優(yōu)梭Riimine:b4ERRsdyO;a4
5、3k*+*+*¥*牛$+*牛+4k+*年#+卡什*+<*+寸*+TT*+寸卡什tv1:K«v2:I)i«piitch3:Tinout41Eventwait5:EvkiiIoccur0;ax.it隨人L-6實(shí)現(xiàn)相應(yīng)的功S3圖2超時(shí),因?yàn)檫@時(shí)cpu空閑所以內(nèi)核調(diào)度,b優(yōu)先級(jí)還是比a高所以先執(zhí)行口二Ne附SiDispatch3;Tineouti;EventwaitE;現(xiàn)日ntoccur0;exit輸入1-5實(shí)現(xiàn)相應(yīng)的功能;,科bj皮阻塞卜小玲進(jìn)程送往CFL孜行#*.打電4-電基鼻不單$4+4=+-+-*皋不4*iIDS'3+-生*44舄不單“444-4-*
6、人*$*44+回注程名需要時(shí)間優(yōu)先級(jí)RuntdriE:a32BlocliedDib45不平牛本本¥本本¥茸牛斗平才犯目才本本本K牛X*#卡*本*JfC4CK本x*#不多本¥本本小本方K4W:*邛杉?xì)wf才率本本X芥芥牛邛斗W¥1:rtew2;Disptch3:Tineaut4;Eventit5:Eventoccur0:EKit歸人1-5實(shí)現(xiàn)相應(yīng)的功能.4*a植明塞*14*東*茸華*#上桂*軍址*#汨忖_卜口t1me;白*1坤*并比*=u邛*k牛耳*北邛*狀忑違荏名需要時(shí)間優(yōu)先級(jí)HlockBdO:b4-5Flocknrll:32性加歸*3件*?|0|
7、3;*手冀其京斗*=柑0+;*中*1|0仁監(jiān)*常*坤?|0|*相|?*莖:*中才*3|;1:hlew2*Dispatch3zTirreffut4*Evpntwaitt:Evarito<curU:sxit輸入IT實(shí)現(xiàn)相應(yīng)的功哈圖32個(gè)進(jìn)程均被阻塞,其中一旦進(jìn)程被阻塞就會(huì)引發(fā)調(diào)度11:hpv2:Cispatch用可,眸out4:Ever;twait5;Event:cur0:exit即入1-5實(shí)現(xiàn)相應(yīng)下功能,*"h被喚醺*“4進(jìn)程送往CP坳行乩jt44444-+-1+雙鼻鼻鼻卓/444CpUtifTfis'5本又臬4$&4-+44*務(wù)*%*JK414臬*4狀態(tài)健旌名需
8、或時(shí)間優(yōu)先以Running:b34El。加叩:a3W*K加*$*z*泳(曰o1c*!:*工*!:止女*北北A北油*Z*d|o|c3|o|c*斗:*:*址叱*¥泳*d|o|*d|c*:*±3C*波#1;Nev2dispatchBpTimeaut4:Evertwait5rEventqqcut。:vxit際入一生現(xiàn)相應(yīng)的功能圖4喚醒1個(gè)進(jìn)程,從阻塞隊(duì)列取隊(duì)首放到就緒隊(duì)列隊(duì)尾,由于這時(shí)cpu空閑所以內(nèi)核調(diào)度五、源代碼:#include<cstdio>#include<algorithm>usingnamespacestd;intReady_len=0;int
9、Blocked_len=0;intCPU_state=0;structPCBcharname;intpriority;intneedtime;booloperator<(constPCB&b)constreturnpriority>b.priority;PCBReady100;PCBBlocked100;PCBCpu;booldispatch();boolcreat(intNUM)/創(chuàng)建一個(gè)新的進(jìn)程while(NUM-)printf("輸入進(jìn)程名(一個(gè)字符)、所需時(shí)間(一個(gè)整數(shù)卜優(yōu)先級(jí)(一個(gè)整數(shù)):n");scanf("%s%d%d”,&
10、;(ReadyReady_),&(ReadyReady_len.needtime),&(ReadyReady_len.priority);getchar();Ready_len+;if(CPU_state=0)/如果CPU空閑,則調(diào)度dispatch();booldispatch()if(CPU_state=0)if(Ready_len!=0)sort(Ready,Ready+Ready_len);C=R;Cpu.needtime=Ready0.needtime;Cpu.priority=Ready0.priority;if(R
11、eady_len!=1)/就緒隊(duì)列剔除隊(duì)首元素for(intindx=1;indx<Ready_len;indx+)R=R;Readyindx-1.needtime=Readyindx.needtime;Readyindx-1.priority=Readyindx.priority;)Ready_len-;CPU_state=1;printf("*%c進(jìn)程送往CPU執(zhí)行n",C);Cpu.needtime-;Cpu.priority-;elseprintf("*就緒隊(duì)列為空,無(wú)法調(diào)度n&q
12、uot;);returnfalse;elseprintf("*CPU忙,無(wú)法調(diào)度n");booltime_out()if(CPU_state=1)if(Cpu.needtime=0)printf("*%c時(shí)間片用完,并且執(zhí)行完畢,被釋放n",C);elseReadyReady_=C;ReadyReady_len.needtime=Cpu.needtime;ReadyReady_len.priority=Cpu.priority;Ready_len+;printf("*%c時(shí)間片用完n",Cp
13、);CPU_state=0;C=0;Cpu.needtime=0;Cpu.priority=0;if(Ready_len!=0)時(shí)間片用完,如果就緒隊(duì)列不為空,則調(diào)度dispatch();elseprintf("*沒(méi)有進(jìn)程在CPU中,無(wú)法超時(shí)n");boolevent_wait()if(CPU_state=1)BlockedBlocked_=C;BlockedBlocked_len.needtime=Cpu.needtime;BlockedBlocked_len.priority=Cpu.priority;Blocke
14、d_len+;printf("*%c被阻塞n",C);CPU_state=0;if(Ready_len!=0)/進(jìn)程被阻塞,如果就緒隊(duì)列不為空,則調(diào)度dispatch();elseprintf("*沒(méi)有進(jìn)程在CPU中,無(wú)法阻塞n");boolevent_occur()if(Blocked_len!=0)/sort(Blocked,Blocked+Blocked_len);ReadyReady_=B;ReadyReady_len.needtime=Blocked0.needtime;ReadyReady
15、_len.priority=Blocked0.priority;Ready_len+;if(Blocked_len!=1)阻塞隊(duì)列剔除隊(duì)首元素for(intindx=1;indx<Blocked_len;indx+)B=B;Blockedindx-1.needtime=Blockedindx.needtime;Blockedindx-1.priority=Blockedindx.priority;Blocked_len-;printf("%d%d",Blocked_len,Ready_len);print
16、f("*%c被喚醒n",ReadyReady_);if(CPU_state=0)/如果CPU空閑,則調(diào)度dispatch();printf("%d%d",Blocked_len,Ready_len);elseprintf("*阻塞隊(duì)列為空,無(wú)法喚醒n");intmain()intCputime=1;while(1)printf("n1:Newttt2:Dispatch'n");printf("3:Timeouttt4:Eventwaitn");printf("
17、;5:Eventoccurtt0:exitn");printf("輸入1-5實(shí)現(xiàn)相應(yīng)的功能:n");intselect;scanf("%d”,&select);getchar();switch(select)case 1:intnum;printf("輸入要?jiǎng)?chuàng)建的進(jìn)程數(shù):n");scanf("%d",&num);getchar();creat(num);break;case 2:dispatch();break;case 3:time_out();break;case 4:event_wait();
18、break;case 5:event_occur();break;case0:exit(0);break;)printf(”*Cputime:%3d*n",Cputime);printf("狀態(tài)tt進(jìn)程名tt需要時(shí)間tt優(yōu)先級(jí)n");if(CPU_state)/顯示CPU中的進(jìn)程printf("Running:t%ctt",C);printf("%dttt",Cpu.needtime);printf("%d'n",Cpu.priority);)if(Ready_len)顯示Ready隊(duì)列中的進(jìn)程for(inta=0;a<Ready_len;a+)printf("Ready%d:tt",a);printf("%ctt",R);printf("%dttt",Readya.needtim
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 截洪溝施工方案
- 2025年口腔診療器械消毒技術(shù)操作規(guī)范試題與答案
- 醫(yī)務(wù)科工作總結(jié)及工作計(jì)劃
- 慢性病防治試題及答案
- 四川硬筆法四級(jí)考試試題及答案
- 2025建筑工程技術(shù)考試試題(含答案)
- 物流師三級(jí)考試試題含答案
- 2025年海選詩(shī)詞大賽題庫(kù)及答案
- 震動(dòng)打樁機(jī)安全操作規(guī)程
- 建設(shè)工程施工合同糾紛要素式起訴狀模板專業(yè)權(quán)威靠譜
- 意識(shí)障礙的判斷及護(hù)理
- 儲(chǔ)能電站安全管理與操作規(guī)程
- 2025年宿遷市泗陽(yáng)縣保安員招聘考試題庫(kù)附答案解析
- 交通安全企業(yè)培訓(xùn)課件
- 2025年廣東省中考物理試卷及答案
- 皮革項(xiàng)目商業(yè)計(jì)劃書(shū)
- 主管護(hù)師護(hù)理學(xué)考試歷年真題試卷及答案
- 華文慕課《刑法學(xué)》總論課后作業(yè)答案
- 公路護(hù)欄波型梁施工方案
- 2025版煤礦安全規(guī)程新增變化條款考試題庫(kù)
- 基于SOLO分類理論剖析初中生數(shù)學(xué)開(kāi)放題解決水平:現(xiàn)狀差異與提升策略
評(píng)論
0/150
提交評(píng)論