




已閱讀5頁,還剩9頁未讀, 繼續(xù)免費閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
操作系統(tǒng)原理與Linux課程設(shè)計報告專 業(yè) 班 級 學(xué) 號 姓 名 指導(dǎo)教師 完成時間 成 績 進(jìn)程調(diào)度算法一、設(shè)計題目:進(jìn)程調(diào)度算法二、設(shè)計目的 通過對進(jìn)程調(diào)度算法的編寫加強對操作系統(tǒng)的加深了解,從而進(jìn)一步的讓我們清楚個進(jìn)程之間的運行情況,對優(yōu)先權(quán)算法與輪轉(zhuǎn)調(diào)度算法的模擬加強對進(jìn)程概念和進(jìn)程的調(diào)度過程的理解,掌握進(jìn)程狀態(tài)之間的切換,同時掌握進(jìn)程調(diào)度算法的實現(xiàn)方法和技巧。三、設(shè)計要求要求實現(xiàn)先來先服務(wù),短作業(yè)優(yōu)先,時間片輪轉(zhuǎn),優(yōu)先權(quán)調(diào)度算法四種算法并進(jìn)行對比分析.四、設(shè)計思想說明1、先來先服務(wù)算法:按照進(jìn)程進(jìn)入就緒隊列的先后次序,分派CPU,當(dāng)前進(jìn)程占用CPU,直到執(zhí)行完或阻塞,才出讓CPU(非搶占方式)。在進(jìn)程喚醒后(如I/O完成),并不立即恢復(fù)執(zhí)行,通常等到當(dāng)前進(jìn)程讓出CPU。先來先服務(wù)算法的實現(xiàn)過程如圖所示。 設(shè)置信號量:就緒隊列互斥信號量s,初值為1; 就緒隊列中進(jìn)程個數(shù)n,初值為0。2、短作業(yè)優(yōu)先:選擇就緒隊列中估計運行時間最短的進(jìn)程投入運行。通常后來的短作業(yè)不搶先正在執(zhí)行的作業(yè)。比FCFS改善平均周轉(zhuǎn)時間和平均帶權(quán)周轉(zhuǎn)時間,縮短作業(yè)的等待時間提高系統(tǒng)的吞吐量。3、時間片輪轉(zhuǎn)調(diào)度算法:通過時間片輪轉(zhuǎn),提高進(jìn)程并發(fā)性和響應(yīng)時間特性,從而提高資源利用率。將系統(tǒng)中所有的就緒進(jìn)程按照FCFS原則,排成一個隊列。 每次調(diào)度時將CPU分派給隊首進(jìn)程,讓其執(zhí)行一個時間片。時間片的長度從幾個ms到幾百ms。在一個時間片結(jié)束時,發(fā)生時鐘中斷。調(diào)度程序據(jù)此暫停當(dāng)前進(jìn)程的執(zhí)行,將其送到就緒隊列的末尾,并通過CPU現(xiàn)場切換執(zhí)行當(dāng)前的隊首進(jìn)程。進(jìn)程可以未使用完一個時間片,就出讓CPU(如阻塞)。 4、優(yōu)先權(quán)調(diào)度算法:優(yōu)先選擇就緒隊列中優(yōu)先級最高的進(jìn)程投入運行。分為:非搶占式優(yōu)先級算法:僅發(fā)生在進(jìn)程放棄CPU。搶占式優(yōu)先級算法:可剝奪當(dāng)前運行進(jìn)程CPU。五、系統(tǒng)結(jié)構(gòu)的說明六、數(shù)據(jù)結(jié)構(gòu)的說明用C語言或C+語言來實現(xiàn)對N個進(jìn)程采用優(yōu)先算法以及輪轉(zhuǎn)算法的調(diào)度。隊列指針Next用來將多個進(jìn)錯控制塊PCB鏈接為隊列。void init();/*產(chǎn)生idle進(jìn)程,輸入用戶進(jìn)程數(shù)目,調(diào)用insert()*/void print(PCB *pcb);/*輸出進(jìn)程屬性信息*/void print_init(PCB *pcb);/*輸出所有PCB的初始值*/void insert();/*生成進(jìn)程屬性信息,插入進(jìn)程就緒隊列*/void Run_priority(PCB *pcb);/*運行進(jìn)程,隨機(jī)阻塞進(jìn)程、產(chǎn)生新進(jìn)程,插入就緒隊列,喚醒阻塞進(jìn)程*/void block(PCB *pcb);/*調(diào)用destroy()將進(jìn)程插入阻塞隊列*/void wakeup();/*喚醒進(jìn)程,插入就緒隊列*/void proc_priority();/*優(yōu)先權(quán)調(diào)度算法模擬*/void Run_loop(PCB *pcb);void proc_loop();/*輪轉(zhuǎn)法調(diào)度算法模擬*/void update(PCB *pcb);/*更新進(jìn)程信息*/void pushback_queue(PCB *queue,PCB *item);/*將item插入到隊列的尾部*/void insert_queue(PCB *queue,PCB *item);/*將item插入到隊列中,使得插入后,隊列中按照優(yōu)先級從高到低有序*/void sort_queue(PCB *&queue);/*對queue中的結(jié)點進(jìn)行排序,按照優(yōu)先級從大到小*/PCB *ready_queue,*block_queue,*idleprocess;/*就緒隊列,阻塞隊列及閑逛進(jìn)程指針變量*/七、程序清單:短作業(yè)優(yōu)先:#include struct sjfchar name10;float arrivetime;float servicetime;float starttime;float finishtime;float zztime;float dqzztime;sjf a100;void input(sjf *p,int N) int i;printf(intput the processs name & arrivetime & servicetime:nfor exmple: a 0 100n);for(i=0;i=N-1;i+)printf(input the %dth processs information:n,i+1);scanf(%s%f%f,&,&pi.arrivetime,&pi.servicetime);void Print(sjf *p,float arrivetime,float servicetime,float starttime,float finishtime,float zztime,float dqzztime,int N)int k; printf(run order:); printf(%s,);for(k=1;k%s,); printf(nthe processs information:n); printf(nnametarrivetservicetstarttfinishtzztdqzzn); for(k=0;k=N-1;k+) printf(%st%-.2ft%-.2ft%-.2ft%-.2ft%-.2ft%-.2ftn,,pk.arrivetime,pk.servicetime,pk.starttime,pk.finishtime,pk.zztime,pk.dqzztime); /pai xuvoid sort(sjf *p,int N) for(int i=0;i=N-1;i+) for(int j=0;j=i;j+) if(pi.arrivetimepj.arrivetime) sjf temp; temp=pi; pi=pj; pj=temp; /yun xing jieduanvoid deal(sjf *p, float arrivetime,float servicetime,float starttime,float finishtime,float &zztime,float &dqzztime,int N) int k; for(k=0;k=N-1;k+) if(k=0) pk.starttime=pk.arrivetime; pk.finishtime=pk.arrivetime+pk.servicetime; else pk.starttime=pk-1.finishtime; pk.finishtime=pk-1.finishtime+pk.servicetime; for(k=0;k=N-1;k+) pk.zztime=pk.finishtime-pk.arrivetime; pk.dqzztime=pk.zztime/pk.servicetime; void sjff(sjf *p,int N)float arrivetime=0,servicetime=0,starttime=0,finishtime=0,zztime=0,dqzztime=0;sort(p,N); for(int m=0;mN-1;m+) if(m=0) pm.finishtime=pm.arrivetime+pm.servicetime; else pm.finishtime=pm-1.finishtime+pm.servicetime; int i=0; for(int n=m+1;n=N-1;n+) if(pn.arrivetime=pm.finishtime) i+; float min=pm+1.servicetime;int next=m+1;/m+1=n for(int k=m+1;km+i;k+) if(pk+1.servicetimemin) min=pk+1.servicetime; next=k+1; sjf temp; temp=pm+1; pm+1=pnext; pnext=temp; deal(p,arrivetime,servicetime,starttime,finishtime,zztime,dqzztime,N); Print(p,arrivetime,servicetime,starttime,finishtime,zztime,dqzztime,N);void main() int N; printf(-短作業(yè)優(yōu)先調(diào)度算法-n); printf(input the processs number:n); scanf(%d,&N); input(a,N); sjf *b=a; sjf *c=a; sjff(b,N);八、使用說明書(即用戶手冊)(內(nèi)容包含如何登錄、退出等操作說明)1、登陸Microsoft Visual C+6.0編譯器,創(chuàng)建一個新文件;2、將每個算法的程序代碼逐個輸入并進(jìn)行試調(diào)運行。(1)、先來先服務(wù)算法程序運行結(jié)果:當(dāng)3個不同的進(jìn)程進(jìn)入系統(tǒng)時,系統(tǒng)會根據(jù)每一個進(jìn)程的到達(dá)時間的快慢對進(jìn)程的先后順序進(jìn)行調(diào)整排序,依次從最快到慢的程序開始運行。(2)、短作業(yè)優(yōu)先算法程序運行結(jié)果:當(dāng)3個不同的進(jìn)程進(jìn)入到系統(tǒng)時,系統(tǒng)會根據(jù)每一個進(jìn)程的作業(yè)時間長短對進(jìn)程的先后順序進(jìn)行調(diào)整排序,并依次從最短作業(yè)時間開始運行直到最后一個也是作業(yè)時間最長的一個便結(jié)束調(diào)度。(3)、高優(yōu)先級優(yōu)先調(diào)度算法程序運行結(jié)果:當(dāng)3個不同進(jìn)程進(jìn)入系統(tǒng)時,系統(tǒng)根據(jù)每一個進(jìn)程的優(yōu)先級大小對進(jìn)程的先后順序進(jìn)行調(diào)整排序,通過從高優(yōu)先級的進(jìn)程開始調(diào)度運行到最低級的進(jìn)程便結(jié)束此次進(jìn)程調(diào)度。(4)、優(yōu)先級時間輪轉(zhuǎn)算法程序運行結(jié)果:當(dāng)3個不同的進(jìn)程進(jìn)入系統(tǒng)時,系統(tǒng)根據(jù)進(jìn)程的優(yōu)先級別對每一個進(jìn)程進(jìn)行時間片分配,從第一個進(jìn)程開始調(diào)用運行,每一個進(jìn)程運行結(jié)束便銷毀,接著運行下一個進(jìn)程直到所有的進(jìn)程結(jié)束。3、退出Microsoft Visual C+6.0編譯器九、體會,建議:通過本次綜合課程設(shè)計使我體會到了團(tuán)隊合作的重要性,也終于明白了一個程序可以由幾十個人甚至幾百個人共同完成的道理。此次的課程設(shè)計對于像我這樣基礎(chǔ)不扎實的人來說確實有難度,不過好在有我們的組員的幫忙與合作,還是勉強完成了此次設(shè)計任務(wù)!而
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025合同簽訂與履行管理規(guī)程
- 醫(yī)學(xué)教育評估體系的創(chuàng)新與挑戰(zhàn)
- 小麥抗白粉病育種中的全基因組關(guān)聯(lián)分析
- 閱讀力的培養(yǎng)
- 共創(chuàng)綠色愿景
- 關(guān)節(jié)鏡穿刺術(shù)后護(hù)理
- 2025養(yǎng)殖場的租賃合同范本
- 家畜繁殖學(xué)試題及答案
- 2025合同范本 初創(chuàng)企業(yè)股權(quán)分配的6大核心、4條原則、3步落地、5大陷阱指南
- 化學(xué)考試綜合試題題庫及答案
- GB/T 34560.2-2017結(jié)構(gòu)鋼第2部分:一般用途結(jié)構(gòu)鋼交貨技術(shù)條件
- 閱讀繪本《小種子》PPT
- 醫(yī)院清潔消毒與滅菌課件
- 2022年小學(xué)生詩詞大賽參考題庫200題(含答案)
- 水泥廠工藝流程圖
- 提高腸鏡患者腸道準(zhǔn)備合格率課件
- 公司物品采購申請單
- 《卓有成效的管理者》Word電子版電子版本
- 喪假證明模板
- T∕CIC 049-2021 水泥窯用固體替代燃料
- 集裝箱出口十聯(lián)單
評論
0/150
提交評論