




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、課程設(shè)計(jì)報(bào)告設(shè)計(jì)名稱:_模擬實(shí)現(xiàn)一種處理機(jī)調(diào)度算法_學(xué)生姓名:000000_專 業(yè): 計(jì)算機(jī)科學(xué)與技術(shù)_ 班 別:計(jì)科本000班學(xué) 號:0000000000指導(dǎo)老師:000000日 期: 2014年 06月18 日模擬實(shí)現(xiàn)一種處理機(jī)調(diào)度算法優(yōu)先級調(diào)度法一、實(shí)驗(yàn)?zāi)康模河酶呒壵Z言編寫和調(diào)試一個(gè)進(jìn)程調(diào)度程序,通過優(yōu)先級調(diào)度算法的模擬,加深進(jìn)程概念和進(jìn)程調(diào)度的理解。學(xué)會(huì)采用動(dòng)態(tài)優(yōu)先級調(diào)度算法模擬處理cpu的進(jìn)程。二、實(shí)驗(yàn)平臺(tái):微型計(jì)算機(jī)、Windows、C語言三、總體設(shè)計(jì): 1. 總體設(shè)計(jì)原理及方案:(1)在Windows下使用C語言編程模擬優(yōu)先級進(jìn)程調(diào)用算法。為了清楚地觀察每個(gè)進(jìn)程的調(diào)度過程,程序?qū)?/p>
2、每個(gè)時(shí)間片內(nèi)的進(jìn)程情況顯示出來。(2)進(jìn)程控制塊是進(jìn)程存在的唯一標(biāo)志,因此,在模擬算法中每一個(gè)進(jìn)程用一個(gè)進(jìn)程控制塊PCB來代表,PCB用一結(jié)構(gòu)體表示。(3)進(jìn)程在運(yùn)行過程中其狀態(tài)將在就緒、執(zhí)行、完成幾種狀態(tài)之間轉(zhuǎn)換,同時(shí)進(jìn)程可能處于不同的附列中,如就緒隊(duì)列。在優(yōu)先級調(diào)度算法中,選擇單向隊(duì)列,入隊(duì)既是將進(jìn)程控制塊插入隊(duì)尾,出隊(duì)既是按優(yōu)先級重新排列的隊(duì),刪除隊(duì)頭元素。(4)為了便于處理,程序中的某進(jìn)程運(yùn)行時(shí)間以時(shí)間為單位計(jì)算。各進(jìn)程的優(yōu)先級認(rèn)為輸入,運(yùn)行所需時(shí)間隨機(jī)產(chǎn)生。(5)優(yōu)先權(quán)調(diào)度算法采用動(dòng)態(tài)優(yōu)先權(quán),進(jìn)程每運(yùn)行一個(gè)時(shí)間片,優(yōu)先數(shù)減1;進(jìn)程在就緒隊(duì)列等待一個(gè)時(shí)間單位,優(yōu)先數(shù)加1。(6)對于遇到
3、優(yōu)先權(quán)一致的情況,采用FCFS策略解決。(7)由于模擬進(jìn)程調(diào)度,所以,對被選中的進(jìn)程并不實(shí)際啟動(dòng)運(yùn)行,而是修改進(jìn)程控制塊的相關(guān)信息來模擬進(jìn)程的一次運(yùn)行。 2.分別用兩種調(diào)度算法對五個(gè)進(jìn)程進(jìn)行調(diào)度。每個(gè)進(jìn)程可有三鐘狀態(tài);執(zhí)行狀態(tài)(R)、就緒狀態(tài)(W,包括等待狀態(tài))和完成狀態(tài)(F),并假定初始狀態(tài)為就緒狀態(tài)。三、數(shù)據(jù)結(jié)構(gòu) (1)進(jìn)程控制塊結(jié)構(gòu)如下:Name進(jìn)程標(biāo)示符Prio進(jìn)程優(yōu)先數(shù)Cputime進(jìn)程累計(jì)占用CPU的時(shí)間片數(shù)Needtime進(jìn)程到完成還需要的時(shí)間片數(shù)State進(jìn)程狀態(tài)Next連指針(2)進(jìn)程的就緒態(tài)和等待態(tài)均為鏈表結(jié)構(gòu),共有四個(gè)指針如下:Run當(dāng)前運(yùn)行進(jìn)程指針Ready就緒隊(duì)列頭指
4、針Tall就緒隊(duì)列尾指針Finish完成隊(duì)列頭指針?biāo)摹⒊绦蛄鞒虉D 開始P為當(dāng)前優(yōu)先數(shù)最大進(jìn)程p-link=ready;ready=p;p-super - -Inser=0?(second當(dāng)前記錄的進(jìn)程為空)First-link=p時(shí),用second記錄進(jìn)程p進(jìn)程p輸入結(jié)束? 開始執(zhí)行P-rtime=p-ntimeP插入進(jìn)程隊(duì)列成功p-supersecond-superSecond=nullFirst=readySecond=first-linkp-superready-super或ready為空Ready記錄當(dāng)前鏈表中最大優(yōu)先數(shù)進(jìn)程 N YFirst&second;指針后移一位 N N Y N
5、 Y Y N Y五、實(shí)驗(yàn)代碼#include#include#includetypedefstructnode char name20; /進(jìn)程的名字 int prio; /進(jìn)程的優(yōu)先級 int cputime; /CPU執(zhí)行時(shí)間 int needtime; /進(jìn)程執(zhí)行所需要的時(shí)間char state; /進(jìn)程的狀態(tài),W就緒態(tài),R執(zhí)行態(tài),F(xiàn)完成態(tài) int count; /記錄執(zhí)行的次數(shù) struct node *next; /鏈表指針PCBPCB *ready=NULL,*run=NULL,*finish=NULL; /定義三個(gè)隊(duì)列,就緒隊(duì)列,執(zhí)行隊(duì)列和完成隊(duì)列int num;viod Get
6、First(); /從就緒隊(duì)列取得第一個(gè)節(jié)點(diǎn)void Output(); /輸出隊(duì)列信息void InsertPrio(PCB *in);/創(chuàng)建優(yōu)先級隊(duì)列規(guī)定優(yōu)先數(shù)越小優(yōu)先級越高void PrioCreate(); /優(yōu)先級輸入函數(shù)void Priority(); /按照優(yōu)先級調(diào)度int main(void)printf(請輸入要?jiǎng)?chuàng)建的進(jìn)程數(shù)目:n);scanf(%d,&num);getchar();printf(優(yōu)先級調(diào)度算法:n);PrioCreate();Priority();Output();return0;void GetFirst() /取得第一個(gè)就緒隊(duì)列節(jié)點(diǎn)run=ready;i
7、f(ready!=NULL) run-state=R;ready=ready-next;run-next=NULL; void Output() /輸出隊(duì)列信息PCB*p;p=ready;printf(進(jìn)程名t優(yōu)先級tcpu時(shí)間t需要時(shí)間t進(jìn)程狀態(tài)t計(jì)數(shù)器n);while(p!=NULL)printf(%st%dt%dt%dtt%ctt%dn,p-name,p-prio,p-cputime,p-needtime,p-state,p-count);p=p-next; p=finish;while(p!=NULL) printf(%st%dt%dt%dtt%ctt%dn,p-name,p-prio
8、,p-cputime,p-needtime,p-state,p-count);p=p-next; p=run;while(p!=NULL) printf(%st%dt%dt%dtt%ctt%dn,p-name,p-prio,p-cputime,p-needtime,p-state,p-count);p=p-next; void InsertPrio(PCB *in) /創(chuàng)建優(yōu)先級隊(duì)列,規(guī)定優(yōu)先數(shù)越小,優(yōu)先級越低PCB*fst,*nxt;fst=nxt=ready; if(ready=NULL) /如果隊(duì)列為空,則為第一個(gè)元素 in-next=ready;ready=in; else /查到合適
9、的位置進(jìn)行插入 if(in-prio=fst-prio) /比第一個(gè)還要大,則插入到隊(duì)頭 in-next=ready;ready=in; else while(fst-next!=NULL) /移動(dòng)指針查找第一個(gè)別它小的元素的位置進(jìn)行插入 nxt=fst;fst=fst-next; if(fst-next=NULL) /已經(jīng)搜索到隊(duì)尾,則其優(yōu)先級數(shù)最小,將其插入到隊(duì)尾即可 in-next=fst-next;fst-next=in; else /插入到隊(duì)列中 nxt=in;in-next=fst; void InsertTime(PCB *in) /將進(jìn)程插入到就緒隊(duì)列尾部PCB*fst;fst
10、=ready;if(ready=NULL) in-next=ready;ready=in;elsewhile(fst-next!=NULL) fst=fst-next; in-next=fst-next;fst-next=in;void InsertFinish(PCB *in) /將進(jìn)程插入到完成隊(duì)列尾部PCB*fst;fst=finish;if(finish=NULL)in-next=finish;finish=in; else while(fst-next!=NULL)fst=fst-next;in-next=fst-next;fst-next=in; void PrioCreate()
11、 /優(yōu)先級調(diào)度輸入函數(shù)PCB*tmp;inti;printf(輸入進(jìn)程名字和進(jìn)程所需時(shí)間:n);for(i=0;iname);getchar(); /吸收回車符號scanf(%d,&(tmp-needtime);tmp-cputime=0;tmp-state=W;tmp-prio=50-tmp-needtime; 、設(shè)置其優(yōu)先級,需要的時(shí)間越多,優(yōu)先級越低tmp-count=0;InsertPrio(tmp); /按照優(yōu)先級從高到低,插入到就緒隊(duì)列 void Priority() /按照優(yōu)先級調(diào)度,每次執(zhí)行一個(gè)時(shí)間片intflag=1;GetFirst();while(run!=NULL)/當(dāng)就緒隊(duì)列不為空時(shí),則調(diào)度進(jìn)程如執(zhí)行隊(duì)列 Output(); /輸出每次調(diào)度過程中各個(gè)節(jié)點(diǎn)的狀態(tài)while(flag)run-prio-=3; /優(yōu)先級減三run-cputime+; /CPU時(shí)間片加一run-needtime-; /進(jìn)程執(zhí)行完成的剩余時(shí)間減一if(run-needtime=0) /如果進(jìn)程執(zhí)行完畢,將進(jìn)程狀態(tài)置為F,將其插入到完成隊(duì)列run-state=F;run-count+; /進(jìn)程執(zhí)行的次數(shù)加一InsertFinish(run);flag=0; else /將進(jìn)程狀態(tài)置為W,入就緒隊(duì)列 run-state=W;run-count+; /進(jìn)程執(zhí)行的
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 小學(xué)跆拳道展演活動(dòng)方案
- 常用團(tuán)建活動(dòng)方案
- 巾幗最美活動(dòng)方案
- 小學(xué)生介紹美食活動(dòng)方案
- 小紅書節(jié)日活動(dòng)方案
- 小班參觀藥店活動(dòng)方案
- 小學(xué)禁毒交通活動(dòng)方案
- 小學(xué)鄰里互助活動(dòng)方案
- 小組競爭活動(dòng)方案
- 常青社區(qū)書簽活動(dòng)方案
- 星級酒店會(huì)議管理制度
- 呼吸科肺炎護(hù)理查房
- 產(chǎn)科質(zhì)量控制體系專題匯報(bào)
- 磨削考試題及答案
- 2025-2030年中國成人紙尿褲行業(yè)市場深度分析及發(fā)展前景與投資機(jī)會(huì)研究報(bào)告
- 2024年河南省南召縣教育局公開招聘試題含答案分析
- 2025-2030中國動(dòng)物狂犬病疫苗行業(yè)發(fā)展現(xiàn)狀及趨勢前景分析報(bào)告
- 2025年云南省中考語文試卷真題
- 文具店創(chuàng)業(yè)計(jì)劃書文具店創(chuàng)業(yè)準(zhǔn)備計(jì)劃書范文
- 2025年山西煙草專賣局考試題庫帶答案分析試卷及答案
- 銀川永寧縣社區(qū)工作者招聘筆試真題2024
評論
0/150
提交評論