時(shí)間片輪轉(zhuǎn)算法課程設(shè)計(jì).doc

時(shí)間片輪轉(zhuǎn)算法課程設(shè)計(jì).doc

ID:53785258

大小:126.50 KB

頁數(shù):12頁

時(shí)間:2020-04-06

時(shí)間片輪轉(zhuǎn)算法課程設(shè)計(jì).doc_第1頁
時(shí)間片輪轉(zhuǎn)算法課程設(shè)計(jì).doc_第2頁
時(shí)間片輪轉(zhuǎn)算法課程設(shè)計(jì).doc_第3頁
時(shí)間片輪轉(zhuǎn)算法課程設(shè)計(jì).doc_第4頁
時(shí)間片輪轉(zhuǎn)算法課程設(shè)計(jì).doc_第5頁
資源描述:

《時(shí)間片輪轉(zhuǎn)算法課程設(shè)計(jì).doc》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。

1、.一、實(shí)驗(yàn)?zāi)康谋菊n程設(shè)計(jì)以Windows操作系統(tǒng)為實(shí)驗(yàn)平臺(tái),進(jìn)行源代碼分析和修改。通過該課程設(shè)計(jì),使學(xué)生掌握Windows操作系統(tǒng)各部分結(jié)構(gòu)、實(shí)現(xiàn)機(jī)理和各種典型算法;系統(tǒng)地了解操作系統(tǒng)的設(shè)計(jì)和實(shí)現(xiàn)思路,運(yùn)用內(nèi)核開發(fā)環(huán)境實(shí)現(xiàn)對內(nèi)核的修改,培養(yǎng)學(xué)生的系統(tǒng)設(shè)計(jì)能力,并了解操作系統(tǒng)的發(fā)展動(dòng)向和趨勢。二、實(shí)驗(yàn)內(nèi)容1.分析設(shè)計(jì)內(nèi)容,給出解決方案(要說明設(shè)計(jì)實(shí)現(xiàn)的原理,采用的數(shù)據(jù)結(jié)構(gòu))。2.畫出程序的基本結(jié)構(gòu)框圖和流程圖。3.對程序的每一部分要有詳細(xì)的設(shè)計(jì)分析說明。4.源代碼格式要規(guī)范。5.設(shè)計(jì)合適的測試用例,對得到的運(yùn)行結(jié)果要有分析。6.設(shè)計(jì)中遇到的問題,設(shè)計(jì)的

2、心得體會(huì)。7.按期提交完整的程序代碼、可執(zhí)行程序和課程設(shè)計(jì)報(bào)告。三、實(shí)驗(yàn)步驟1、任務(wù)分析:時(shí)間片輪轉(zhuǎn)的主要思想就是按順序?yàn)槊恳粋€(gè)進(jìn)程一次只分配一個(gè)時(shí)間片的時(shí)間。算法要完成的功能就是將各個(gè)進(jìn)程按照時(shí)間片輪轉(zhuǎn)運(yùn)行的動(dòng)態(tài)過程顯示出來。時(shí)間片輪轉(zhuǎn)算法的主要實(shí)現(xiàn)過程是首先為每一個(gè)進(jìn)程創(chuàng)建一個(gè)進(jìn)程控制塊,定義數(shù)據(jù)結(jié)構(gòu),說明進(jìn)程控制塊所包含的內(nèi)容,有進(jìn)程名、進(jìn)程所需運(yùn)行時(shí)間、已運(yùn)行時(shí)間和進(jìn)程的狀態(tài)以及指針的信息。實(shí)現(xiàn)的過程即運(yùn)用指針指向某一個(gè)進(jìn)程,判斷當(dāng)前的進(jìn)程是否是就緒狀態(tài)“r”,如果是,則為該進(jìn)程分配一個(gè)時(shí)間片,同時(shí),已運(yùn)行時(shí)間加一且要求運(yùn)行的時(shí)間減一,如此循

3、環(huán)執(zhí)行,當(dāng)某一個(gè)進(jìn)程的所需要運(yùn)行的時(shí)間減少至0時(shí),則將該進(jìn)程的狀態(tài)設(shè)置為“e”。然后,將指針指向下一個(gè)未運(yùn)行完成的進(jìn)程,重復(fù)判斷,直至所有的進(jìn)程都運(yùn)行結(jié)束。2、概要設(shè)計(jì):(1)所用數(shù)據(jù)結(jié)構(gòu)及符號(hào)說明typedefstructPCB{charname[10];//進(jìn)程名structPCB*next;//循環(huán)鏈指針..intneed_time;//要求運(yùn)行時(shí)間intworked_time;//已運(yùn)行時(shí)間,初始為0charcondition;//進(jìn)程狀態(tài),只有“就緒”和“結(jié)束”兩種狀態(tài)intflag;//進(jìn)程結(jié)束標(biāo)志,用于輸出}PCB;PCB*front,

4、*rear;//循環(huán)鏈隊(duì)列的頭指針和尾指針intN;//N為進(jìn)程數(shù)(2)主程序的流程圖:進(jìn)程是否’r’開始輸入進(jìn)程數(shù)N輸入各進(jìn)程信息為每個(gè)進(jìn)程創(chuàng)建PCB并初始化形成一個(gè)循環(huán)鏈隊(duì)列指針指向循環(huán)鏈隊(duì)列第一個(gè)進(jìn)程運(yùn)行時(shí)間+1且剩余時(shí)間-1剩余時(shí)間=0?將進(jìn)程狀態(tài)置為’e’(完成)所有進(jìn)程是否完成指針指向隊(duì)列中下個(gè)進(jìn)程結(jié)束YYN..Y(3)程序說明:處理器調(diào)度總是選擇指針指示的進(jìn)程運(yùn)行。由于本實(shí)驗(yàn)是模擬處理器調(diào)度的功能,所以,對被選中的進(jìn)程并不實(shí)際的啟動(dòng)運(yùn)行,而是執(zhí)行:已運(yùn)行時(shí)間+1來模擬進(jìn)程的一次運(yùn)行,表示進(jìn)程已經(jīng)運(yùn)行過一個(gè)單位的時(shí)間。3、詳細(xì)設(shè)計(jì)(1)首

5、先每一個(gè)進(jìn)程用一個(gè)進(jìn)程控制塊PCB來代表。進(jìn)程控制塊的格式為:進(jìn)程名指針要求運(yùn)行時(shí)間已運(yùn)行時(shí)間狀態(tài)其中,進(jìn)程名——作為進(jìn)程的標(biāo)識(shí),如Q1、Q2等。指針——進(jìn)程按順序排成循環(huán)鏈隊(duì)列,用指針指出下一個(gè)進(jìn)程的進(jìn)程控制塊的首地址,最后一個(gè)進(jìn)程的指針指出第一個(gè)進(jìn)程的進(jìn)程控制塊首地址。要求運(yùn)行時(shí)間——假設(shè)進(jìn)程需要運(yùn)行的單位時(shí)間數(shù)。已運(yùn)行時(shí)間——假設(shè)進(jìn)程已經(jīng)運(yùn)行的單位時(shí)間數(shù),初始值為“0”。狀態(tài)——有兩種狀態(tài),“就緒”和“結(jié)束”,初始狀態(tài)都為“就緒”,用“R”表示。當(dāng)一個(gè)進(jìn)程運(yùn)行結(jié)束后,它的狀態(tài)為“結(jié)束”,用“E”表示。(2)每次運(yùn)行所設(shè)計(jì)的處理器調(diào)度程序前,為每

6、個(gè)進(jìn)程任意確定它的“要求運(yùn)行時(shí)間”。把五個(gè)進(jìn)程按順序排成循環(huán)鏈隊(duì)列,用指針指出隊(duì)列連接情況。用指針表示輪到運(yù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)程序詳細(xì)設(shè)計(jì)步驟:a.首先建立PCB的數(shù)據(jù)結(jié)構(gòu),為了便于正確輸出,加上了進(jìn)程結(jié)束標(biāo)志flag。輸入進(jìn)程信息(包括進(jìn)程名和要求運(yùn)行的時(shí)間),并為每個(gè)進(jìn)程創(chuàng)建一個(gè)PCB并初始化形成一個(gè)循環(huán)鏈隊(duì)列,用函數(shù)creatPCB()來實(shí)現(xiàn)。b.建

7、立函數(shù)judge()用來判斷進(jìn)程全部運(yùn)行結(jié)束標(biāo)志,即當(dāng)所有進(jìn)程的狀態(tài)變?yōu)椤痚’(即完成狀態(tài))后,循環(huán)結(jié)束,表示所有進(jìn)程都已運(yùn)行成功。c.建立時(shí)間片輪轉(zhuǎn)算法creatProcess()對進(jìn)程進(jìn)行輪轉(zhuǎn)運(yùn)行,首先指針s指向第一個(gè)進(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->need_time--,if(s->need_time==0),則表示此進(jìn)程已運(yùn)行結(jié)束,將其狀態(tài)置為結(jié)束,即s->condition='e'

8、,并根據(jù)狀態(tài)位輸出完成信息,且以后不會(huì)再運(yùn)行此進(jìn)程。將指針指向下個(gè)進(jìn)程,s=s->next,并判斷所有進(jìn)程是

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

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

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