【計(jì)算機(jī)操作系統(tǒng)實(shí)驗(yàn)】進(jìn)程調(diào)度算法

【計(jì)算機(jī)操作系統(tǒng)實(shí)驗(yàn)】進(jìn)程調(diào)度算法

ID:14174680

大?。?7.00 KB

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

時(shí)間:2018-07-26

【計(jì)算機(jī)操作系統(tǒng)實(shí)驗(yàn)】進(jìn)程調(diào)度算法_第1頁(yè)
【計(jì)算機(jī)操作系統(tǒng)實(shí)驗(yàn)】進(jìn)程調(diào)度算法_第2頁(yè)
【計(jì)算機(jī)操作系統(tǒng)實(shí)驗(yàn)】進(jìn)程調(diào)度算法_第3頁(yè)
【計(jì)算機(jī)操作系統(tǒng)實(shí)驗(yàn)】進(jìn)程調(diào)度算法_第4頁(yè)
【計(jì)算機(jī)操作系統(tǒng)實(shí)驗(yàn)】進(jìn)程調(diào)度算法_第5頁(yè)
資源描述:

《【計(jì)算機(jī)操作系統(tǒng)實(shí)驗(yàn)】進(jìn)程調(diào)度算法》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫(kù)。

1、【計(jì)算機(jī)操作系統(tǒng)實(shí)驗(yàn)】進(jìn)程調(diào)度算法/*****************************************************************************Copyright:2012?liuwenwuFilename:main.cDescription:用于操作系統(tǒng)進(jìn)程調(diào)度的仿真,包括先到先服務(wù)、短作業(yè)優(yōu)先、高優(yōu)先比、時(shí)間片輪轉(zhuǎn)Author:劉文武Version:0.1Date:2012年4月10日History:**********************************************

2、*******************************/#include#include//使用timer()函數(shù)#include//時(shí)間延遲#defineDELAY100//時(shí)間片#defineSJP4/**********全局變量聲明**********/unsignedshortTIME=0;//時(shí)間unsignedshortNUM=0;//進(jìn)程數(shù)量charTYPE='1';//模擬類(lèi)型//PCB結(jié)構(gòu)體定義typedefstructPCB{charname[16];c

3、harstate;//[R]Run,[F]Finish,[P]Pause,[N]Newunsignedshortpriority;//數(shù)字越大,優(yōu)先級(jí)越高,最小為1unsignedshortt_arrive;//到達(dá)時(shí)間unsignedshortt_start;//開(kāi)始時(shí)間unsignedshortt_finish;//完成時(shí)間unsignedshortt_service;//服務(wù)時(shí)間unsignedshortt_run;//運(yùn)行時(shí)間unsignedshortt_wait;//等待時(shí)間structPCB*next;}pcb;pcb*now=

4、NULL,//現(xiàn)在運(yùn)行的pcb*head=NULL;//pcb鏈頭部指針/**********函數(shù)聲明**********/voidfcfs();//先到先服務(wù)voidsjf();//短作業(yè)優(yōu)先voidgyxb();//高優(yōu)先比voidsjplz();//時(shí)間片輪轉(zhuǎn)voidinit();//初始化,完成pcb錄入pcb*sort(pcb*);//對(duì)init()錄入的pcb按到達(dá)時(shí)間排序voidtimer();//定時(shí)器,每一個(gè)延遲自我調(diào)用一次voidresult();//打印結(jié)果//先到先服務(wù)算法voidfcfs(){if(now->t_a

5、rrive>TIME){printf("[時(shí)間:%d]t無(wú)進(jìn)程運(yùn)行",TIME);return;}if(now->state=='N'){now->state='R';now->t_start=TIME;printf("[時(shí)間:%d]t進(jìn)程:%s首次運(yùn)行",TIME,now->name);}elseif(now->state=='R'){(now->t_run)++;if(now->t_run>=now->t_service){now->state='F';now->t_finish=TIME;printf("[時(shí)間:%d]t

6、進(jìn)程:%s任務(wù)完成",TIME,now->name);now=now->next;if(now!=NULL)fcfs();}elseprintf("[時(shí)間:%d]t進(jìn)程:%s正在運(yùn)行,已運(yùn)行時(shí)間:%d",TIME,now->name,now->t_run);}}//短作業(yè)優(yōu)先算法voidsjf(){pcb*p=head,*p_min=NULL;unsignedshortt_min=9999;//從現(xiàn)在時(shí)間以前并且未結(jié)束的進(jìn)程中,選出服務(wù)時(shí)間最小的進(jìn)程while(p!=NULL&&p->t_arrive<=TIME){if(p->s

7、tate=='F'){p=p->next;continue;}if((p->t_service-p->t_run)t_service;p_min=p;}p=p->next;}//如果為空,判斷全部進(jìn)程是否都已完成if(p_min==NULL){chark='Y';p=head;while(p!=NULL){if(p->state!='F')k='N';p=p->next;}if(k=='Y')now=NULL;elseprintf("[時(shí)間:%d]t無(wú)進(jìn)程運(yùn)行",TIME);return;}//如果選

8、出的進(jìn)程和之前的不同if(p_min!=now){if(now->state=='R'){now->state='P';printf("[時(shí)間:%d]t進(jìn)程:%s暫停運(yùn)行"

當(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)系客服處理。