




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
河南工業(yè)大學實驗報告課程一計算機操作系統(tǒng)實驗名稱高(動態(tài))優(yōu)先權優(yōu)先的進程調度算法模擬系別 信息科學與工程學院計算機科學系 專業(yè)班級 實驗日期2012-10-26姓名 學號 教師審批簽字實驗目的通過動態(tài)優(yōu)先權算法的模擬加深對進程概念和進程調度過程的理解。實驗環(huán)境裝有操作系統(tǒng)WindowsXP和開發(fā)工具VC++6.0,內存在256M以上的微機;或者:裝有Linux(Fedora7)操作系統(tǒng)和gcc編譯器,內存在256M以上的微機。實驗內容用C語言來實現對N個進程采用動態(tài)優(yōu)先權優(yōu)先算法的進程調度。每個用來標識進程的進程控制塊PCB用結構來描述,包括以下字段:進程標識數ID;進程優(yōu)先數PRIORITY,并規(guī)定優(yōu)先數越大的進程,其優(yōu)先權越高;進程已占用的CPU時間CPUTIME;進程還需占用的CPU時間NEEDTIME。當進程運行完畢時,NEEDTIME變?yōu)?;進程的阻塞時間STARTBLOCK,表示當進程再運行STARTBLOCK個時間片后,進程將進入阻塞狀態(tài);進程被阻塞的時間BLOCKTIME,表示已阻塞的進程再等待BLOCKTIME個時間片后,進程將轉換成就緒狀態(tài);進程狀態(tài)STATE;(READY,RUNNING,BLOCK,FINISH)隊列指針NEXT,用來將PCB排成隊列。優(yōu)先數改變的原則:進程在就緒隊列中呆一個時間片,優(yōu)先數增加1;進程每運行一個時間片,優(yōu)先數減3。假設在調度前,系統(tǒng)中有5個進程,它們的初始狀態(tài)如下:ID01234PRIORITY93830290CPUTIME00000NEEDTIME33634STARTBLOCK2-1-1-1-1BLOCKTIME30000STATE READY READY READY READY READY為了清楚地觀察進程的調度過程,程序應將每個時間片內的進程的情況顯示出來參照的具體格式如下:RUNNINGPROCESS:$id0READYQUEUE:$id1->$id2BLOCKQUEUE:$id3->$id4FINISHQUEUE:$id0->$id1->$id2->$id3->$id4IDPRIORITYCPUTIMENEEDTIMESTATESTARTBLOCKBLOCKTIME0XXXXXXXXXXXX1XXXXXXXXXXXX2XXXXXXXXXXXX3XXXXXXXXXXXX4XXXXXXXXXXXX實驗要求將源程序(priority.c)和程序運行結果寫入實驗報告。將該算法執(zhí)行過程與高響應比優(yōu)先調度算法的執(zhí)行過程進行比較實驗過程及結果(1).代碼:#include<stdio.h>#include<string.h>#include<stdlib.h>char*State[]={"READY","RUNNING","BLOCK","FINISH"};typedefstructPCB{intid;intpriority;intcputime;intneedtime;intstartblock;intblocktime;char*state;structPCB*next;structPCB*nt;}PCB;PCB*Ready,*Block,*Finish,*Runing,*ALL;PCB*findHighest();voidinsert(PCB*node,PCB*insert,inti);voidModifyPriority();voidModifyBlock();voidBlockToReady();voidPrint();voidFreeAllPCB();voidinit(){PCB*pro=(PCB*)malloc(sizeof(PCB));Ready->next=ALL=pro;pro->id=0;pro->priority=9;pro->cputime=0;pro->needtime=3;pro->startblock=2;pro->blocktime=3;pro=pro->next=pro->nt=(PCB*)malloc(sizeof(PCB));pro->id=1;pro->priority=38;pro->cputime=0;pro->needtime=3;pro->startblock=-1;pro->blocktime=0;pro=pro->next=pro->nt=(PCB*)malloc(sizeof(PCB));pro->id=2;pro->priority=30;pro->cputime=0;pro->needtime=6;pro->startblock=-1;pro->blocktime=0;pro=pro->next=pro->nt=(PCB*)malloc(sizeof(PCB));pro->id=3;pro->priority=29;pro->cputime=0;pro->needtime=3;pro->startblock=-1;pro->blocktime=0;pro=pro->next=pro->nt=(PCB*)malloc(sizeof(PCB));pro->id=4;pro->priority=0;pro->cputime=0;pro->needtime=4;pro->startblock=-1;pro->blocktime=0;pro->next=pro->nt=NULL;}PCB*findHighest(){PCB*pro,*highest;PCB*propre=Ready;PCB*highpre=Ready;highest=pro=Ready->next;while(pro!=NULL){if(pro->priority>highest->priority){highest=pro;highpre=propre;}propre=propre->next;pro=pro->next;}highpre->next=highest->next;highest->next=NULL;returnhighest;}voidinsert(PCB*node,PCB*insert,inti){node->state=State[i];node->next=insert->next;insert->next=node;}voidModifyPriority(){PCB*p;p=Ready->next;while(p!=NULL){p->priority++;p=p->next;voidModifyBlock(){PCB*p;p=Block->next;while(p!=NULL){p->blocktime--;p=p->next;}}voidBlockToReady(){PCB*p,*pre,*node;pre=Block;p=pre->next;while(p!=NULL){if(p->blocktime==0){p->startblock--;node=p;p=pre->next=node->next;node->next=NULL;insert(node,Ready,0);}else{pre=pre->next;p=p->next;}}}voidPrint(){PCB*pro,*All;if(Runing!=NULL)printf("RUNNINGPROCESS:$id%d\n",Runing->id);printf("READYQUEUE:");pro=Ready->next;while(pro!=NULL){printf("->$id%d",pro->id);pro=pro->next;}puts("");printf("BLOCKQUEUE:");pro=Block->next;while(pro!=NULL){printf("->$id%d",pro->id);pro=pro->next;}puts("");printf("FINISHQUEUE:");pro=Finish->next;while(pro!=NULL){printf("->$id%d",pro->id);pro=pro->next;}puts("");printf("===============================================================\n");printf("IDPRIORITYCPUTIMENEEDTIMESTATESTARTBLOCKBLOCKTIME\n");All=ALL;while(All!=NULL){printf("%d%10d%10d%10d%8s%10d%11d\n",All->id,All->priority,All->cputime,All->needtime,All->state,All->startblock,All->blocktime);All=All->nt;}}voidFreeAllPCB(){free(Finish);}intmain(void){PCB*pro;Ready=(PCB*)malloc(sizeof(PCB));Block=(PCB*)malloc(sizeof(PCB));Finish=(PCB*)malloc(sizeof(PCB));Ready->next=NULL;Block->next=NULL;Finish->next=NULL;init();while(Ready->next!=NULL){pro=findHighest();Runing=pro;pro->state=State[1];pro->cputime++;pro->needtime--;if(pro->startblock>0){pro->startblock--;}pro->priority-=3;Print();ModifyBlock();ModifyPriority();BlockToReady();if(pro->needtime==0){insert(pro,Finish,3);Runing=NULL;}else{if(pro->startblock==0){insert(pro,Block,2);}else{insert(pro,Ready,0);}Runing=NULL;
Print();FreeAllPCB();return0;}程序運行結果RUNNINGPROCESS:$idl^EADVQUEUE:->$id0->$id2->$id3->$id4BLOCKQUEUE:FINISHQUEUE:IDPRIORITYCPUTIMENEEDTIMESTATESTARTBLOCKBLOCKTIME0 903READV231 3512READV-10* 3006READV-10□ 2903READV-104 004READV-10誠C:\Windows\system32\cmd£?e4卜jRunningprocess:$idi^EADVQUEUE:->$id0->$id2->$id3->$id4BLOCKQUEUE:FINISHQUEUE:IDPRIORITYCPUTIMENEEDTIMESTATESTARTBLOCKBLOCKTIME01003READV231 3221READV-10* 3106READV-10□ 3003READV-104 104READV-10誠C:\WindoW5\system32\cmd.exe
RUNNINGPROCESS:$id2READVQUEUE:BLOCKQUEUE:FINISHQUEUE:->$idB->$id3->$id4:->$idlIDPRIORITYCPUTIMENEEDTIMESTATESTARTBLOCKBLOCKTIME01203READV231 2930READV-10* 3015READV-103 3203READV-104 3a4READV-10nrawC:\WindDws\system32\cmd,exeRUNNINGPROCESS:$id2READVQUEUE:BLOCKQUEUE:FINISHQUEUE->$id0->$id4:->$id3->$idlIDPRIORITYCPUTIMENEEDTIMESTATESTARTBLOCKBLOCKTIME01803READV231 2930READV-10* 2442READV-10□2630READV-104 904READV-10■誠C:\Wind0ws\system32\cmd.exe
RUNNINGPROCESS:$id0HEADVQUEUE:->$id4BLOCKQUEUE:FINISHQUEUE::->$id2->$id3->$idlIDPRIORITYCPUTIMENEEDTIMESTATESTARTBLOCKBLOCKTIME01812READV131 2930READV-10*1860READV-103 2630READV-104 12a4READV-10rawC:\Windows\system32\cmd.exeRUNNINGPROCESS:$id4READVQUEUE:BLOCKQUEUE:FINISHQUEUE->$idB:->$id2->$id3->$idlIDPRIORITYCPUTIMENEEDTIMESTATESTARTBLOCKBLOCKTIME01521READV0312930READV-1021860READV-1032630READV-1041113READV-10■ 誠C:\Wind0W5\system32\cmd.exeRUNNINGPROCESS:$id4READVQUEUE:BLOCKQUEUE:RUNNINGPROCESS:$id4READVQUEUE:BLOCKQUEUE:->$id0FINISHQUEUE::->$id2->$id3->$idlIDPRIORITYCPUTIMENEEDTIMESTATESTARTBLOCKBLOCKTIME0 1521READV011 2930READV-10*1860READV-103 2630READV-104 531READV-10rawC:\Windows\systeni32\cmd.exerawC:\Windows\system32\cmd.exe[RUNNINGPROCESS:$id0READVQUEUE:->$id4BLOCKQUEUE:rawC:\Windows\systrawC:\Windows\system32\cmd.exeIDPRIORITYCPUTIMENEEDTIMESTATESTARTBLOCKBLOCKTIME01230READV-1012930READV-1021860READV-1032630READV-104531READV-10rrrrawC:\Windows\system32\cmd.exeRUNNINGPROCESS:$id4READVQUEUE:BLOCKQUEUE:FINISHQUEUE:->$id0->$id2->$id3->$idlIDPRI
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 【正版授權】 ISO 25062:2025 EN Systems and software engineering - Systems and software Quality Requirements and Evaluation (SQuaRE) - Common Industry Format (CIF) for reporting usability
- 2025年度跨境電商物流配送服務合作協(xié)議書4篇
- 廣東電力市場2024年半年報告
- 2025年度體育產業(yè)合伙人投資管理合同模板
- 2025年紡織片梭織機合作協(xié)議書
- 2025年度房地產項目開發(fā)貸款合同范本
- 2025年智能物流運輸車輛節(jié)能減排服務協(xié)議
- 美術教育的社會責任倡導計劃
- 生物課程教學設計工作坊計劃
- 學生美術能力測評體系建設計劃
- 全國裝配式建筑職業(yè)技能競賽考試題庫
- 2025屆天津市部分學校高三年級八校聯考英語試題含解析
- 《妊娠期病毒性肝炎臨床實踐指南》解讀
- 水產品冷凍加工原料處理與加工技術考核試卷
- 浙教版八年級下冊科學第二章 微粒的模型與符號整章思維導圖
- 全新保密協(xié)議模板公安下載(2024版)
- 初一英語英語閱讀理解專項訓練15篇
- GB/T 4008-2024錳硅合金
- DZ∕T 0447-2023 巖溶塌陷調查規(guī)范(1:50000)(正式版)
- 2024年天津市中考英語試題卷(含答案)
- 《建筑施工圖設計》課件-建筑施工圖立面圖
評論
0/150
提交評論