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

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

ID:35617826

大小:136.50 KB

頁數:16頁

時間:2019-04-02

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

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

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

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

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

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

5、,初始值為“0”。狀態(tài)——有兩種狀態(tài),“就緒”和“結束”,初始狀態(tài)都為“就緒”,用“R”表示。當一個進程運行結束后,它的狀態(tài)為“結束”,用“E”表示。每次運行所設計的處理器調度程序前,為每個進程任意確定它的“要求運行時間”。把五個進程按順序排成循環(huá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:進程隊列4.3程序詳細設計步驟:沈陽大學課程設計說明書NO.16a.首先建立PCB的數據結構

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

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

當前文檔最多預覽五頁,下載文檔查看全文

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

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