![新版操作系統(tǒng)專業(yè)課程設(shè)計(jì)_第1頁(yè)](http://file4.renrendoc.com/view2/M01/2B/03/wKhkFmZ0VqKAYXizAACiylHZPrE175.jpg)
![新版操作系統(tǒng)專業(yè)課程設(shè)計(jì)_第2頁(yè)](http://file4.renrendoc.com/view2/M01/2B/03/wKhkFmZ0VqKAYXizAACiylHZPrE1752.jpg)
![新版操作系統(tǒng)專業(yè)課程設(shè)計(jì)_第3頁(yè)](http://file4.renrendoc.com/view2/M01/2B/03/wKhkFmZ0VqKAYXizAACiylHZPrE1753.jpg)
![新版操作系統(tǒng)專業(yè)課程設(shè)計(jì)_第4頁(yè)](http://file4.renrendoc.com/view2/M01/2B/03/wKhkFmZ0VqKAYXizAACiylHZPrE1754.jpg)
![新版操作系統(tǒng)專業(yè)課程設(shè)計(jì)_第5頁(yè)](http://file4.renrendoc.com/view2/M01/2B/03/wKhkFmZ0VqKAYXizAACiylHZPrE1755.jpg)
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
課程設(shè)計(jì)闡明書(操作系統(tǒng))題目:進(jìn)程調(diào)度院系:計(jì)算機(jī)科學(xué)與工程學(xué)院專業(yè)班級(jí):信息安全13-2學(xué)號(hào):3029xx學(xué)生姓名:xx指引教師:xx12月15日
安徽理工大學(xué)課程設(shè)計(jì)(論文)任務(wù)書計(jì)算機(jī)科學(xué)與工程學(xué)院學(xué)號(hào)3029xx學(xué)生姓名Xx專業(yè)(班級(jí))信息安全13-2設(shè)計(jì)題目進(jìn)程調(diào)度模仿程序設(shè)計(jì)技術(shù)參數(shù)(1)系統(tǒng)作業(yè)或進(jìn)程數(shù)目;(2)進(jìn)程等待時(shí)間(3)進(jìn)程運(yùn)營(yíng)時(shí)間設(shè)計(jì)要求1.依照設(shè)計(jì)任務(wù),用自己熟悉計(jì)算機(jī)語(yǔ)言編制程序,在機(jī)器上調(diào)試運(yùn)營(yíng),并通過(guò)上機(jī)考核。2.模仿在單解決器狀況下進(jìn)程調(diào)度,目是加深對(duì)進(jìn)程調(diào)度工作理解。3.設(shè)計(jì)一種準(zhǔn)時(shí)間片輪轉(zhuǎn)調(diào)度算法實(shí)現(xiàn)解決器調(diào)度程序。4.在完畢電子設(shè)計(jì)后,規(guī)定寫一份詳細(xì)設(shè)計(jì)報(bào)告。工作量1.編寫代碼不少于200行;2.程設(shè)計(jì)闡明書不少于15頁(yè)。工作計(jì)劃.11.23-11.25依照課程設(shè)計(jì)規(guī)定,查找有關(guān)資料,完畢需求分析;.11.26-11.27進(jìn)行系統(tǒng)概要設(shè)計(jì);.11.28-12.5進(jìn)行系統(tǒng)詳細(xì)設(shè)計(jì)和源代碼書寫;.12.6-12.10對(duì)系統(tǒng)進(jìn)行調(diào)試分析,寫出課程設(shè)計(jì)報(bào)告。參考資料[1]龔沛曾等編.C/C++程序設(shè)計(jì)教程.北京:高等教誨出版社,.[2][美]PrataS.著.CPrimerPlus(第5版中文版).北京:人民郵電出版社,.[3]湯子瀛等編著.計(jì)算機(jī)操作系統(tǒng).西安:西安電子科技大學(xué)出版社,[4]胡志剛,譚長(zhǎng)庚等,《計(jì)算機(jī)操作系統(tǒng)》,中南大學(xué)出版社[5]羅宇,鄒鵬等,《操作系統(tǒng)》(第二版),電子工業(yè)出版社4月[6]龐麗萍,《操作系統(tǒng)原理》,華中理工大學(xué)出版社,指引教師簽字教研室主任簽字安徽理工大學(xué)課程設(shè)計(jì)(論文)成績(jī)?cè)u(píng)估表學(xué)生姓名:xx學(xué)號(hào):3029xx專業(yè)班級(jí):信息安全13-2程序設(shè)計(jì)訓(xùn)練題目:進(jìn)程調(diào)度模仿程序評(píng)價(jià)單元評(píng)價(jià)要素評(píng)價(jià)內(nèi)涵滿分評(píng)分知識(shí)水平30%文獻(xiàn)查閱與知識(shí)運(yùn)用能力能獨(dú)立查閱文獻(xiàn)資料,并能合理地運(yùn)用到程序設(shè)計(jì)訓(xùn)練之中;能將所學(xué)課程(專業(yè))知識(shí)精確地運(yùn)用到程序設(shè)計(jì)之中,并歸納總結(jié)本程序設(shè)計(jì)訓(xùn)練所涉及關(guān)于課程知識(shí)20程序設(shè)計(jì)方案設(shè)計(jì)能力程序設(shè)計(jì)整體思路清晰,程序設(shè)計(jì)方案合理可行10闡明書質(zhì)量50%難度級(jí)別與程序設(shè)計(jì)訓(xùn)練任務(wù)書題目難度級(jí)別相稱10寫作水平整體思路清晰,構(gòu)造合理,層次分明,語(yǔ)言表達(dá)流暢,綜合概括能力強(qiáng)30寫作規(guī)范符合程序設(shè)計(jì)訓(xùn)練報(bào)告基本規(guī)定,用語(yǔ)、格式、圖表、數(shù)據(jù)及各種資料引用規(guī)范(符合原則)10學(xué)習(xí)體現(xiàn)20%工作量程序設(shè)計(jì)訓(xùn)練工作量飽滿,能準(zhǔn)時(shí)完畢程序設(shè)計(jì)訓(xùn)練規(guī)定工作量10學(xué)習(xí)態(tài)度學(xué)習(xí)態(tài)度認(rèn)真,遵守程序設(shè)計(jì)階段紀(jì)律,作風(fēng)嚴(yán)謹(jǐn),準(zhǔn)時(shí)完畢程序設(shè)計(jì)規(guī)定任務(wù),準(zhǔn)時(shí)上交程序設(shè)計(jì)訓(xùn)練關(guān)于資料10成績(jī):指引教師:年月日摘要當(dāng)代計(jì)算機(jī)系統(tǒng)中,進(jìn)程是資源分派和獨(dú)立運(yùn)營(yíng)基本單位,是操作系統(tǒng)核心概念。因而,進(jìn)程就成為理解操作系統(tǒng)如何實(shí)現(xiàn)系統(tǒng)管理最基本,也是最重要概念。進(jìn)程調(diào)度是進(jìn)程管理過(guò)程重要構(gòu)成某些,是必然要發(fā)生事件。在當(dāng)代操作系統(tǒng)中,進(jìn)程并發(fā)機(jī)制在絕大多數(shù)時(shí)候,會(huì)產(chǎn)生不斷變化進(jìn)程就緒隊(duì)列和阻塞隊(duì)列。處在執(zhí)行態(tài)進(jìn)程無(wú)論是正?;蚍钦=K結(jié)、或轉(zhuǎn)換為阻塞狀態(tài),都會(huì)引起從就緒隊(duì)列中,由進(jìn)程調(diào)度選取一種進(jìn)程進(jìn)占CPU。進(jìn)程調(diào)度核心是進(jìn)程調(diào)度算法.在本課程設(shè)計(jì)中,用良好清晰界面向顧客展示了進(jìn)程調(diào)度中時(shí)間片輪轉(zhuǎn)調(diào)度算法。在最后實(shí)現(xiàn)成果中,顧客可指定需要模仿進(jìn)程數(shù),CPU時(shí)間片和進(jìn)程最大執(zhí)行時(shí)間,并且選取需要演示算法,界面將會(huì)動(dòng)態(tài)顯示進(jìn)程調(diào)度過(guò)程及各個(gè)隊(duì)列變化。通過(guò)此進(jìn)程調(diào)度模仿系統(tǒng),顧客可以對(duì)時(shí)間片輪轉(zhuǎn)調(diào)度算法有進(jìn)一步以及直觀理解。核心詞:進(jìn)程,調(diào)度,PCB,時(shí)間片輪轉(zhuǎn)
目錄1.設(shè)計(jì)目 62.設(shè)計(jì)思路 63.設(shè)計(jì)過(guò)程 83.1流程圖 83.2算法 83.3數(shù)據(jù)構(gòu)造 103.4源代碼 104.實(shí)驗(yàn)成果及分析 204.1使用闡明 204.2程序演示 205.實(shí)驗(yàn)總結(jié) 246.參照文獻(xiàn) 241.設(shè)計(jì)目 依照設(shè)計(jì)任務(wù),用自己熟悉計(jì)算機(jī)語(yǔ)言編制程序,在機(jī)器上調(diào)試運(yùn)營(yíng),并通過(guò)上機(jī)考核。編寫一程序,可以創(chuàng)立若干個(gè)虛擬進(jìn)程,并對(duì)若干個(gè)虛擬進(jìn)程進(jìn)行調(diào)度,調(diào)度方略為時(shí)間片輪轉(zhuǎn)。虛擬程序描述:虛擬指令格式:操作命令操作時(shí)間其中,操作命令有如下幾種: C:表達(dá)在CPU上計(jì)算 I:表達(dá)輸入 O:表達(dá)輸出 W:表達(dá)等待 H:表達(dá)進(jìn)程結(jié)束操作時(shí)間代表該操作命令要執(zhí)行多長(zhǎng)時(shí)間假設(shè)I/O設(shè)備數(shù)量沒(méi)有限制I、O、W三條指令事實(shí)上是不占用CPU,執(zhí)行這三條指令就應(yīng)將進(jìn)程放入相應(yīng)等待隊(duì)列(Input等待隊(duì)列、Output等待隊(duì)列、Wait等待隊(duì)列)例有一虛擬程序p1.prc描述如下:c30o12c9i14h0 該虛擬程序表達(dá)含義是:先在CPU上計(jì)算30秒,再在輸出設(shè)備上輸出12秒,計(jì)算9秒,在輸入設(shè)備上輸入14秒,程序結(jié)束。2.設(shè)計(jì)思路 進(jìn)程調(diào)度是操作系統(tǒng)中重要功能,用來(lái)創(chuàng)立進(jìn)程、撤除進(jìn)程、實(shí)現(xiàn)進(jìn)程狀態(tài)轉(zhuǎn)換,它提供了在可運(yùn)營(yíng)進(jìn)程之間復(fù)用CPU辦法。在進(jìn)程管理中,進(jìn)程調(diào)度是核心,由于在采用多道程序設(shè)計(jì)系統(tǒng)中,往往有若干個(gè)進(jìn)程同步處在就緒狀態(tài),當(dāng)就緒進(jìn)程個(gè)數(shù)不不大于解決器數(shù)目時(shí),就必要依照某種方略決定哪些進(jìn)程優(yōu)先占用解決器。本程序用時(shí)間片輪轉(zhuǎn)調(diào)度算法對(duì)各種進(jìn)程進(jìn)行調(diào)度,每個(gè)進(jìn)程有三個(gè)狀態(tài)就緒、運(yùn)營(yíng)和完畢,初始狀態(tài)為就緒狀態(tài)。 時(shí)間片輪轉(zhuǎn)調(diào)度算法中,系統(tǒng)將所有就緒進(jìn)程按先來(lái)先服務(wù)算法原則,排成一種隊(duì)列,每次調(diào)度時(shí),系統(tǒng)把解決機(jī)分派給隊(duì)列首進(jìn)程,并讓其執(zhí)行一種時(shí)間片。當(dāng)執(zhí)行時(shí)間片用完時(shí),由一種計(jì)時(shí)器發(fā)出時(shí)鐘中斷祈求,調(diào)度程序依照這個(gè)祈求停止該進(jìn)程運(yùn)營(yíng),將它送到就緒隊(duì)列末尾,再把解決機(jī)分給就緒隊(duì)列中新隊(duì)列首進(jìn)程,同步讓它也執(zhí)行一種時(shí)間片。(1)建立一種進(jìn)程控制塊。PCB來(lái)代表。PCB涉及:進(jìn)程名、鏈接指針、到達(dá)時(shí)間、預(yù)計(jì)運(yùn)營(yíng)時(shí)間、剩余時(shí)間和進(jìn)程狀態(tài)。進(jìn)程狀態(tài)分為就緒(W)、運(yùn)營(yíng)(R)和完畢(F)。(2)為每個(gè)進(jìn)程任意擬定一種規(guī)定運(yùn)營(yíng)時(shí)間和到達(dá)時(shí)間。(3)按照進(jìn)程到達(dá)先后順序排成一種循環(huán)隊(duì)列。再設(shè)一種對(duì)首指針指向第一種到達(dá)進(jìn)程首址。(4)執(zhí)行解決機(jī)調(diào)度時(shí),開(kāi)始選取對(duì)首第一種進(jìn)程運(yùn)營(yíng)。此外再設(shè)一種當(dāng)前運(yùn)營(yíng)進(jìn)程指針,指向當(dāng)前正運(yùn)營(yíng)進(jìn)程。(5)執(zhí)行:a)預(yù)測(cè)運(yùn)營(yíng)時(shí)間減1;b)輸出當(dāng)前運(yùn)營(yíng)進(jìn)程名字。(6)進(jìn)程執(zhí)行一次后,若該進(jìn)程剩余運(yùn)營(yíng)時(shí)間為零,則將該進(jìn)程狀態(tài)置為完畢態(tài)F,并退出循環(huán)隊(duì)列;若不為空,則將其移至隊(duì)尾。繼續(xù)在運(yùn)營(yíng)隊(duì)首進(jìn)程。(7)若就緒隊(duì)列不空,則重復(fù)上述(5)和(6)環(huán)節(jié)直到所有進(jìn)程都運(yùn)營(yíng)完為止。在所設(shè)計(jì)調(diào)度程序中,規(guī)定包括顯示或打印語(yǔ)句。以便顯示或打印每次選操作系統(tǒng)課程設(shè)計(jì)中進(jìn)程名稱及運(yùn)營(yíng)一次后隊(duì)列變化狀況。3.設(shè)計(jì)過(guò)程3.1流程圖3.2算法 如果就緒隊(duì)列中有n個(gè)進(jìn)程,且時(shí)間片為q,則每個(gè)進(jìn)程會(huì)得到CPU時(shí)間,每個(gè)長(zhǎng)度不超過(guò)q時(shí)間單元。每個(gè)進(jìn)程必要等待CPU時(shí)間不會(huì)超過(guò)(n-1)q個(gè)時(shí)間單元,直到它下一種時(shí)間片為止voidRun(){ inti,flag=0,time=10,pcbnum,Index=0,exenum,num,quenum;charcmd;intj,m,n; inttotal=0; JobEnQueueInit(&total); save(); while(total!=0){ if( !EmptyQueue(Queue[1])){ outqueue(&Queue[1],&pcbnum); insertqueue(&Queue[0],pcbnum); }elsepcbnum=GetHead(Queue[0]);delay();jobpcb[pcbnum].status='e';printf("\n\t\t作業(yè)%d\n",pcbnum+1); printf("\t\t\t所處狀態(tài):%c\t執(zhí)行了%d秒\n",jobpcb[pcbnum].status,time); for(i=0;i<3;i++){if(jobpcb[i].id>=0){//所有作業(yè)除在就緒隊(duì)列獲執(zhí)行結(jié)束外等待時(shí)間都減去時(shí)間片 if(jobpcb[i].status!='r'&&jobpcb[i].status!='h')jobpcb[i].wtime=jobpcb[i].wtime-time; if(jobpcb[i].wtime<=0){//查找所有隊(duì)列所在位置 for(j=0;j<5;j++){ for(m=Queue[j].head;m<Queue[j].tail;m++){ if(Queue[j].pcbnum[m]==i){flag=1;break; } } if(flag==1)break; } if(flag==1){ //刪除該指令 for(n=m;n<Queue[j].tail;n++)Queue[j].pcbnum[n]=Queue[j].pcbnum[n+1]; Queue[j].tail--; jobpcb[i].exetoIndex++; Index=jobpcb[i].exetoIndex; JobEnQueue(i,Index,&total); } }}}if(!EmptyQueue(Queue[1])){ outqueue(&Queue[0],&pcbnum); if(jobpcb[pcbnum].wtime>0){ insertqueue(&Queue[1],pcbnum); jobpcb[pcbnum].status='r'; } }printf("\n\n\t\t尚有\(zhòng)t%d個(gè)作業(yè)沒(méi)有完畢\n",total);save(); }}3.3數(shù)據(jù)構(gòu)造voiddelay()intchange(char*m)intAllocPCB()intAllocJob()voiddisplayIndex()intCreatePcbLine()voidinitqueue(structQnode*l)voidinsertqueue(structQnode*l,intpcbnum)intEmptyQueue(structQnodel)voidoutqueue(structQnode*l,int*pcbnum)voiddisplay()voidJobEnQueueInit(int*total)voidsave()voidJobEnQueue(intpcbnum,intIndex,int*total)intGetHead(structQnodel)voidRun()voidInitFile()3.4源代碼//進(jìn)程調(diào)度模仿程序,以時(shí)間片輪轉(zhuǎn)調(diào)度算法為核心#defineNULL0#include<stdio.h>#include<conio.h>#include<string.h>#include<malloc.h>#include<time.h>FILE*GroupFile[10];//定義一種pcb構(gòu)造體typedefstructindex{charname;//指令inttime;//指令執(zhí)行時(shí)間 }index;structpcb{charfilename[10];//進(jìn)程名 intid;//作業(yè)編號(hào) intexetoIndex;//當(dāng)前正在執(zhí)行指令 charstatus;//當(dāng)前狀態(tài) intwtime;//等待時(shí)間};structpcbjobpcb[100];//pcb表typedefstructjob{indexidx[100];//指令集 intpcbnum;//pcb編號(hào)相應(yīng)}job;jobjobtab[100];//作業(yè)表charjobp[3][50];//作業(yè)//隊(duì)列構(gòu)造體structQnode{ intpcbnum[100];//pcb編號(hào)inthead,tail;};structQnodeQueue[5];//5個(gè)隊(duì)列0E1R2I3O4Wvoidinitqueue(structQnode*l);//延遲voiddelay(){ time_tbegin,end;time(&begin);do{time(&end); }while((end-begin)<=1);}//字符轉(zhuǎn)化為數(shù)值intchange(char*m){ inti,j=0;intlen=strlen(m);for(i=0;i<len;i++)j=j*10+m[i]-'0';returnj;}//申請(qǐng)pcb進(jìn)程塊intAllocPCB(){inti;for(i=0;i<3;i++)if(jobpcb[i].id==-1)break;if(i<3)returni;return-1;}//申請(qǐng)jobintAllocJob(){inti;for(i=0;i<3;i++)if(jobtab[i].pcbnum==-1)break;if(i<3)returni;return-1;}//顯示指令voiddisplayIndex(){ inti,j;for(i=0;i<3;i++){printf("Job%d\n",i+1); for(j=0;j<10;j++)printf("%d%c%d\n",j+1,jobtab[i].idx[j].name,jobtab[i].idx[j].time); }}//創(chuàng)立進(jìn)程程序intCreatePcbLine(){ charline[10]; int i,ll,jnum,pnum,ln=0,bpos,pos=0; charbuff[50];charname[20];charch; for(i=0;i<3;i++){ ln=0; jnum=AllocJob(); if(jnum==-1)return0; pnum=AllocPCB(); if(pnum==-1)return0; jobtab[jnum].pcbnum=pnum; strcpy(jobpcb[pnum].filename,""); jobpcb[pnum].status='r'; jobpcb[pnum].exetoIndex=0; jobpcb[pnum].id=jnum; jobpcb[pnum].wtime=0; intlen=strlen(jobp[i]); pos=0; while(pos<len){ while(jobp[i][pos]=='')pos++; jobtab[jnum].idx[ln].name=jobp[i][pos++];/// while(jobp[i][pos]=='')pos++; bpos=0; while(jobp[i][pos]!='') buff[bpos++]=jobp[i][pos++]; buff[bpos]='\0'; jobtab[jnum].idx[ln].time=change(buff);///// if(pos<len){pos++;ln++; } } } displayIndex();}//初始化隊(duì)列voidinitqueue(structQnode*l){l->head=0; l->tail=0;}//插進(jìn)入隊(duì)列/voidinsertqueue(structQnode*l,intpcbnum){l->pcbnum[l->tail++]=pcbnum;}//隊(duì)列與否為空intEmptyQueue(structQnodel){if(l.head==l.tail)return1;return0;}//刪除隊(duì)列voidoutqueue(structQnode*l,int*pcbnum){if(l->head>=l->tail)*pcbnum=-1; else *pcbnum=l->pcbnum[l->head++];}//顯示作業(yè)voiddisplay(){inti,j; for(i=0;i<5;i++){printf("隊(duì)列%d",i); for(j=Queue[i].head;j<Queue[i].tail;j++) printf("pcb編號(hào)%d\n\n",Queue[i].pcbnum[j]); }}//作業(yè)入隊(duì)列voidJobEnQueueInit(int*total){inti,num,Index=0; charcmd; for(i=0;i<3;i++) if(jobpcb[i].id>=0){ cmd=jobtab[jobpcb[i].id].idx[Index].name; switch(cmd){ case'c':insertqueue(&Queue[1],i);jobpcb[i].status='r';break;case'i':insertqueue(&Queue[2],i);jobpcb[i].status='i';break;case'o':insertqueue(&Queue[3],i);jobpcb[i].status='o';break;case'w':insertqueue(&Queue[4],i);jobpcb[i].status='w';break; case'h':jobpcb[i].status='h';num=jobpcb[i].id;jobtab[num].pcbnum=-1;jobpcb[i].id=-1; } if(cmd=='h'){jobpcb[i].wtime=0;total--;} jobpcb[i].wtime=jobtab[jobpcb[i].id].idx[Index].time;(*total)++; } }//保存成果voidsave(){FILE*fp;inti;fp=fopen("pcbtable.txt","a");fprintf(fp,"文獻(xiàn)名作業(yè)編號(hào)執(zhí)行到指令數(shù)所處狀態(tài)等待時(shí)間\n");for(i=0;i<3;i++)fprintf(fp,"\t%s\t%d\t%d\t%c\t%d\n",jobpcb[i].filename,jobpcb[i].id,jobpcb[i].exetoIndex, jobpcb[i].status,jobpcb[i].wtime);fclose(fp);}//作業(yè)入隊(duì)列voidJobEnQueue(intpcbnum,intIndex,int*total){intnum; charcmd; if(jobpcb[pcbnum].id>=0){ cmd=jobtab[jobpcb[pcbnum].id].idx[Index].name; switch(cmd){ case'c':insertqueue(&Queue[1],pcbnum);jobpcb[pcbnum].status='r';break;case'i':insertqueue(&Queue[2],pcbnum);jobpcb[pcbnum].status='i';break;case'o':insertqueue(&Queue[3],pcbnum);jobpcb[pcbnum].status='o';break;case'w':insertqueue(&Queue[4],pcbnum);jobpcb[pcbnum].status='w';break; case'h':jobpcb[pcbnum].status='h';num=jobpcb[pcbnum].id;jobtab[num].pcbnum=-1;jobpcb[pcbnum].id=-1; } if(cmd=='h'){ jobpcb[pcbnum].wtime=0; printf("\n\t\t作業(yè)%d完畢\n",pcbnum+1,jobpcb[pcbnum].status); (*total)--; } elsejobpcb[pcbnum].wtime=jobtab[jobpcb[pcbnum].id].idx[Index].time; printf("\n\t\t作業(yè)%d\n",pcbnum+1); printf("\t\t\t\t所處狀態(tài):%c\n",jobpcb[pcbnum].status); printf("\t\t還需要時(shí)間%d秒\n",jobpcb[pcbnum].wtime); }}//得到隊(duì)列首元素intGetHead(structQnodel){ returnl.pcbnum[l.head];}//執(zhí)行voidRun(){ inti,flag=0,time=10,pcbnum,Index=0,exenum,num,quenum;charcmd;intj,m,n; inttotal=0; JobEnQueueInit(&total); save(); while(total!=0){ if( !EmptyQueue(Queue[1])){ outqueue(&Queue[1],&pcbnum); insertqueue(&Queue[0],pcbnum); }elsepcbnum=GetHead(Queue[0]);delay();jobpcb[pcbnum].status='e';printf("\n\t\t作業(yè)%d\n",pcbnum+1); printf("\t\t\t所處狀態(tài):%c\t執(zhí)行了%d秒\n",jobpcb[pcbnum].status,time); for(i=0;i<3;i++){if(jobpcb[i].id>=0){//所有作業(yè)除在就緒隊(duì)列獲執(zhí)行結(jié)束外等待時(shí)間都減去時(shí)間片 if(jobpcb[i].status!='r'&&jobpcb[i].status!='h')jobpcb[i].wtime=jobpcb[i].wtime-time; if(jobpcb[i].wtime<=0){//查找所有隊(duì)列所在位置 for(j=0;j<5;j++){ for(m=Queue[j].head;m<Queue[j].tail;m++){ if(Queue[j].pcbnum[m]==i){flag=1;break; } } if(flag==1)break; } if(flag==1){ //刪除該指令 for(n=m;n<Queue[j].tail;n++)Queue[j].pcbnum[n]=Queue[j].pcbnum[n+1]; Queue[j].tail--; jobpcb[i].exetoIndex++; Index=jobpcb[i].exetoIndex; JobEnQueue(i,Index,&total); } }}}if(!EmptyQueue(Queue[1])){ outqueue(&Queue[0],&pcbnum); if(jobpcb[pcbnum].wtime>0){ insertqueue(&Queue[1],pcbnum); jobpcb[pcbnum].status='r'; } }printf("\n\n\t\t尚有\(zhòng)t%d個(gè)作業(yè)沒(méi)有完畢\n",total);save(); }}//初始化voidInitFile(){inti;GroupFile[0]=fopen("p1.prc","r");GroupFile[1]=fopen("p2.prc","r");GroupFile[2]=fopen("p3.prc","r");fgets(jobp[0],255,GroupFile[0]);fgets(jobp[1],255,GroupFile[1]);fgets(jobp[2],255,GroupFile[2]); for(i=0;i<100;i++){ jobpcb[i].exetoIndex=0;
溫馨提示
- 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è)備采購(gòu)合同協(xié)議書
- 2024婦女節(jié)活動(dòng)中班(6篇)
- 2025年江西省高三語(yǔ)文2月統(tǒng)一調(diào)研聯(lián)考試卷附答案解析
- 河北省高職單招2024年數(shù)學(xué)真題仿真卷
- 2025年全球貿(mào)易合同樣式
- 2025年車載高壓空壓機(jī)組項(xiàng)目提案報(bào)告模范
- 2025年鐵礦石采選項(xiàng)目立項(xiàng)申請(qǐng)報(bào)告模范
- 2025年勞動(dòng)力輸入安全保障協(xié)議
- 2025年上饒年終合同樣本
- 2025年中外著作權(quán)許可使用合同樣本
- 裝修工程延期協(xié)議
- 2025-2030全球21700圓柱形鋰離子電池行業(yè)調(diào)研及趨勢(shì)分析報(bào)告
- 2025-2025年教科版小學(xué)科學(xué)三年級(jí)下冊(cè)科學(xué)教學(xué)計(jì)劃
- 2025年云南中煙工業(yè)限責(zé)任公司招聘24人歷年高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2025云南昆明空港投資開(kāi)發(fā)集團(tuán)招聘7人歷年高頻重點(diǎn)提升(共500題)附帶答案詳解
- 《大健康解讀》課件
- 2024-2025學(xué)年成都市樹(shù)德東馬棚七年級(jí)上英語(yǔ)期末考試題(含答案)
- 2025年度交通運(yùn)輸規(guī)劃外聘專家咨詢協(xié)議3篇
- 2024年04月北京中信銀行北京分行社會(huì)招考(429)筆試歷年參考題庫(kù)附帶答案詳解
- 專項(xiàng)債券培訓(xùn)課件
- 部編(統(tǒng)編)版語(yǔ)文+四下第四單元教材解讀課件
評(píng)論
0/150
提交評(píng)論