操作系統(tǒng)課程設(shè)計--時間片輪轉(zhuǎn)算法

操作系統(tǒng)課程設(shè)計--時間片輪轉(zhuǎn)算法

ID:35617826

大?。?36.50 KB

頁數(shù):16頁

時間:2019-04-02

操作系統(tǒng)課程設(shè)計--時間片輪轉(zhuǎn)算法_第1頁
操作系統(tǒng)課程設(shè)計--時間片輪轉(zhuǎn)算法_第2頁
操作系統(tǒng)課程設(shè)計--時間片輪轉(zhuǎn)算法_第3頁
操作系統(tǒng)課程設(shè)計--時間片輪轉(zhuǎn)算法_第4頁
操作系統(tǒng)課程設(shè)計--時間片輪轉(zhuǎn)算法_第5頁
資源描述:

《操作系統(tǒng)課程設(shè)計--時間片輪轉(zhuǎn)算法》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在學(xué)術(shù)論文-天天文庫

1、課程設(shè)計說明書NO.16時間片輪轉(zhuǎn)算法1.課程設(shè)計的目的通過操作系統(tǒng)課程設(shè)計,通過對作業(yè)調(diào)度算法的設(shè)計,深入理解作業(yè)調(diào)度的原理,從原理分析、物理設(shè)計,到功能分析和應(yīng)用程序的最終實現(xiàn),讓學(xué)生親自動手參與一個操作系統(tǒng)的模擬設(shè)計,真正理解和掌握操作系統(tǒng)的有關(guān)內(nèi)容,加深對操作系統(tǒng),軟件工程,程序設(shè)計語言的理論知識的理解和應(yīng)用水平;在理論和實驗教學(xué)基礎(chǔ)上進(jìn)一步鞏固已學(xué)基本理論及應(yīng)用知識并加以綜合提高;學(xué)會將知識應(yīng)用于實際的方法,提高分析和解決問題的能力,增強對手能力;并更好的理解和消化課本所學(xué)的知識,為畢業(yè)設(shè)計和以后工作打下必要基礎(chǔ)。2.課程設(shè)計的開發(fā)語言Windows操作系統(tǒng)MicrosoftVisu

2、al C++6.03.功能描述時間片輪轉(zhuǎn)的主要思想就是按順序為每一個進(jìn)程一次只分配一個時間片的時間。算法要完成的功能就是將各個進(jìn)程按照時間片輪轉(zhuǎn)運行的動態(tài)過程顯示出來。時間片輪轉(zhuǎn)算法的主要實現(xiàn)過程是首先為每一個進(jìn)程創(chuàng)建一個進(jìn)程控制塊,定義數(shù)據(jù)結(jié)構(gòu),說明進(jìn)程控制塊所包含的內(nèi)容,有進(jìn)程名、進(jìn)程所需運行時間、已運行時間和進(jìn)程的狀態(tài)以及指針的信息。實現(xiàn)的過程即運用指針指向某一個進(jìn)程,判斷當(dāng)前的進(jìn)程是否是就緒狀態(tài)“r”,如果是,則為該進(jìn)程分配一個時間片,同時,已運行時間加一且要求運行的時間減一,如此循環(huán)執(zhí)行,當(dāng)某一個進(jìn)程的所需要運行的時間減少至0時,則將該進(jìn)程的狀態(tài)設(shè)置為“e”。然后,將指針指向下一個未

3、運行完成的進(jìn)程,重復(fù)判斷,直至所有的進(jìn)程都運行結(jié)束。4.方案論證4.1概要設(shè)計4.1.1所用數(shù)據(jù)結(jié)構(gòu)及符號說明typedefstructPCB{charname[10];//進(jìn)程名structPCB*next;//循環(huán)鏈指針沈陽大學(xué)課程設(shè)計說明書NO.16intneed_time;//要求運行時間intworked_time;//已運行時間,初始為0charcondition;//進(jìn)程狀態(tài),只有“就緒”和“結(jié)束”兩種狀態(tài)intflag;//進(jìn)程結(jié)束標(biāo)志,用于輸出}PCB;PCB*front,*rear;//循環(huán)鏈隊列的頭指針和尾指針intN;//N為進(jìn)程數(shù)4.1.2主程序的流程圖圖1:主程序的

4、流程圖4.1.3程序說明:處理器調(diào)度總是選擇指針指示的進(jìn)程運行。由于本實驗是模擬處理器調(diào)度的功能,所以,對被選中的進(jìn)程并不實際的啟動運行,而是執(zhí)行:已運行時間+1沈陽大學(xué)課程設(shè)計說明書NO.16來模擬進(jìn)程的一次運行,表示進(jìn)程已經(jīng)運行過一個單位的時間。4.2詳細(xì)設(shè)計首先每一個進(jìn)程用一個進(jìn)程控制塊PCB來代表。進(jìn)程控制塊的格式為:進(jìn)程名指針要求運行時間已運行時間狀態(tài)圖2:PCB控制塊其中,進(jìn)程名——作為進(jìn)程的標(biāo)識,如Q1、Q2等。指針——進(jìn)程按順序排成循環(huán)鏈隊列,用指針指出下一個進(jìn)程的進(jìn)程控制塊的首地址,最后一個進(jìn)程的指針指出第一個進(jìn)程的進(jìn)程控制塊首地址。已運行時間——假設(shè)進(jìn)程已經(jīng)運行的單位時間數(shù)

5、,初始值為“0”。狀態(tài)——有兩種狀態(tài),“就緒”和“結(jié)束”,初始狀態(tài)都為“就緒”,用“R”表示。當(dāng)一個進(jìn)程運行結(jié)束后,它的狀態(tài)為“結(jié)束”,用“E”表示。每次運行所設(shè)計的處理器調(diào)度程序前,為每個進(jìn)程任意確定它的“要求運行時間”。把五個進(jìn)程按順序排成循環(huán)鏈隊列,用指針指出隊列連接情況。用指針表示輪到運行的進(jìn)程,如下圖描述所示:K1Q1K2Q2K3Q3K4Q4K5Q5?K2?K3?K4?K5?K1?2?4?3?1?2?0?0?0?0?0?R?R?R?R?R?PCB1?PCB2?PCB3?PCB4?PCB5圖3:進(jìn)程隊列4.3程序詳細(xì)設(shè)計步驟:沈陽大學(xué)課程設(shè)計說明書NO.16a.首先建立PCB的數(shù)據(jù)結(jié)構(gòu)

6、,為了便于正確輸出,加上了進(jìn)程結(jié)束標(biāo)志flag。輸入進(jìn)程信息(包括進(jìn)程名和要求運行的時間),并為每個進(jìn)程創(chuàng)建一個PCB并初始化形成一個循環(huán)鏈隊列,用函數(shù)creatPCB()來實現(xiàn)。b.建立函數(shù)judge()用來判斷進(jìn)程全部運行結(jié)束標(biāo)志,即當(dāng)所有進(jìn)程的狀態(tài)變?yōu)椤痚’(即完成狀態(tài))后,循環(huán)結(jié)束,表示所有進(jìn)程都已運行成功。c.建立時間片輪轉(zhuǎn)算法creatProcess()對進(jìn)程進(jìn)行輪轉(zhuǎn)運行,首先指針s指向第一個進(jìn)程PCB,即s=front,判斷該進(jìn)程的狀態(tài)是否為’r’(就緒狀態(tài)),即if(s->condition=='r'),若是則表示此進(jìn)程尚未執(zhí)行結(jié)束,則執(zhí)行s->worked_time++且s-

7、>need_time--,if(s->need_time==0),則表示此進(jìn)程已運行結(jié)束,將其狀態(tài)置為結(jié)束,即s->condition='e',并根據(jù)狀態(tài)位輸出完成信息,且以后不會再運行此進(jìn)程。將指針指向下個進(jìn)程,s=s->next,并判斷所有進(jìn)程是否已全部運行結(jié)束,沒有則重復(fù)上面算法。當(dāng)所有進(jìn)程的狀態(tài)位都變成’e’表示所有進(jìn)程運行完成,則循環(huán)結(jié)束。d.建立主函數(shù)main(),輸入進(jìn)程數(shù)N,調(diào)用初

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動畫的文件,查看預(yù)覽時可能會顯示錯亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負(fù)責(zé)整理代發(fā)布。如果您對本文檔版權(quán)有爭議請及時聯(lián)系客服。
3. 下載前請仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時可能由于網(wǎng)絡(luò)波動等原因無法下載或下載錯誤,付費完成后未能成功下載的用戶請聯(lián)系客服處理。