進(jìn)程調(diào)度算法操作系統(tǒng)課程設(shè)計(jì)_第1頁
進(jìn)程調(diào)度算法操作系統(tǒng)課程設(shè)計(jì)_第2頁
進(jìn)程調(diào)度算法操作系統(tǒng)課程設(shè)計(jì)_第3頁
進(jìn)程調(diào)度算法操作系統(tǒng)課程設(shè)計(jì)_第4頁
進(jìn)程調(diào)度算法操作系統(tǒng)課程設(shè)計(jì)_第5頁
已閱讀5頁,還剩22頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、計(jì)算機(jī)科學(xué)與應(yīng)用系操作系統(tǒng)原理課程設(shè)計(jì)報(bào)告題目進(jìn)程調(diào)度算法班級:姓名:專業(yè):計(jì)算機(jī)科學(xué)與技術(shù)指導(dǎo)老師:進(jìn)程調(diào)度算法、實(shí)驗(yàn)?zāi)康耐ㄟ^優(yōu)先權(quán)法與輪轉(zhuǎn)調(diào)度算法的模擬加深對進(jìn)程概念和進(jìn)程調(diào)度過程的理掌握進(jìn)程狀態(tài)之間的切換,同時掌握進(jìn)程調(diào)度算法的實(shí)現(xiàn)方法和技巧。、實(shí)驗(yàn)內(nèi)容、用語言或語言來實(shí)現(xiàn)對個進(jìn)程采用優(yōu)先算法以及輪轉(zhuǎn)算法的進(jìn)程調(diào)度。、每個用來標(biāo)示進(jìn)程的進(jìn)程控制塊用結(jié)果來描述,包括以下字段()進(jìn)程標(biāo)識,其中為閑逛進(jìn)程,用戶進(jìn)程的標(biāo)識數(shù)為()進(jìn)程優(yōu)先級,閑逛進(jìn)程()的優(yōu)先級為0用戶有進(jìn)程的優(yōu)先級大于0,且隨機(jī)產(chǎn)生,標(biāo)識數(shù)越大,優(yōu)先級越高。()進(jìn)程占用的時間,進(jìn)程每運(yùn)一次,累積等于(進(jìn)程總共需要運(yùn)行時間,利用

2、隨機(jī)函數(shù)產(chǎn)生。()進(jìn)程狀態(tài),一就緒態(tài),一運(yùn)行態(tài),一阻塞態(tài)。()隊(duì)列指針,用來將多個進(jìn)程控制塊鏈接為隊(duì)列。(、(優(yōu)3先數(shù)改變的原則(、(進(jìn)程在就緒隊(duì)列中每呆一個時間片,優(yōu)先數(shù)增加、.(2(進(jìn)程每運(yùn)行一個時間片,優(yōu)先數(shù)增加、.(4在調(diào)度前,系統(tǒng)中擁有的進(jìn)程數(shù)有鍵盤輸入,進(jìn)初始化后,所有的進(jìn)程控制塊連接成就緒隊(duì)列。5、為了清楚的觀察諸進(jìn)程的調(diào)度過程,程序應(yīng)將每個時間片內(nèi)的進(jìn)程的情況顯示出來。(,三、實(shí)驗(yàn)步驟、進(jìn)程管理程序調(diào)式好后,運(yùn)行進(jìn)程管理程序操作系統(tǒng)課程設(shè)計(jì)操作系統(tǒng)課程設(shè)計(jì) #2、優(yōu)先權(quán)調(diào)度(1)輸入1選擇優(yōu)先權(quán)調(diào)度算法模擬。()輸入開始進(jìn)程個數(shù),創(chuàng)建個并加入就緒隊(duì)列中。()就緒隊(duì)列不為空,調(diào)度

3、就緒隊(duì)列中第一個進(jìn)程運(yùn)行,否則,從閑逛隊(duì)列中調(diào)度閑逛進(jìn)程運(yùn)行。()在運(yùn)行過程中,當(dāng)遇到阻塞,則該進(jìn)程插入到阻塞隊(duì)列中,且將該進(jìn)程從中刪除。()如果運(yùn)行時間大于等于,該進(jìn)程運(yùn)行完畢,釋放該進(jìn)程;否則插入到就緒隊(duì)列中。()更新就緒隊(duì)列中的優(yōu)先級數(shù)。()隨機(jī)對阻塞隊(duì)列中的進(jìn)程詢問是否要喚醒,喚醒,即從喚醒隊(duì)列中選擇第一個進(jìn)程,且插入就緒隊(duì)列中;阻塞隊(duì)列中沒有阻塞進(jìn)程返回。()重復(fù)上述步驟,直到本次調(diào)度結(jié)束。3、輪轉(zhuǎn)調(diào)度(1)輸入2選擇優(yōu)先權(quán)調(diào)度算法模擬。()輸入開始進(jìn)程個數(shù),創(chuàng)建個并加入就緒隊(duì)列中。()就緒隊(duì)列不為空,調(diào)度就緒隊(duì)列中第一個進(jìn)程運(yùn)行,否則,從閑逛隊(duì)列中調(diào)度閑逛進(jìn)程運(yùn)行。()在運(yùn)行過程中

4、,當(dāng)遇到阻塞,則該進(jìn)程插入到阻塞隊(duì)列中,且將該進(jìn)程從中刪除。()如果運(yùn)行時間大于等于,該進(jìn)程運(yùn)行完畢,釋放該進(jìn)程;否則插入到就緒隊(duì)列中。()隨機(jī)對阻塞隊(duì)列中的進(jìn)程詢問是否要喚醒,喚醒,即從喚醒隊(duì)列中選擇第一個進(jìn)程,且插入就緒隊(duì)列中;阻塞隊(duì)列中沒有阻塞進(jìn)程返回。(7)如果時間到,本次調(diào)度結(jié)束,否則重復(fù)上述步驟,直到本次調(diào)度結(jié)束。:叭processDebugprccess.exe*x卜就緒隊(duì)列初始化成功AIDpriorityCPUtimeALLtimeState96readyk393ready*292readyb392ready廡度葩IDpriorityCPUtimeALLtimeState96r

5、eadyk393ready*292readyG392readyuheidlepeocessidpunning*:peadv一pi.inning忸遷readsr-punningk333PLirmingUheprocessnolisblocked?tt313blocked變遷running-blocked忸遷readsr-punning*222PLirmingUheprocessno2:ifcompleted?銷毀:running-Destixiry廈遷readu-punning0322PLirminjjuheprocessno3Iifcompleted*銷毀:running-Destix)ryu

6、heidlepeocessidrunning*:peadv一riinning廢遷i:readvpunningk122rurminguheprocessno4isblocked?k122blocked變遷2:running-blockedE487E8457438957-1fffffffgfgf9903894378954375894378954375廢遷readu-punning*311PLirminjjuheprocessno6ifcompleted*-Destix)ryL本次調(diào)度片閏片到?關(guān)本次調(diào)度結(jié)束。J操作系統(tǒng)課程設(shè)計(jì)操作系統(tǒng)課程設(shè)計(jì) #操作系統(tǒng)課程設(shè)計(jì)操作系統(tǒng)課程設(shè)計(jì) # #輸入開始進(jìn)程

7、數(shù)n創(chuàng)建n個PCB并加入readyqueue中Nready-queue是否為Runningv=idRunningv=逐個將redy_pc中的PCBYN阻塞Running操作系統(tǒng)課程設(shè)計(jì)操作系統(tǒng)課程設(shè)計(jì) # #將Running從ready_queue中刪除,再將running加入block_queueb是否創(chuàng)建新PCBY操作系統(tǒng)課程設(shè)計(jì)操作系統(tǒng)課程設(shè)計(jì) # #操作系統(tǒng)課程設(shè)計(jì)操作系統(tǒng)課程設(shè)計(jì) # #創(chuàng)建新進(jìn)程并加入到ready_queue中隨機(jī)對block_queue中的進(jìn)程PCB詢問是否要喚醒?操作系統(tǒng)課程設(shè)計(jì)操作系統(tǒng)課程設(shè)計(jì) # #操作系統(tǒng)課程設(shè)計(jì)操作系統(tǒng)課程設(shè)計(jì) # 處理完了嗎N是否要喚醒

8、Yv操作系統(tǒng)課程設(shè)計(jì)操作系統(tǒng)課程設(shè)計(jì) # #將其從blick_queuek隊(duì)列是中刪除,再將其加入ready_queuekY #四、實(shí)驗(yàn)過程中遇到的問題及解決方案1、請仔細(xì)閱讀動態(tài)優(yōu)先權(quán)的進(jìn)程調(diào)度算法的模擬實(shí)現(xiàn)代碼,說明該算法與教材中介紹的算法做了哪些簡單化處理.優(yōu)先權(quán)模擬時優(yōu)先權(quán)是隨機(jī)產(chǎn)生,在實(shí)際的系統(tǒng)中,系統(tǒng)進(jìn)程的優(yōu)先權(quán)高于一般用戶進(jìn)程的優(yōu)先權(quán)。2、為什么對進(jìn)程的優(yōu)先數(shù)可按上述原則進(jìn)行修改?最高優(yōu)先權(quán)調(diào)度算法僅照顧了優(yōu)先權(quán)高的進(jìn)程,當(dāng)不斷有優(yōu)先權(quán)高的進(jìn)程需調(diào)度時,而優(yōu)先權(quán)低的進(jìn)程將很難得到處理機(jī)的調(diào)度,所以進(jìn)程在就緒隊(duì)列中每呆一個時間片,優(yōu)先數(shù)增加1,使優(yōu)先權(quán)低的進(jìn)程不總是忙等。3、請給出

9、設(shè)計(jì)實(shí)現(xiàn)的輪轉(zhuǎn)發(fā)進(jìn)程調(diào)度算法的設(shè)計(jì)思想.時間輪轉(zhuǎn)調(diào)度算法:系統(tǒng)將所有的就像進(jìn)程按先來先服務(wù)的原則,排成一個隊(duì)列,每次調(diào)度時,把分配給首進(jìn)程,并令其執(zhí)行一個時間片。當(dāng)執(zhí)行的時間片用完時,發(fā)出中斷請求,調(diào)度程序便據(jù)此信號來停止該進(jìn)程的執(zhí)行,并將其送到就緒隊(duì)列的末尾,如此反復(fù),就可以保證就緒隊(duì)列中的所有進(jìn)程在一個給定的時間內(nèi),均能獲得一時間片處理機(jī)執(zhí)行時間。4、在實(shí)際的進(jìn)程調(diào)度中,除了按調(diào)度算法選擇下一個執(zhí)行的進(jìn)程外,還應(yīng)處理哪些工作最高優(yōu)先權(quán)調(diào)度算法,常用于批處理系統(tǒng)中,作為作業(yè)調(diào)度算法,也作為多種操作系統(tǒng)中的進(jìn)程調(diào)度算法,還可以用于實(shí)時系統(tǒng)中:時間輪轉(zhuǎn)調(diào)度算法,一般用于分時系統(tǒng)中。五、課程設(shè)計(jì)總

10、結(jié)1、當(dāng)把該算法用于作業(yè)調(diào)度時,系統(tǒng)將從后備隊(duì)列中選擇若干個優(yōu)先權(quán)最高的作業(yè),裝入內(nèi)存,當(dāng)用于進(jìn)程調(diào)度算法時,該算法是把處理及分配給就緒隊(duì)列中優(yōu)先權(quán)最高的進(jìn)程。2、當(dāng)系統(tǒng)空閑(就緒隊(duì)列為空)時,系統(tǒng)運(yùn)行閑逛進(jìn)程,否則運(yùn)行其他進(jìn)程,發(fā)生變遷(就緒T運(yùn)行)3在運(yùn)行進(jìn)程(包括閑逛進(jìn)程)的過程中,可能發(fā)生變遷運(yùn)行T阻塞)即將運(yùn)行進(jìn)程插入到阻塞隊(duì)列(閑逛進(jìn)程不能不被阻塞),可能有其他的進(jìn)程創(chuàng)建,還可能喚醒阻塞隊(duì)列中的某些進(jìn)程,發(fā)生變遷(阻塞T就緒),即從阻塞隊(duì)列中插入就緒隊(duì)列中。4時間片運(yùn)行結(jié)束后,若進(jìn)程累積占用時間大于等于進(jìn)程需要運(yùn)行時間,則進(jìn)程執(zhí)行結(jié)束,釋放其。若進(jìn)程累積占用時間小于進(jìn)程需要運(yùn)行時間

11、,發(fā)生變遷(運(yùn)行T就緒),即將當(dāng)前運(yùn)行的進(jìn)程插入就緒隊(duì)列中。 # 附:進(jìn)程調(diào)度算法代碼產(chǎn)生進(jìn)程,輸入用戶進(jìn)程數(shù)目,調(diào)用輸出進(jìn)程屬性信息輸出所有的初始值生成進(jìn)程屬性信息,插入進(jìn)程就緒隊(duì)列運(yùn)行進(jìn)程,隨機(jī)阻塞進(jìn)程、產(chǎn)生新進(jìn)程,插入就緒隊(duì)列,喚醒阻塞進(jìn)程調(diào)用將進(jìn)程插入阻塞隊(duì)列喚醒進(jìn)程,插入就緒隊(duì)列優(yōu)先權(quán)調(diào)度算法模擬輪轉(zhuǎn)法調(diào)度算法模擬更新進(jìn)程信息將插入到隊(duì)列的尾部將插入到隊(duì)列中,使得插入后,隊(duì)列中按照優(yōu)先級從高到低有序?qū)χ械慕Y(jié)點(diǎn)進(jìn)行排序,按照優(yōu)先級從大到小就緒隊(duì)列,阻塞隊(duì)列及閑逛進(jìn)程指針變量將插入到阻塞隊(duì)列的尾部將插入到阻塞隊(duì)列的尾部 # 輸/出/進(jìn)/程屬性信息 將插入到隊(duì)列中,使得插入后,隊(duì)列中按照優(yōu)

12、先級從高到低有序?qū)χ械慕Y(jié)點(diǎn)進(jìn)行排序,按照優(yōu)先級從大到小生/成/進(jìn)/程屬性信息,插入進(jìn)程就緒隊(duì)列,顯示進(jìn)程信息建立建立 輸/出/進(jìn)/程屬性信息 #生成個進(jìn)程屬性信息,插入進(jìn)程就緒隊(duì)列,顯示進(jìn)程信息產(chǎn)生進(jìn)程,輸入用戶進(jìn)程數(shù)目,調(diào)用閑逛進(jìn)程放入就緒隊(duì)列閑逛進(jìn)程放入就緒隊(duì)列也可以假定初始時系統(tǒng)中只有一個進(jìn)程輸入初始進(jìn)程的個數(shù)就緒隊(duì)列*初始化成功就緒隊(duì)列*初始化成功 #輸/出/進(jìn)/程屬性信息 #調(diào)用將進(jìn)程插入阻塞隊(duì)列變遷:更/新/進(jìn)/程信息,就緒隊(duì)列中進(jìn)程的優(yōu)先級均增加喚/醒/進(jìn)/程,插入就緒隊(duì)列:此時沒有阻塞的進(jìn)程,無所謂的喚醒 輸/出/進(jìn)/程屬性信息 #變遷運(yùn)行進(jìn)程,隨機(jī)阻塞進(jìn)程、產(chǎn)生新進(jìn)程,插入就

13、緒隊(duì)列,喚醒阻塞進(jìn)程變遷每運(yùn)行一個時間片,其優(yōu)先數(shù)減變遷不是閑逛進(jìn)程,滿足條件側(cè)阻塞此進(jìn)程已執(zhí)行完畢,應(yīng)該銷毀進(jìn)程銷毀:否則看該進(jìn)程是否執(zhí)行完畢,如果執(zhí)行完,則釋放,否則再次放入就緒隊(duì)列釋放銷毀:更新就緒隊(duì)列的優(yōu)先級數(shù)運(yùn)/行/進(jìn)/程,隨機(jī)阻塞進(jìn)程、產(chǎn)生新進(jìn)程,插入就緒隊(duì)列,喚醒阻塞進(jìn)程變遷變遷不是閑逛進(jìn)程,滿足條件側(cè)阻塞此進(jìn)程銷毀:優(yōu)先權(quán)調(diào)度算法模擬調(diào)度前調(diào)度開始本次調(diào)度結(jié)束。輪轉(zhuǎn)調(diào)度算法模擬調(diào)度前每次運(yùn)行一個進(jìn)程減去每次運(yùn)行一個進(jìn)程減去 #輸/出/進(jìn)/程屬性信息 #每次運(yùn)行一個進(jìn)程減去每次運(yùn)行一個進(jìn)程減去 # #輸/出/進(jìn)/程屬性信息 #到阻塞隊(duì)列如果運(yùn)行時被阻塞,則運(yùn)行個時間單位時間不過,

14、則阻塞該進(jìn)程,放本次調(diào)度時*間片到本次調(diào)度結(jié)束。輸/出/進(jìn)/程屬性信息 #18 #輸/出/進(jìn)/程屬性信息 #進(jìn)程管理、實(shí)驗(yàn)?zāi)康倪M(jìn)程描述符即為進(jìn)程控制塊。的進(jìn)程控制塊由結(jié)果表示,其結(jié)構(gòu)在里定義。主要進(jìn)城標(biāo)識、調(diào)度相關(guān)信息、進(jìn)程虛擬空間信息、文件相關(guān)信息、信號處理信息、記賬信息及統(tǒng)計(jì)信息、描述進(jìn)程間關(guān)系的指針等。加深對進(jìn)程概念的理解,明確進(jìn)程和程序的區(qū)別,進(jìn)一步認(rèn)識并發(fā)的實(shí)質(zhì),通過分析進(jìn)程爭用資源的現(xiàn)象,學(xué)習(xí)解決進(jìn)程互斥的方法,了解系統(tǒng)中進(jìn)程通信的基本原理。、二、實(shí)驗(yàn)內(nèi)容閱讀的源碼文件,加深對進(jìn)程管理概念的理解。閱讀的源碼文件,分析進(jìn)程的創(chuàng)建過程。學(xué)習(xí)系統(tǒng)進(jìn)行程序的編譯調(diào)式方法。是宿寫,是語言的編

15、譯器。因其后來可以多種語言的開發(fā),現(xiàn)在改變?yōu)?。使用可以生成?zhí)行的文件。的進(jìn)程狀態(tài)有五種:(運(yùn)行):無論進(jìn)程是否正在占用,只要具備運(yùn)行條件,都處于該狀態(tài)。把處于該狀態(tài)的所有組織成一個可運(yùn)行隊(duì)列調(diào)度程序從這個隊(duì)列只中選擇進(jìn)程運(yùn)行。(可中斷阻塞):將阻塞態(tài)劃分成ET三種不同的狀態(tài):(不可中斷喚醒):處于該狀態(tài)的進(jìn)程只有當(dāng)資源有效時被喚醒,不能通過信號或定時中斷喚醒;(暫停):處于該狀態(tài)的進(jìn)程只能通過其他進(jìn)程的信號才能喚醒;(僵死I進(jìn)程已結(jié)束但尚未消亡,已經(jīng)釋放了大部分資源,仍未被釋放。處于狀態(tài)的進(jìn)程資源有效時被喚醒,也可以通過信號或定時中斷喚醒。三、實(shí)驗(yàn)步驟1、進(jìn)程的創(chuàng)建編寫一段程序,使用系統(tǒng)調(diào)用(

16、)創(chuàng)建兩個進(jìn)程。當(dāng)此程序運(yùn)行時,在系統(tǒng)中有一個父進(jìn)程和兩個子進(jìn)程活動。讓每個進(jìn)程在屏幕上顯示一個字符:父進(jìn)程顯示字符“”子進(jìn)程分別顯示字符“”和字符“”。創(chuàng)建子進(jìn)程 # 輸/出/進(jìn)/程屬性信息 #、進(jìn)程的控制創(chuàng)建子進(jìn)程父進(jìn)程創(chuàng)建建(子進(jìn)進(jìn)=程=創(chuàng)建子進(jìn)程 #輸/出/進(jìn)/程屬性信息 #exit(1);elseif(cpid0)lseek(fd,0,0);if(lockf(fd,0,0)=-1)perror(lockfailure);exit(1);printf(Iamaparentprocess,mypidis%dn,getid();printf(Pleaseinputastring:n);sc

17、anf(%s,str);lseek(fd,0,0);write(fd,str,sizeof(str);lseek(fd,0,0);if(lockf(fd,0,0)=-1)perror(unlockfailure);exit(1);elsesleep(1);lseek(fd,0,0);if(lockf(fd,0,0)=-1)perror(lockfailure);exit(1);lseek(fd,0,0);read(fd,str,sizeof(str);lseek(fd,0,0);if(lockf(fd,0,0)=-1)perror(unlockfailure);exit(1);printf(n

18、Iamaparentprocess,mypidis%dn,getid();printf(Pleaseinputastring:n);printf(%sn,str);3、軟中斷通信編制一段程序,使其實(shí)現(xiàn)進(jìn)程的軟中斷通信。使用系統(tǒng)調(diào)度()創(chuàng)建兩個子進(jìn)程,再用系統(tǒng)調(diào)用()讓父進(jìn)程捕捉鍵盤上來的中斷信號(即按鍵);當(dāng)捕捉到中斷信號后,父進(jìn)程用系統(tǒng)調(diào)用()向兩個子進(jìn)程發(fā)出信號,子進(jìn)程捕捉到信號后分別輸出下列信息后中止。 輸/出/進(jìn)/程屬性信息 #、進(jìn)程的管道通信編制一段通信,實(shí)現(xiàn)進(jìn)程的管道通信。使用系統(tǒng)調(diào)用()建立一條管道線;兩個子進(jìn)程和分別向管道寫一句話:Child2issend!ingamessaga而父進(jìn)程則從管道中讀出來自于兩個子進(jìn)程的消息,顯示在屏幕上。要求父進(jìn)程先收集子進(jìn)程發(fā)來的消息,然后在接受子進(jìn)程發(fā)來的消息。四、實(shí)驗(yàn)過程中遇到的問題及解決方案、系統(tǒng)調(diào)用()可以創(chuàng)建一個新進(jìn)程,其聲明格式為:調(diào)用成功時,該調(diào)用對父進(jìn)程返回子進(jìn)程的I對子進(jìn)程返回調(diào)用失敗時,對父進(jìn)程返回1沒有創(chuàng)建子進(jìn)程。、在對可執(zhí)行文件加載時進(jìn)行了加鎖和解鎖,實(shí)現(xiàn)進(jìn)程間的互斥

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論