版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
359.wei= 1.00, mem=479497,wei=2.41,mem=465690八359.wei= 1.00, mem=479497,wei=2.41,mem=465690八vei=2.10,mem=2821085,wei=2.19,mem=4921352,wei=3.09,mem=328359.wei= 1.00, mem=479497,wei=2.41,mem=465690八vei=2.10,mem=282856.wei= 1.96, mem=3281522,wei=3.07.mem=492359.wei= 1.00, mem=479497,wei=2.41,mem=465690八vei=2.10,mem=2821085,wei=2.19.mem=4921352,wei=3.09,mem=328實驗一進程調(diào)度程序模擬實驗?zāi)康亩嗟莱绦蛟O(shè)計中,經(jīng)常是若干個進程同時處于就緒狀態(tài),必須依照某種策略來決定那個進程優(yōu)先占有處理機。因而引起進程調(diào)度。本實驗?zāi)M在單處理機情況下的處理機調(diào)度問題,加深對進程調(diào)度的理解。程序設(shè)計1) FCFS進程按產(chǎn)生的順序運行,直到當前進程運行完成,運行下一個進程。2) 短作業(yè)優(yōu)先調(diào)度法選擇需要運行的時間最短的作業(yè)先調(diào)度。當前作業(yè)運行完成后,尋找下一個運行時間最短的作業(yè)執(zhí)行。3) 高響應(yīng)比任務(wù)調(diào)度優(yōu)先根據(jù)響應(yīng)比=(等待時間+進程需要運行時間)/進程需要運行時間算出相應(yīng)比高者放到執(zhí)行隊列進行執(zhí)行。4) 優(yōu)先權(quán)法——動態(tài)優(yōu)先權(quán)尋找優(yōu)先權(quán)最高的運行進程。完成后,找到剩下的作業(yè)優(yōu)先級最高的。結(jié)果分析FCFS進程按順序運行,直到當前進程運行完成,運行下一個進程pid=O,prio=63,admit=42,nm=359,exit=401,turn=pid=l,prio=46,adniit=110jun=206,exit=607,turn=pid=2,prio=62,adniit=245,nm=328,exit=935、tum=pid=3,p】io=43,adniit=346、nm=496,exit=1431,tuin=pid=4,prio=92,adniit=51641111=437,exit=186&tum=Theaverageturnaroundtmie:270.400000Weightedaverageturnaioundtune:2?159520SJF選擇執(zhí)行時間短的作業(yè)放入執(zhí)行隊列pid=O,prio=63,admit=42,11111=359,exit=401,turn=pid=l,prio=46,adniit=110jun=206,exit=607,turn=pid=2,prio=62,adniit=245,nm=328,exit=935、tum=pid=4,prio=92,adniit=51641111=437,exit=1372,tuin=pid=3,prio=43,adnut=346jun=496,exit=186&tum=Theaverageturnaroundtiine:304.400000Weightedaverageturnaioundtune:2?108728HRN選擇響應(yīng)比高者先進入執(zhí)行隊列,去執(zhí)行pid=O,prio=63,admit=42,11111=359,exit=401,turn=pid=l,prio=46,adniit=110jun=206,exit=607,turn=pid=2,prio=62,adniit=245,nm=328,exit=935、tum=pid=3,p】io=43,adniit=346,nui=496,exit=1431,tuin=pid=4,prio=92,adniit=51641111=437,exit=186&tum=Theaverageturnaroundtiine:270.400000
Weightedaverageturnaioundtune:2?159520HPF359°wei=484,wei=650,wei=359°wei=484,wei=650,wei=1262,wei=1522,wei=1.00,mem=4791.4&mem=2821.49.mem=3286.13,mem=4653.07,mem=492pid=0,prio=63,admit=42,mn=359,exit=401,turn=pid=2,prio=62,adnut=245,run=32&亡xit=729.turn=pid=4,prio=92,adnut=51641111=437,exit=l166,tuin=pid=l,prio=46,admit=110jun=206,exit=1372,tiiin=pid=3,p】io=43,admit=34641111=496,exit=186&tum=Theaverageturnaroundtune:304.400000Weightedaverageturnaioundtune:2.631557程用源碼J/*const.h*/#lfhdefCONST#defineCONSTTOC\o"1-5"\h\z^defineTRUE 1#defineFALSE 0^defineFREE 1^defineBUSYO/*schedulepolicy*/^defineFCFS 1^defineSJF 2^defineHRN 4^defineHPF 8^defineUNDROBIN 16/*eventtype*/#defineTASKADXDT1#defineTASKTIMEOUT2#defineTASKEXIT3/*taskstate*/^defineTASK.READY1#defineTASK_RUNNING2^defineTASK.EXIT3TOC\o"1-5"\h\z^defineMAXTASKN 1000^defineMAXRUNTIME 500^defineMAXTIMEINTERVAL 200^defineMAXMEMORY 500^defineMAXPRIORITY 100tvpedefintBoolean;#endif/*event.h*/lfhdefEVENT#defineEVENT#include”const.h”tvpedefstmctEvent{inttime;inttype;stmctEvent*prev?*next;}Eventtype;voidiniteventqueue(Eventtvpe*queue);Eventtype*createevent(iiittune,hittype);voidfieeevent(Eventtvpe*event);voidaddevent(Eventtvpe*event,Eventtype*queue);voiddeleteevent(Eventtvpe*event);Booleanisemptveventqueue(Eventtvpe*queue);mteventqueuesize(Eventtype*queue);mtprinteventqueue(Eventtvpe*queue);voidaddeventtime(Eventtvpe*event.Eventtype*queue);#endif/*task.h*/lfhdefTASK^defineTASK#include”const.h”tvpedefstmctTask{intpid;intstate;intpriority;intadniittime;intnintime;intremauuiintime;intexittime;inttunuoundtune;doubleweight;intmemoiy;stmctTask*piev,*next;}Tasktype;voidinittaskqueue(Tasktype*queue);Tasktype*createtask(iiitpid,intstate,hitpriority,mtadnuttime,mtruntime,mtmemoiy);voidaddtask(Tasktype*task,Tasktype*queue);voiddeletetask(Tasktvpe*task);Booleanisemptvtaskqueue(Tasktvpe*queue);mttaskqueuesize(Tasktvpe*queue);mtprinttaskqueue(Tasktype*queue);Tasktype*shorttask(Tasktype*queue);Tasktype*HighResponse(iiitcurrenttune.Taskty^e*queue);Tasktype*lughproi(Tasktype*queue);//Tasktype*roundiobm(mtty^pe,Tasktype*queue);#endif/*cpu.h*/#lfhdefCPU#defineCPU#include”task.h"tvpedefstmctCpu{intstate;Tasktyp亡*cunenttask;unsignedmtpolicy;intcurrenttmie;intfreetime;intbusytiine;}Cputype;voidinitcpu(Cputype*cpu.unsignedpolicy);#endif./*event.c*/#include<stdio.h>#include<stdlib.h>#include”const.h”#includeHevent.hnvoidiniteventqueue(Eventtvpe*queue){queue->prev=queue->next=queue;}Eventtype*createevent(iiittime,mttype){Eventtype*p;if((p=(Eventtype*)malloc(sizeof(Eventtype)))==NULL)reumiNULL;p->time=time;P->type=type;p->prev=p->next=p;returnp;}voidfieeevent(Eventtvpe*event){fiee(event);}voidaddevent(Eventtvpe*event,Eventtype*queue){Eventtype*tail=queue->prev;tail->next=event;event->piev=tail;queue->prev=event;event->next=queue;}voidaddeventtime(Eventtvpe*event.Eventtype*queue){Eventtype*prev,*next;for(next=queue->next;next!=queue&&event->tmie>=next->tiine;next=next->next)prev=next->prev;prev->next=event;event->piev=prev;next->prev=event;event->next=next;}voiddeleteevent(Eventtvpe*event){Eventtype*prev=event->prev,*next=event->next;prev->next=next;next->prev=prev;event->piev=event;event->next=event;}Booleanisemptveventqueue(Eventtype*queue){if(queue->next==queue&&queue->prev==queue)returnTRUE;retuinFALSE;}mteventqueuesize(Eventt\?pe*queue){intn;Eventtype*p;for(n=0,p=queue->next;p!=queue;++n,p=p->next);returnn;}mtpnnteventqueue(Eventtvpe*queue){Eventtype*p;intn;for(n=0,p=queue->next;p!=queue;p=p->next){卄n;priiitf(ntuiie=%4d.p->tmie);switch(p->type){caseTASKADMIT:prmtf(Htaskadmit\iiH);break;caseTASKTIMEOUT:prmtf(ntasktimeout\iiH);break;caseTASKEXIT:prmtf(ntaskexifui");break;default:prmtf(Hunknownevenfui1*);break;}}retuintine;}#include<stdio.h>#include”const.h"#include”cpu.h"voidinitcpu(Cputype*cpu.unsignedpolicy){cpu->state=FREE;cpu->cunenttask=NULL;cpu->policy=policy;cpu->cunenttiine=cpu->fieetime=cpu->busytiine=0;}/*sched.c*/#include<stdio.h>#iiiclude<stdlib.h>#include”const.h"#include”cpu.h"#includenevent.hn#include”task.h"Cputvpecpu;Eventtypeeventqueue,accounteventqueue;Tasktypereadytaskqueue,exittaskqueue;iiitpid=0;^defineNEXTADMITTIME(landQ%MAXTIMEINTERVAL+1)#defineNEXTRUNTIME(iand()%MAXRUNTIME+1)^defineNEXTMEMORY(randQ%MAXMEMORY+1)#defineNEXTPRIORITY(iand()%MAXPRIORITY+1)^defineNEXTPLD(pid卄)voidhaiidleevent(Eventtvpe*queue){Eventtype*p=queue->next,*q;Tasktype*task;introundtime=250j=0;//時間片deleteevent(p);cpu.currenttmie=p->time;switch(p->type){caseTASKADMIT:pnntff%%%%%%%%%\n“);task=cieatetask(NEXTPID,TASK_READY,NEXTPRIORITY,
cpu.cunenttime,NEXTRUNTIME,NEXTMEMORY);if(task=NULL)return;if(p->type!=UNDROBIN){if(cpu.state=FREE){cpu.state=BUSY;cpu.currenttask=task;task->state=TASK_RUNNING;task->exittime=cpu.cunenttmie+task->mntime;q=createevent(task->exittime,TASKEXIT);if(q=NULL)return;addeventtune(q.&eventqueue);}elseaddtask(task,&readytaskqueue);}else{if(cpu.state==FREE){cpu.state=BUSY;cpu.currenttask=task;task->state=TASK_RUNNING;while(task->inntuiie>roundtime){task->exittime=cpu.cunenttiine+roundtime;q=createevent(task->exittime,TASKEXIT);task->njntime=task->iiintmie-roundtime;q=createevent(task->exittime.TASKEXIT);if(q=NULL)return;addeventtune(q.&eventqueue);}task->exittime=cpu.cuirenttmie+task 亡;q=createevent(task->exittime,TASKEXIT);if(q=NULL)return;if(i==O){addeventtune(q,&eventqueue);}elseaddtask(task,&readvtaskqueue);}elseaddtask(task,&readvtaskqueue);}break;caseTASKTIMEOUT:break;caseTASKEXIT:pnntf(”@@@@@@@@@@@@@\n”);cpu.state=FREE:task=cpu.currenttask;cpu.cunenttask=NULL;task->state=TASK_EXIT;task->tuimoundtmie=cpu.cunenttime-task->admittime;task->weight=(double)task->tuimoundtmie/task->iuntime;addtask(task.&exittaskqueue);if(!isemptytaskqueue(&ieadytaskqueue)){switch(cpu.policy){caseFCFS:task=readytaskqueue.next;break;caseSJF:task=shoittask(&Teadytaskqi】eue);bTeak;caseHRN:task=HigliResponse(cpu.currenttiine,&wadytaskqueue);bTeak;caseHPF:task=lughproi(&readytaskqueue);break:caseUNDROBIN:task=readytaskqueue.next;break;default:break;}deletetask(task);cpu.state=BUSY;cpu.currenttask=task;task->state=TASK_RUNNING;task->exittime=cpu.cunenttmie+task->mntime;q=createevent(task->exittime,TASKEXIT);if(q=NULL)return;addeventtune(q.&eventqueue);}break;default:break;}addeventtmie(p,&accounteventqueue);}voidaccount(Eventtvpe*queue){Eventtype*p;for(p=queue->next;p!=queue;p=p->next){priiitf(n%6d,\p->tiine);switch(p->type){caseTASKADMIT:pnntfC%10s\iT,Hnewtask");break;caseTASKEXIT:pnntfC%10s\iT,“taskexit1*);break;default:pnntfC%10s\iT「UnknowTask”);break;}}}unsignedchooseQ{inti;printf(MPleaseenteryourselectionoperation:1FCFS\t2SJF\t3HRX\t4HPF\t5RR\nYouwanttochooseoperation:H);scanff%cT,&i);switch(i)casekreturnFCFS;break:case2:returnSJF;break;case3returnHRN;break;case4:returnHPF;break;default:returnUNDROBIN;bieak;}voidmain()intntask.i;intadniittime;Eventtype*pevent;printf(Minputnumberoftasks/1);while(scanf(n%dM,&ntask)=1&&ntask>0){iiiitcpu(&cpu,chooseQ);Hiiteventqueue(&亡ventqueue);Hiiteventqueue(&accoimteventqMue);uuttaskqueue(&eadytaskqueue);uuttaskqueue(&exittaskqu亡u亡);for(adnuttime=NEXTADMITTIME,i=0;i<ntask;adniittiineNEXTADMITTIME.++i){if((pevent=createevent(adnuttime,TASKADMIT))!=NULL)addevent(pevent,&eventqueue);elsebreak;while(!isemptveventqueue(&gventqueue))handleevent(&eventqueue);account(&accounteventqueue);piiiittaskqueue(&exittaskqueue);numberoftasks:");/*task.c*/#include<stdio.h>#include<stdlib.h>#include”const.h”#iiicludeHtask.hHvoidinittaskqueue(Tasktype*queue){queue->prev=queue->next=queue;}Tasktype*createtask(iiitpid,intstate,hitpriority,mtadnuttime,mtruntime,mtmemoiy){Tasktype*p;if((p=(Tasktype*)malloc(sizeof(Tasktype)))==NULL)returnNULL;p->pid=pid;p->state=state;p->pnoritv=priority;p->adnuttmie=adnuttime;p->ieinaiiu-untmie=p->iuntime=mntmie;p->exittiine=0;p->tunuoundtime=0;p->weight=0.0;p?>m“nory=memory;p->prev=p->next=p;returnp;}voidnddtask(Tasktype*task,Tasktype*queue){Tasktype*tail=queue->prev;tail->next=task;task->prev=tail;queue->prev=task;task->next=queue;}voiddele忙task(Tasktype*task){Tasktype*prev=task->prev,*next=task->next;prev->next=next;next->prev=prev;task->prev=task->next=task;
Booleanisemptvtaskqueue(Tasktype*queue){if(queue->prev==queue)returnTRUE;returnFALSE;}iiittaskqueuesize(Tasktvpe*queue){Tasktype*p;intn;for(n=0,p=queue->next;p!=queue;++n,p=p->next)returnn;}iiitprinttaskqueue(Tasktype*queue){Tasktype*p;intn;doubleave=0,aveweight=0;for(n=0,p=queue->next;p!=queue;p=p->next){++n;piiiitf(npid=%2d/\p->pid);pimtf(npno=%3d/\p->piionty);prmtf(nadniit=%4d/\p->adnuttime);prmtf(niim=%4d/\p->nintiine);prmtf<nexit=%4d/,p->exittime);priiitf(ntuni=%6d/\p->tunuound
溫馨提示
- 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)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年冀少新版選擇性必修2物理下冊階段測試試卷含答案
- 2025年度酒店布草洗滌與消毒服務(wù)合同范本3篇
- 2025便利店員工培訓(xùn)與發(fā)展合同模板3篇
- 保姆雇傭聘用合同范本
- 2025年商務(wù)公寓短期出租合作協(xié)議范本3篇
- 2024年滬科版九年級地理上冊階段測試試卷含答案
- 二零二五年度荒山承包野生動物保護與生態(tài)旅游合同3篇
- 2025年冀少新版八年級科學(xué)下冊階段測試試卷含答案
- 2025年岳麓版九年級生物下冊月考試卷
- 2025年度專業(yè)市場場地租賃與合作經(jīng)營協(xié)議3篇
- 梅花鹿養(yǎng)殖基地產(chǎn)業(yè)化建設(shè)項目可行性研究報告(含財務(wù)表)
- 一年級帶拼音閱讀(全)
- 管理研究方法論for msci.students maxqda12入門指南
- 基于“產(chǎn)教結(jié)合”的電子商務(wù)專業(yè)實習(xí)實訓(xùn)教學(xué)評價體系
- TSEESA 010-2022 零碳園區(qū)創(chuàng)建與評價技術(shù)規(guī)范
- GB/T 3003-2017耐火纖維及制品
- GB/T 19867.5-2008電阻焊焊接工藝規(guī)程
- GB/T 18920-2020城市污水再生利用城市雜用水水質(zhì)
- 2023年市場部主管年終工作總結(jié)及明年工作計劃
- GB 17267-1998液化石油氣瓶充裝站安全技術(shù)條件
- 上期開特下期必開特規(guī)律
評論
0/150
提交評論