版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領
文檔簡介
1、實驗一處理機調(diào)度一、實驗內(nèi)容選擇一個調(diào)度算法,實現(xiàn)處理機調(diào)度。二、實驗目的多道系統(tǒng)中,當就緒進程數(shù)大于處理機數(shù)時,須按照某種策略決定哪些進程優(yōu)先占用處理機。本實驗模擬實現(xiàn)處理機調(diào)度,以加深了解處理機調(diào)度的工作。三、實驗題目1 、設計一個按優(yōu)先權(quán)調(diào)度算法實現(xiàn)處理機調(diào)度的程序;2 、設計按時間片輪轉(zhuǎn)實現(xiàn)處理機調(diào)度的程序。PCB內(nèi)容要求:進程名/PID;要求運行時間(單位時間);優(yōu)先權(quán);狀態(tài):PCB指針;1、可隨機輸入若干進程,并按優(yōu)先權(quán)排序;2、從就緒隊首選進程運行:優(yōu)先權(quán)-1要求運行時間-1要求運行時間=0時,撤銷該進程3、重新排序,進行下輪調(diào)度;源代碼:#include<stdio.h&
2、gt;#include<stdlib.h>#include<string.h>#include<windows.h>typedefstructpcb(charPID50;intneedTime;/需要運行時間intpriority;/優(yōu)先權(quán)charstate20;/進程狀態(tài)structpcb*next;PCB;typedefstruct(PCB*front;PCB*rear;ProcessQueue;voidSelectAlgorithm();voidCreateQProcess(ProcessQueue&Q,char*,inttime,intpri
3、,char*);voidProcessSchedule();voidInitQueue(ProcessQueue&Q);voidvisitQueue(ProcessQueue&Q);boolRunProcess(PCE*rp,ProcessQueue&Q);boolNonPreemptivePriority(ProcessQueue&Q);/琲搶占式優(yōu)先權(quán)調(diào)度voiddelProcess(PCE*delp);boolRunProcessPreem(PCBrp,ProcessQueue&Q);/搶占式優(yōu)先執(zhí)行進程boolPreemptivePriority
4、(ProcessQueue&Q);voidRR(ProcessQueue&Q);intmain()(intiSel;inti=0;SelectAlgorithm();ProcessQueuereadyQ;就緒進程隊列PCBnewpcb;InitQueue(readyQ);printf("請選擇調(diào)度算法:");do(scanf("%d”,&iSel);while(!(iSel=1|iSel=2|iSel=3);while(i<3)(printf("請輸入要創(chuàng)建的進程:n");fflush(stdin);gets(ne
5、wpcb.PID);fflush(stdin);scanf("%d”,&newpcb.needTime);fflush(stdin);scanf("%d”,&newpcb.priority);fflush(stdin);gets(newpcb.state);fflush(stdin);CreateQProcess(reayQ,newpcb.PID,newpcb.needTime,newpcb.priority,newpcb.state);printf("創(chuàng)建了一個進程n");+i;visitQueue(reacyQ);/顯示的是各個進程的
6、優(yōu)先權(quán)switch(iSel)case 1:while(NonPreemptivePriority(readyQ);/非搶占優(yōu)先權(quán)調(diào)度break;case 2:PreemptivePriority(readyQ);/搶占式優(yōu)先權(quán)調(diào)度break;case 3:RR(readyQ);break;return0;voidSelectAlgorithm()printf("1.非搶占式優(yōu)先權(quán)調(diào)度n");printf("2.搶占式優(yōu)先權(quán)調(diào)度n");printf("3.時間片輪轉(zhuǎn)調(diào)度n");voidInitQueue(ProcessQueue&am
7、p;Q)/胞始化進程隊列Q.front=Q.rear=(PCB*)malloc(sizeof(PCB);if(!Q.front)exit(-1);Q.front->next=NULL;voidCreateQProcess(ProcessQueue&Q,char*pid,inttime,intpri,char*st)/指定進程入就緒隊列,將優(yōu)先權(quán)高的插在隊列前面PCB*p=(PCB*)malloc(sizeof(PCB);if(!p)exit(-1);strcpy(p->PID,pid);p->needTime=time;p->priority=pri;strcp
8、y(p->state,st);p->next=NULL;PCB*q=Q.front->next,*01d=Q.front;if(!q)/如果原隊列為空Q.rear->next=p;Q.rear=p;/q=NULLelse或口果原隊列不為空for(;q!=NULL;)if(p->priority>q->priority)old->next=p;p->next=q;return;q=q->next;old=old->next;if(q=NULL)Q.rear->next=p;Q.rear=q;/q=NULLvoidProces
9、sSchedule()voidvisitQueue(ProcessQueue&Q)/傷問進程隊列PCB*p=(PCB*)malloc(sizeof(PCB);if(!p)exit(-1);p=Q.front->next;while(p!=NULL)printf("%d,”,p->priority);p=p->next;printf("n");inti=0;boolPreemptivePriority(ProcessQueue&Q)PCB*rprocess;if(!Q.front->next)printf("就緒隊列
10、中沒有進程可以調(diào)度!n");returnfalse;elserprocess=Q.front->next;/微擇優(yōu)先權(quán)最高的進程Q.front->next=Q.front->next->next;/將進程移除就緒隊列while(rprocess!=NULL)/搶占式優(yōu)先調(diào)度RunProcessPreem(rprocess,Q);if(rprocess->needTime=0)delProcess(rprocess);if(rprocess=Q.front->next)=NULL)printf("就緒隊列中沒有進程可以調(diào)度!n")
11、;returnfalse;elseQ.front->next=Q.front->next->next;continue;if(Q.front->next!=NULL)if(rprocess->priority<Q.front->next->priority)/判斷運行了1個時間后還是否具有最高優(yōu)先權(quán)/*rprocess->next=Q.front->next->next;/正在運行中的進程因為優(yōu)先權(quán)降低,重新進入就緒隊列temp=Q.front->next;Q.front->next=rprocess;rproces
12、s=temp;rproces嘛存運彳進程*/CreateQProcess(Q,rprocess->PID,rprocess->neT(me,rprocess->priority,rprocess->state);/正在運行中的進程因為優(yōu)先權(quán)降低,重新進入就緒隊列rprocess=Q.front->next;Q.front->next=Q.front->next->next;returntrue;boolNonPreemptivePriority(ProcessQueue&Q)/HF搶占式優(yōu)先權(quán)調(diào)度PCB*rprocess;/存放要調(diào)度運行
13、的進程if(!Q.front->next)printf("就緒隊列中沒有進程可以調(diào)度!n");returnfalse;elserprocess=Q.front->next;Q.front->next=Q.front->next->next;/已經(jīng)調(diào)度,從就緒隊列中刪除進程if(RunProcess(rprocess,Q)delProcess(rprocess);printf("就緒隊列狀態(tài):n");visitQueue(Q);returntrue;boolRunProcess(PCBfrp,ProcessQueue&
14、Q)儆行進程while(rp->needTime)printf("進程s正在運行.n",rp->PID);printf("PID50tneedTimetprioritytstate20n");printf("%st%dtt%dtt%sn",rp->PID,rp->needTime,rp->priority,rp->state);Sleep(1000);-rp->needTime;returntrue;)boolRunProcessPreem(PCBrp,ProcessQueue&Q)/
15、胎占式優(yōu)先,RR執(zhí)行進程(printf("進程%s正在運行.n",rp->PID);printf("PID50tneedTimetprioritytstate20n");printf("%st%dtt%dtt%sn",rp->PID,rp->needTime,rp->priority,rp->state);Sleep(1000);-rp->needTime;-rp->priority;returntrue;)voiddelProcess(PCBdelp)/撤銷進程(free(delp);)vo
16、idRR(ProcessQueue&Q)(PCB*running=Q.front->next;PCB*old=Q.front;while(Q.front->next!=NULL)(if(running)(RunProcessPreem(rnning,Q);if(running->needTime=0)/撤銷進程(old->next=running->next;delProcess(ruining);running=old->next;continue;)old=old->next;running=running->next;)else(o
17、ld=Q.front;running=old->next;))printf("就緒隊列中沒有進程可以調(diào)度!n");)以下是使用時間片輪轉(zhuǎn)算法的一次執(zhí)行:選擇算法3:ID仁,*K:Jimior匚.'ar掾件率統(tǒng)1=».口式無灰蠲法優(yōu)先轉(zhuǎn)算進程輸入,此處輸入1,1,1,1,2,2,2,2,3,3,3,3測試。下面是時間片輪轉(zhuǎn)法的調(diào)度結(jié)果:arC江sA操件浜繞1力土1.nJ-J口12£7敘建F一個進程進程正在運行,PID(50need!incprioritystatoESBl3333進程2止仕運行.PJDL50needTineppioi'itVstateL202222快程UE在運行P1DL5QJneed!ineprici'itiistateL201111進程3正在運行.PDIDOnif?edT:i
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 《材料失效分析》教學大綱
- 玉溪師范學院《社會政策》2023-2024學年第一學期期末試卷
- 玉溪師范學院《美國社會與文化》2022-2023學年第一學期期末試卷
- 函數(shù)定義域求法教案
- 人力培訓 -績效面談溝通技巧及改進方案
- 2019粵教版 高中美術(shù) 選擇性必修6 現(xiàn)代媒體藝術(shù)《第三單元 中期的設定與拍攝》大單元整體教學設計2020課標
- 2024屆河北省衡水中學高三下學期三校五測數(shù)學試題試卷
- 2024屆貴州省都勻一中高考原創(chuàng)信息試卷數(shù)學試題(三)
- 財務咨詢商業(yè)計劃書合同
- 被褥購買協(xié)議書范本
- 常用的氮肥硫酸銨課件
- 鳳凰大橋坍塌事故分析課件
- 2022版義務教育(科學)課程標準(含2022年新增和修訂部分)
- 土石方報告模板
- JC01基礎心理學單科作業(yè)題匯總(含解析)
- 三級整形外科醫(yī)院標準
- 養(yǎng)老院院內(nèi)感染防控員課件
- 財政與金融基礎知識全套教學課件(中職)
- 2022小學新課程標準《道德與法治》
- 施工進度計劃及確保施工進度的措施
- 隧道工程施工風險源辨識與防控措施
評論
0/150
提交評論