處理機(jī)調(diào)度算法的實(shí)現(xiàn).doc

處理機(jī)調(diào)度算法的實(shí)現(xiàn).doc

ID:50090774

大?。?01.00 KB

頁(yè)數(shù):7頁(yè)

時(shí)間:2020-03-04

處理機(jī)調(diào)度算法的實(shí)現(xiàn).doc_第1頁(yè)
處理機(jī)調(diào)度算法的實(shí)現(xiàn).doc_第2頁(yè)
處理機(jī)調(diào)度算法的實(shí)現(xiàn).doc_第3頁(yè)
處理機(jī)調(diào)度算法的實(shí)現(xiàn).doc_第4頁(yè)
處理機(jī)調(diào)度算法的實(shí)現(xiàn).doc_第5頁(yè)
資源描述:

《處理機(jī)調(diào)度算法的實(shí)現(xiàn).doc》由會(huì)員上傳分享,免費(fèi)在線(xiàn)閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫(kù)。

1、處理機(jī)調(diào)度算法的實(shí)現(xiàn)程序設(shè)計(jì)思路:自定義結(jié)構(gòu)體PCB表(進(jìn)程名name,進(jìn)程優(yōu)先數(shù)priority,進(jìn)程執(zhí)行時(shí)間time)以及進(jìn)程就緒隊(duì)列Queue_Process(data[MAXSIZE]數(shù)組存放PCB,front,rear隊(duì)首隊(duì)尾指針),通過(guò)每次對(duì)進(jìn)程就緒隊(duì)列進(jìn)行進(jìn)程優(yōu)先數(shù)從大到小排序來(lái)確定進(jìn)程執(zhí)行的選擇,并且是采用動(dòng)態(tài)優(yōu)先數(shù)調(diào)度算法(每次優(yōu)先數(shù)減1,執(zhí)行時(shí)間減1),每次輸出進(jìn)程執(zhí)行情況時(shí)只需要將隊(duì)首PCB調(diào)出執(zhí)行,其他進(jìn)程都處于動(dòng)態(tài)就緒狀態(tài),等進(jìn)程執(zhí)行結(jié)束后重新對(duì)進(jìn)程就緒隊(duì)列排序。程序中,采用結(jié)構(gòu)體、隊(duì)列等數(shù)據(jù)結(jié)構(gòu),其中對(duì)隊(duì)

2、列每次排序是采用冒泡排序算法實(shí)現(xiàn)。源代碼:#include#includeusingnamespacestd;#defineMAXSIZE10structPCB{intname;//進(jìn)程名intpriority;//進(jìn)程優(yōu)先數(shù)inttime;//進(jìn)程執(zhí)行時(shí)間};structQueue_Process{PCBdata[MAXSIZE];//PCB隊(duì)列intfront;//隊(duì)首intrear;//隊(duì)尾};voidInitQueue(Queue_Process*Q){Q->front=Q->rear=0

3、;}boolIsQueueEmpty(Queue_ProcessQ)//隊(duì)空判斷函數(shù){return(Q.front==Q.rear)?true:false;}boolIsQueueFull(Queue_ProcessQ)//隊(duì)滿(mǎn)判斷函數(shù){return(Q.front==(Q.rear+1)%MAXSIZE)?true:false;}voidEnQueue(Queue_Process*Q,PCBx)//入隊(duì)函數(shù){if(IsQueueFull(*Q))//判斷隊(duì)列是否為滿(mǎn){cout<<"隊(duì)滿(mǎn),入隊(duì)操作失??!"<

4、;}//隊(duì)列非滿(mǎn),將PCB入隊(duì),將其中信息填入Q->data[Q->rear].name=x.name;Q->data[Q->rear].priority=x.priority;Q->data[Q->rear].time=x.time;Q->rear=(Q->rear+1)%MAXSIZE;//隊(duì)列隊(duì)尾指針后移}voidDeleQueue(Queue_Process*Q){if(IsQueueEmpty(*Q))//判斷隊(duì)列是否為空{(diào)cout<<"隊(duì)空,出隊(duì)操作失?。?<front=(Q->fro

5、nt+1)%MAXSIZE;//將隊(duì)列首指針后移}voidSortPCB(PCB*pcb,intn)//PCB優(yōu)先數(shù)大小從大到小排列函數(shù){PCBtemp;boolexchange=true;//交換標(biāo)志for(inti=n-1;i>0&&exchange;i--)//冒泡排序算法排序{exchange=false;for(intj=0;j

6、.priority;temp.time=pcb[j].time;pcb[j].name=pcb[j+1].name;pcb[j].priority=pcb[j+1].priority;pcb[j].time=pcb[j+1].time;pcb[j+1].name=temp.name;pcb[j+1].priority=temp.priority;pcb[j+1].time=temp.time;exchange=true;}}}}voidInput(PCB*pcb,intn)//進(jìn)程信息輸入函數(shù){cout<<"請(qǐng)輸入每個(gè)進(jìn)程的優(yōu)先數(shù)和

7、執(zhí)行時(shí)間:"<>p>>t;pcb[i].name=i;pcb[i].priority=p;pcb[i].time=t;}}voidDisplay(Queue_Process*queue)//輸出每個(gè)時(shí)刻的進(jìn)程運(yùn)行情況函數(shù){cout<<"進(jìn)程名t"<<"優(yōu)先數(shù)t"<<"執(zhí)行時(shí)間t"<<"進(jìn)程狀態(tài)"<data[queue->front].time>1){cout<<""<

8、data[queue->front].name<<"t"<<""<data[queue->front].priority<<"tt"<<""<data[queue->front].time<<"

當(dāng)前文檔最多預(yù)覽五頁(yè),下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁(yè),下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動(dòng)畫(huà)的文件,查看預(yù)覽時(shí)可能會(huì)顯示錯(cuò)亂或異常,文件下載后無(wú)此問(wèn)題,請(qǐng)放心下載。
2. 本文檔由用戶(hù)上傳,版權(quán)歸屬用戶(hù),天天文庫(kù)負(fù)責(zé)整理代發(fā)布。如果您對(duì)本文檔版權(quán)有爭(zhēng)議請(qǐng)及時(shí)聯(lián)系客服。
3. 下載前請(qǐng)仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時(shí)可能由于網(wǎng)絡(luò)波動(dòng)等原因無(wú)法下載或下載錯(cuò)誤,付費(fèi)完成后未能成功下載的用戶(hù)請(qǐng)聯(lián)系客服處理。