版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p> 操作系統(tǒng)課程設(shè)計(jì)報(bào)告</p><p> 選題名稱: 基于時(shí)間片的高優(yōu)先級(jí)調(diào)度模擬實(shí)現(xiàn) </p><p> 系(院): 經(jīng)濟(jì)管理學(xué)院 </p><p> 專 業(yè): 信息管理與信息系統(tǒng) </p><p> 班 級(jí):
2、 信管1091 </p><p><b> 設(shè)計(jì)任務(wù)書</b></p><p><b> 摘要 </b></p><p> 操作系統(tǒng)(Operating System,簡(jiǎn)稱OS)是計(jì)算機(jī)系統(tǒng)的重要組成部分,是一個(gè)重要的系統(tǒng)軟件,它負(fù)責(zé)管理計(jì)算機(jī)系統(tǒng)的硬、軟件資源和整個(gè)計(jì)算機(jī)的工作流程,協(xié)
3、調(diào)系統(tǒng)部件之間,系統(tǒng)與用戶之間、用戶與用戶之間的關(guān)系。隨著操作系統(tǒng)的新技術(shù)的不斷出現(xiàn)功能不斷增加。操作系統(tǒng)作為一個(gè)標(biāo)準(zhǔn)的套裝軟件必須滿足盡可能多用戶的需要,于是系統(tǒng)不斷膨脹,功能不斷增加,并逐漸形成從開發(fā)工具到系統(tǒng)工具再到應(yīng)用軟件的一個(gè)平臺(tái)環(huán)境。更能滿足用戶的需求。隨著計(jì)算機(jī)技術(shù)的不斷發(fā)展,人們對(duì)于計(jì)算機(jī)系統(tǒng)性能的要求也越來越高,對(duì)于操作系統(tǒng)所使用的算法也在不斷地發(fā)展。OS對(duì)調(diào)度分配實(shí)質(zhì)是一種資源分配,因而調(diào)度算法要根據(jù)不同的系統(tǒng)資源分
4、配策略所規(guī)定的來分配算法。對(duì)于不同的系統(tǒng)目標(biāo),又必須采用不同的調(diào)度算法。有的算法適合長(zhǎng)作業(yè),有的適合短作業(yè),有的適合作業(yè)調(diào)度,有的適合進(jìn)程調(diào)度。本課程設(shè)計(jì)所討論的基于優(yōu)先級(jí)的時(shí)間片調(diào)度算法是在諸多的調(diào)度算法中具有明顯有點(diǎn)的調(diào)度算法。該算法涉及到高優(yōu)先級(jí)調(diào)度算法、時(shí)間片輪轉(zhuǎn)算法、多級(jí)反饋隊(duì)列調(diào)度算法。本課題基于Microsoft Visual C++6.0平臺(tái),對(duì)算法作出具體的解釋。</p><p> 關(guān)鍵詞:操
5、作系統(tǒng),調(diào)度算法,優(yōu)先級(jí),時(shí)間片 </p><p><b> 目 錄</b></p><p><b> 1 引言5</b></p><p> 1.1課題設(shè)計(jì)背景5</p><p> 1.2目的和意義6</p><p> 1.3調(diào)度算法發(fā)展過程6</
6、p><p> 1.4使用的到的開發(fā)工具9</p><p><b> 2需求分析11</b></p><p> 2.1需求背景11</p><p> 2.2課程設(shè)計(jì)任務(wù)14</p><p> 2.3課程設(shè)計(jì)要求15</p><p> 2.4課程設(shè)計(jì)思想15
7、</p><p><b> 3概要設(shè)計(jì)16</b></p><p> 3.1課程設(shè)計(jì)所用方法及其原理16</p><p> 3.2 主要的數(shù)據(jù)結(jié)構(gòu)17</p><p> 3.3課題設(shè)計(jì)的流程圖18</p><p><b> 4詳細(xì)設(shè)計(jì)19</b></
8、p><p> 4.1設(shè)計(jì)進(jìn)程控制塊19</p><p> 4.2進(jìn)程調(diào)度21</p><p><b> 4.3優(yōu)先級(jí)22</b></p><p> 4.3.1 優(yōu)先級(jí)簡(jiǎn)介22</p><p> 4.3.2優(yōu)先權(quán)調(diào)度算法的類型22</p><p> 4.4
9、時(shí)間片輪轉(zhuǎn)算法26</p><p> 4.5 多級(jí)反饋隊(duì)列調(diào)度算法29</p><p> 5調(diào)試與操作說明34</p><p> 5.1調(diào)試過程中遇到的問題及解決方案34</p><p> 5.2 測(cè)試結(jié)果37</p><p><b> 總 結(jié)41</b></p>
10、;<p><b> 致 謝43</b></p><p><b> 參考文獻(xiàn)44</b></p><p><b> 附 錄45</b></p><p><b> 1 引言</b></p><p><b> 1.1課
11、題設(shè)計(jì)背景</b></p><p> 計(jì)算機(jī)自從1946年第一臺(tái)真正意義上的數(shù)字電子計(jì)算機(jī)ENIAC (Electronic Numerical Integrator And Computer)的 誕生以來,已經(jīng)經(jīng)歷了1854年-1890年、1890年-20世紀(jì)早期、20世紀(jì)中期、20世紀(jì)晚期-現(xiàn)在四個(gè)階段,每一個(gè)階段的發(fā)展都發(fā)生了質(zhì)與量的突飛猛進(jìn)。然而,計(jì)算機(jī)的發(fā)展只是代表了硬件的提升,對(duì)于軟件,
12、操作系統(tǒng)的發(fā)展更加引人注目。</p><p> 操作系統(tǒng)(Operating System,簡(jiǎn)稱OS)是管理電腦硬件與軟件資源的程序,同時(shí)也是計(jì)算機(jī)系統(tǒng)的內(nèi)核與基石。操作系統(tǒng)是控制其他程序運(yùn)行,管理系統(tǒng)資源并為用戶提供操作界面的系統(tǒng)軟件的集合。操作系統(tǒng)身負(fù)諸如管理與配置內(nèi)存、決定系統(tǒng)資源供需的優(yōu)先次序、控制輸入與輸出設(shè)備、操作網(wǎng)絡(luò)與管理文件系統(tǒng)等基本事務(wù)。操作系統(tǒng)的型態(tài)非常多樣,不同機(jī)器安裝的OS可從簡(jiǎn)單到復(fù)雜
13、,可從手機(jī)的嵌入式系統(tǒng)到超級(jí)電腦的大型操作系統(tǒng)。目前微機(jī)上常見的操作系統(tǒng)有DOS、OS/2、UNIX、XENIX、LINUX、Windows、Netware等。操作系統(tǒng)的不斷提升對(duì)于計(jì)算機(jī)整體性能的提高有著至關(guān)重要的作用。</p><p> 操作系統(tǒng)對(duì)于各個(gè)方面的要求都不得不提到效率的問題,計(jì)算機(jī)系統(tǒng)的處理機(jī)調(diào)度便變得尤為重要。處理機(jī)調(diào)度的效率甚至可能成為提高計(jì)算機(jī)處理速度的瓶頸。處理機(jī)調(diào)度就是對(duì)系統(tǒng)的資源做出
14、合理的分配,因而,提高處理機(jī)的調(diào)度算法也變得尤為重要。</p><p><b> 1.2目的和意義</b></p><p> 在多道程序設(shè)計(jì)系統(tǒng)中,內(nèi)存中有多道程序運(yùn)行,他們相互爭(zhēng)奪處理機(jī)這一重要的資源。處理機(jī)調(diào)度就是從就緒隊(duì)列中,按照一定的算法選擇一個(gè)進(jìn)程并將處理機(jī)分配給它運(yùn)行,以實(shí)現(xiàn)進(jìn)程并發(fā)地執(zhí)行。</p><p> 一般情況下,當(dāng)占
15、用處理機(jī)的進(jìn)程因?yàn)槟撤N請(qǐng)求得不到滿足而不得不放棄CPU進(jìn)入等待狀態(tài)時(shí),或者當(dāng)時(shí)間片到,系統(tǒng)不得不將CPU分配給就緒隊(duì)列中另一進(jìn)程的時(shí)候,都要引起處理機(jī)調(diào)度。除此之外,進(jìn)程正常結(jié)束、中斷處理等也可能引起處理機(jī)的調(diào)度。因此,處理機(jī)調(diào)度是操作系統(tǒng)核心的重要組成部分,它的主要功能如下:記住進(jìn)程的狀態(tài),如進(jìn)程名稱、指令計(jì)數(shù)器、程序狀態(tài)寄存器以及所有通用寄存器等現(xiàn)場(chǎng)信息,將這些信息記錄在相應(yīng)的進(jìn)程控制塊中;根據(jù)一定的算法,決定哪個(gè)進(jìn)程能獲得處理機(jī),
16、以及占用多長(zhǎng)時(shí)間;收回處理機(jī),即正在執(zhí)行的進(jìn)程因?yàn)闀r(shí)間片用完或因?yàn)槟撤N原因不能再執(zhí)行的時(shí)候,保存該進(jìn)程的現(xiàn)場(chǎng),并收回處理機(jī)。</p><p> 1.3調(diào)度算法發(fā)展過程</p><p> 調(diào)度算法[1]是根據(jù)系統(tǒng)的資源分配策略所規(guī)定的資源分配算法。對(duì)于不同的的系統(tǒng)和系統(tǒng)目標(biāo),通常采用不同的調(diào)度算法,例如,在批處理系統(tǒng)中,為了照顧為數(shù)眾多的段作業(yè),應(yīng)采用短作業(yè)優(yōu)先的調(diào)度算法;又如在分時(shí)系統(tǒng)
17、中,為了保證系統(tǒng)具有合理的響應(yīng)時(shí)間,應(yīng)當(dāng)采用輪轉(zhuǎn)法進(jìn)行調(diào)度。目前存在的多種調(diào)度算法中,有的算法適用于作業(yè)調(diào)度,有的算法適用于進(jìn)程調(diào)度;但也有些調(diào)度算法既可以用于作業(yè)調(diào)度,也可以用于進(jìn)程調(diào)度。各種調(diào)度算法都有其具有的優(yōu)點(diǎn)和缺點(diǎn)。因此,在這里便要對(duì)一種結(jié)合了多種算法的具有極強(qiáng)的適應(yīng)性的調(diào)度算法—基于優(yōu)先級(jí)的時(shí)間片調(diào)度算法作研究。</p><p> 1)FCFS(First come first serve),或者稱
18、為FIFO算法,先來先處理。這個(gè)算法的優(yōu)點(diǎn)是簡(jiǎn)單,實(shí)現(xiàn)容易,并且似乎公平;缺點(diǎn)在于短的任務(wù)有可能變的非常慢,因?yàn)槠淝懊娴娜蝿?wù)占用很長(zhǎng)時(shí)間,造成了平均響應(yīng)時(shí)間非常慢。 2)時(shí)間片輪詢算法,這是對(duì)FIFO算法的改進(jìn),目的是改善短程序(運(yùn)行時(shí)間短)的響應(yīng)時(shí)間,其方法就是周期性地進(jìn)行進(jìn)程切換。這個(gè)算法的關(guān)鍵點(diǎn)在于時(shí)間片的選擇,時(shí)間片過大,那么輪轉(zhuǎn)就越接近FIFO,如果太小,進(jìn)程切換的開銷大于執(zhí)行程序的開銷,從而降低了系統(tǒng)效率。因此選擇合
19、適的時(shí)間片就非常重要。選擇時(shí)間片的兩個(gè)需要考慮的因素:一次進(jìn)程切換所使用的系統(tǒng)消耗以及我們能接受的整個(gè)系統(tǒng)消耗、系統(tǒng)運(yùn)行的進(jìn)程數(shù)。時(shí)間片輪詢看上起非常公平,并且響應(yīng)時(shí)間非常好,然而時(shí)間片輪轉(zhuǎn)并不能保證系統(tǒng)的響應(yīng)時(shí)間總是比FIFO短,這很大程度上取決于時(shí)間片大小的選擇,以及這個(gè)大小與進(jìn)程運(yùn)行時(shí)間的相互關(guān)系。 3)STCF算法(Short time to complete first),顧名思義就是短任務(wù)優(yōu)先算法。這種算法的核心就是
20、所有的程序都有一個(gè)優(yōu)先級(jí),短任務(wù)的優(yōu)先級(jí)比長(zhǎng)任務(wù)的高</p><p> STCF又分為兩類:非搶占式和搶占式。非搶占式STCF就是讓已經(jīng)在CPU上運(yùn)行的程序執(zhí)行到結(jié)束或者阻塞,然后在所有的就緒進(jìn)程中選擇執(zhí)行時(shí)間最短的來執(zhí)行;而搶占式STCF就不是這樣,在每進(jìn)來一個(gè)新的進(jìn)程時(shí),就對(duì)所有進(jìn)程(包括正在CPU上執(zhí)行的進(jìn)程)進(jìn)行檢查,誰(shuí)的執(zhí)行時(shí)間短,就運(yùn)行誰(shuí)。</p><p> STCF總是能
21、提供最優(yōu)的響應(yīng)時(shí)間,然而它也有缺點(diǎn),第一可能造成長(zhǎng)任務(wù)的程序無法得到CPU時(shí)間而饑餓,因?yàn)镺S總是優(yōu)先執(zhí)行短任務(wù);其次,關(guān)鍵問題在于我們?cè)趺粗莱绦虻倪\(yùn)行時(shí)間,怎么預(yù)測(cè)某個(gè)進(jìn)程需要的執(zhí)行時(shí)間?通常有兩個(gè)辦法:使用啟發(fā)式方法估算(例如根據(jù)程序大小估算),或者將程序執(zhí)行一遍后記錄其所用的CPU時(shí)間,在以后的執(zhí)行過程中就可以根據(jù)這個(gè)測(cè)量數(shù)據(jù)來進(jìn)行STCF調(diào)度。 4)優(yōu)先級(jí)調(diào)度,STCF遇到的問題是長(zhǎng)任務(wù)的程序可能饑餓,那么優(yōu)先級(jí)調(diào)度算
22、法可以通過給長(zhǎng)任務(wù)的進(jìn)程更高的優(yōu)先級(jí)來解決這個(gè)問題;優(yōu)先級(jí)調(diào)度遇到的問題可能是短任務(wù)的進(jìn)程饑餓,這個(gè)可以通過動(dòng)態(tài)調(diào)整優(yōu)先級(jí)來解決。實(shí)際上動(dòng)態(tài)調(diào)整優(yōu)先級(jí)(稱為權(quán)值)+時(shí)間片輪詢的策略正是linux的進(jìn)程調(diào)度策略之一的 SCHED_OTHER分時(shí)調(diào)度策略,它的調(diào)度過程如下: (1)創(chuàng)建任務(wù)指定采用分時(shí)調(diào)度策略,并指定優(yōu)先級(jí)nice值(-20~19)。 (2)將根據(jù)每個(gè)任務(wù)的nice值確定在cpu上的執(zhí)行時(shí)間(counter)
23、。 (3)如果沒有等待資源,則將該任務(wù)加入到就緒隊(duì)列中。 (4)調(diào)度程序遍歷就緒隊(duì)列中的任</p><p> ?。?)此時(shí)調(diào)度程序重復(fù)上面計(jì)算過程,轉(zhuǎn)到第4步。 (6)當(dāng)調(diào)度程序發(fā)現(xiàn)所有就緒任務(wù)計(jì)算所得的權(quán)值都為不大于0時(shí),重復(fù)第2步。linux還有兩個(gè)實(shí)時(shí)進(jìn)程的調(diào)度策略:FIFO和RR,實(shí)時(shí)進(jìn)程會(huì)立即搶占非實(shí)時(shí)進(jìn)程。 5)顯然,沒有什么調(diào)度算法是毫無缺點(diǎn)的,因此現(xiàn)代OS通常都會(huì)采
24、用混合調(diào)度算法。例如將不同的進(jìn)程分為幾個(gè)大類,每個(gè)大類有不同的優(yōu)先級(jí),不同大類的進(jìn)程的調(diào)度取決于大類的優(yōu)先級(jí),同一個(gè)大類的進(jìn)程采用時(shí)間片輪詢來保證公平性。 6)其他調(diào)度算法,保證調(diào)度算法保證每個(gè)進(jìn)程享用的CPU時(shí)間完全一樣;彩票調(diào)度算法是一種概率調(diào)度算法,通過給進(jìn)程“發(fā)彩票”的多少,來賦予不同進(jìn)程不同的調(diào)用時(shí)間,彩票調(diào)度算法的優(yōu)點(diǎn)是非常靈活,如果你給短任務(wù)發(fā)更多“彩票”,那么就類似STCF調(diào)度,如果給每個(gè)進(jìn)程一樣多的“彩票”,那
25、么就類似保證調(diào)度;用戶公平調(diào)度算法,是按照每個(gè)用戶,而不是按照每個(gè)進(jìn)程來進(jìn)行公平分配CPU時(shí)間,這是為了防止貪婪用戶啟用了過多進(jìn)程導(dǎo)致系統(tǒng)效率降低甚至停頓。 7)實(shí)時(shí)系統(tǒng)的調(diào)度算法,實(shí)時(shí)系統(tǒng)需要考慮每個(gè)具體任務(wù)的響應(yīng)時(shí)間必須符合要求,在截止時(shí)間前完成。 </p><p> 1.4使用到的開發(fā)工具</p><p> 在本次課程設(shè)計(jì)中,我們選擇了C++語(yǔ)言作為我們所使用的
26、開發(fā)語(yǔ)言,開發(fā)工具則選用了Microsoft Visual C++ 6.0。MFC借助C++的優(yōu)勢(shì)為Windows開發(fā)開辟了一片新天地,同時(shí)也借助ApplicationWizzard使開發(fā)者擺脫離了那些每次都必寫基本代碼,借助ClassWizard和消息映射使開發(fā)者擺脫了定義消息處理時(shí)那種混亂和冗長(zhǎng)的代碼段。更重要的是利用C++的封裝功能使開發(fā)者擺脫Windows中各種句柄的困擾,只需要面對(duì)C++中的對(duì)象,這樣一來使開發(fā)更接近開發(fā)語(yǔ)言而
27、遠(yuǎn)離系統(tǒng)。正因?yàn)镸FC是建立在C++的基礎(chǔ)上,所以我強(qiáng)調(diào)C/C++語(yǔ)言基礎(chǔ)對(duì)開發(fā)的重要性。利用C++的封裝性開發(fā)者可以更容易理解和操作各種窗口對(duì)象;利用C++的派生性開發(fā)者可以減少開發(fā)自定義窗口的時(shí)間和創(chuàng)造出可重用的代碼;利用虛擬性可以在必要時(shí)更好的控制窗口的活動(dòng)。而且C++本身所具備的超越C語(yǔ)言的特性都可以使開發(fā)者編寫出更易用,更靈活的代碼。</p><p> Microsoft Visual C++ 6.0
28、[2]:Visual C++ 6.0,簡(jiǎn)稱VC或者VC6.0,是微軟推出的一款C++編譯器,將“高級(jí)語(yǔ)言”翻譯為“機(jī)器語(yǔ)言(低級(jí)語(yǔ)言)”的程序。Visual C++是一個(gè)功能強(qiáng)大的可視化軟件開發(fā)工具。自1993年Microsoft公司推出Visual C++1.0后,隨著其新版本的不斷問世,Visual C++已成為專業(yè)程序員進(jìn)行軟件開發(fā)的首選工具。雖然微軟公司推出了 Visual C++.NET(Visual C++7.0),但它的應(yīng)
29、用有很大的局限性,只適用于Windows 2000、Windows XP和Windows NT4.0。所以實(shí)際中,更多的是以Visual C++6.0為平臺(tái)。</p><p><b> 1.4.1特色</b></p><p> Visual C++6.0由Microsoft開發(fā), 它不僅是一個(gè)C++ 編譯器,而且是一個(gè)基于Windows操作系統(tǒng)的可視化集成開發(fā)環(huán)境
30、(integrated development environment,IDE)。Visual C++6.0由許多組件組成,包括編輯器、調(diào)試器以及程序向?qū)ppWizard、類向?qū)lass Wizard等開發(fā)工具。 這些組件通過一個(gè)名為Developer Studio的組件集成為和諧的開發(fā)環(huán)境。Microsoft的主力軟件產(chǎn)品。Visual C++是一個(gè)功能強(qiáng)大的可視化軟件開發(fā)工具。自1993年Microsoft公司推出Visual
31、C++1.0后,隨著其新版本的不斷問世,Visual C++已成為專業(yè)程序員進(jìn)行軟件開發(fā)的首選工具。雖然微軟公司推出了Visual C++.NET(Visual C++7.0),但它的應(yīng)用的很大的局限性,只適用于Windows 2000,Windows XP和Windows NT4.0。所以實(shí)際中,更多的是以Visual C++6.0為平臺(tái)。 Visual C++6.0以擁有“語(yǔ)法高亮”,自動(dòng)編譯功能以及高級(jí)除錯(cuò)功能而</p>
32、;<p><b> 1.4.2缺點(diǎn)</b></p><p> 由于C++是由C語(yǔ)言發(fā)展起來的,也支持C語(yǔ)言的編譯。6.0版本是使用最多的版本,很經(jīng)典。最大的缺點(diǎn)是對(duì)于模版的支持比較差?,F(xiàn)在最新補(bǔ)丁為SP6,推薦安裝,否則易出現(xiàn)編譯時(shí)假死狀態(tài)。僅支持Windows操作系統(tǒng)。目前發(fā)現(xiàn)與windows 7兼容性不好,安裝成功后可能會(huì)出現(xiàn)無法打開cpp文件的現(xiàn)象。</p>
33、;<p> 現(xiàn)在的最新版C++編譯器集合在Microsoft Visual Studio 2010軟件里面,包含C++,Visual basic,C#,J#,.net。等, 其中,VC開發(fā)環(huán)境的版本已經(jīng)升級(jí)至Microsoft Visual C++ 2010,對(duì)C++的支持更加全面穩(wěn)定,建議電腦性能好的可以使用此版本。目前微軟公司已經(jīng)停止對(duì)VC++6.0系列產(chǎn)品的維護(hù),繼而轉(zhuǎn)向.NET平臺(tái)環(huán)境,新的MS2008、MS20
34、10等將更符合新世紀(jì)通用開發(fā)需求。</p><p><b> 不要隨便加空行?。?lt;/b></p><p><b> 2需求分析</b></p><p><b> 2.1需求背景</b></p><p> 無論是在批處理系統(tǒng)還是分時(shí)系統(tǒng)中,用戶進(jìn)程數(shù)一般都多于處理機(jī)數(shù)、這
35、將導(dǎo)致它們互相爭(zhēng)奪處理機(jī)。另外,系統(tǒng)進(jìn)程也同樣需要使用處理機(jī)。這就要求進(jìn)程調(diào)度程序按一定的策略,動(dòng)態(tài)地把處理機(jī)分配給處于就緒隊(duì)列中的某一個(gè)進(jìn)程,以使之執(zhí)行。</p><p> 眾所周知,現(xiàn)在的操作系統(tǒng)都是多任務(wù)的操作系統(tǒng),實(shí)際上并不是真正同時(shí)運(yùn)行多個(gè)進(jìn)程,只不過是進(jìn)程在頻繁切換,而這種切換用戶基本上感覺不到,進(jìn)程調(diào)度就是操作系統(tǒng)來完成的。當(dāng)以下情況出現(xiàn)時(shí)需要操作系統(tǒng)來調(diào)度進(jìn)程:時(shí)間片到,即每個(gè)進(jìn)程所分配的時(shí)間片
36、用完后,要跳轉(zhuǎn)到調(diào)度程序;占用CPU的當(dāng)前運(yùn)行進(jìn)程提出I/O操作,發(fā)起對(duì)內(nèi)核的系統(tǒng)調(diào)用時(shí),在系統(tǒng)調(diào)用結(jié)束后,跳轉(zhuǎn)到調(diào)度程序;當(dāng)前運(yùn)行進(jìn)程對(duì)所有內(nèi)核系統(tǒng)調(diào)用的結(jié)束時(shí)都要跳轉(zhuǎn)到調(diào)度程序,根據(jù)當(dāng)前的調(diào)度信息來決定下一個(gè)可以占用CPU的進(jìn)程。</p><p> 然而進(jìn)程調(diào)度的實(shí)現(xiàn)需要一系列的算法。如短作業(yè)優(yōu)先調(diào)度算法,但該算法僅照顧了短作業(yè)而忽略了長(zhǎng)進(jìn)程,而且如果并未指明進(jìn)程的長(zhǎng)度,則短進(jìn)程優(yōu)先和基于進(jìn)程長(zhǎng)度的搶占式調(diào)
37、度算法都將無法使用。</p><p> 在早期的時(shí)間片輪轉(zhuǎn)算法[3]中,系統(tǒng)將所有的就緒進(jìn)程按先來先服務(wù)的原則排成一個(gè)隊(duì)列,每次調(diào)度時(shí),把CPU分配給隊(duì)首進(jìn)程,并令其執(zhí)行一個(gè)時(shí)間片。時(shí)間片的大小從幾 ms到幾百ms。當(dāng)執(zhí)行的時(shí)間片用完時(shí),由一個(gè)計(jì)時(shí)器發(fā)出時(shí)鐘中斷請(qǐng)求,調(diào)度程序便據(jù)此信號(hào)來停止該進(jìn)程的執(zhí)行,并將它送往就緒隊(duì)列的末尾;然后,再把處理機(jī)分配給就緒隊(duì)列的隊(duì)首進(jìn)程,同時(shí)也讓它執(zhí)行一個(gè)時(shí)間片。這樣就可以保證
38、就緒隊(duì)列中的所有進(jìn)程在一給定的時(shí)間內(nèi)均能獲得一時(shí)間的處理機(jī)執(zhí)行時(shí)間。換言之,系統(tǒng)能在給定的時(shí)間內(nèi)響應(yīng)所有用戶的請(qǐng)求。但該算法存在未考慮優(yōu)先級(jí)的不足。而基于時(shí)間片的高優(yōu)先級(jí)調(diào)度算法則不必事先知道各種進(jìn)程所需的執(zhí)行時(shí)間,而且還可以滿足各種類型進(jìn)程的需要。</p><p> 本次試驗(yàn)就是依據(jù)該算法的原理進(jìn)行設(shè)計(jì)的。首先設(shè)置多個(gè)就緒隊(duì)列并為各個(gè)隊(duì)列賦予不同的優(yōu)先級(jí),第一個(gè)隊(duì)列的優(yōu)先級(jí)最高,依次降低;當(dāng)新進(jìn)程進(jìn)入內(nèi)存后將
39、其放入第一隊(duì)列的隊(duì)尾,然后再按先來先服務(wù)的原則排隊(duì)等待調(diào)度;僅當(dāng)?shù)谝粋€(gè)隊(duì)列為空閑時(shí),調(diào)度程序才調(diào)度第二隊(duì)列中的進(jìn)程運(yùn)行。</p><p> 根據(jù)分析,得到如下結(jié)果:</p><p><b> ?。?)系統(tǒng)組成</b></p><p> 系統(tǒng)由虛擬內(nèi)核(VKernel)、命令解釋程序(Commander)、用戶程序(Application)、
40、編譯器(Compiler)四部分組成。</p><p> VKernel首先運(yùn)行,并常駐內(nèi)存。</p><p> Kernel啟動(dòng)后,創(chuàng)建Commander進(jìn)程。根據(jù)用戶請(qǐng)求創(chuàng)建多個(gè)Application進(jìn)程。</p><p> Kernel負(fù)責(zé)維護(hù)6個(gè)數(shù)據(jù)結(jié)構(gòu),包括時(shí)間 (Time), 處理器狀態(tài)(CPUstate),進(jìn)程表 (PCBTable), 就緒隊(duì)列
41、(ReadyState),等待隊(duì)列(BlockedState),運(yùn)行進(jìn)程(RunningState)。</p><p> Time是系統(tǒng)時(shí)間片。CPUstate應(yīng)包括程序計(jì)數(shù)器PC,累加器A、B,狀態(tài)寄存器F的值。PCBTable的每一項(xiàng)是一個(gè)進(jìn)程的進(jìn)程控制塊(PCB)。</p><p> Commander程序、Application程序是用下列CPU虛擬指令書寫的程序:</p
42、><p> #include <stdio.h> /*定義頭文件(本程序自帶的)*</p><p> #include <stdlib.h></p><p> #include <string.h></p><p> #include <math.h></p><p&g
43、t; typedef struct node /*進(jìn)程節(jié)點(diǎn)信息*/</p><p><b> {</b></p><p> char name[20]; /*進(jìn)程的名字*/</p><p> int prio; /*進(jìn)程的優(yōu)先級(jí)*/</p><p> int round; /*分配CPU的時(shí)
44、間片*/</p><p> int cputime; /*CPU執(zhí)行時(shí)間*/</p><p> int needtime; /*進(jìn)程執(zhí)行所需要的時(shí)間*/</p><p> char state; /*進(jìn)程的狀態(tài),W--就緒態(tài),R--執(zhí)行態(tài),F(xiàn)--完成態(tài)*/</p><p> int count; /*記錄執(zhí)行的次數(shù)
45、*/</p><p> struct node *next; /*鏈表指針*/</p><p><b> }PCB;</b></p><p> typedef struct Queue /*多級(jí)就緒隊(duì)列節(jié)點(diǎn)信息*/</p><p><b> {</b></p><p&
46、gt; PCB *LinkPCB; /*就緒隊(duì)列中的進(jìn)程隊(duì)列指針*/</p><p> int prio; /*本就緒隊(duì)列的優(yōu)先級(jí)*/</p><p> int round; /*本就緒隊(duì)列所分配的時(shí)間片*/</p><p> struct Queue *next; /*指向下一個(gè)就緒隊(duì)列的鏈表指針*/</p><p&g
47、t; }ReadyQueue;</p><p> PCB *run=NULL,*finish=NULL; /*定義三個(gè)隊(duì)列,就緒隊(duì)列,執(zhí)行隊(duì)列和完成隊(duì)列*/</p><p> ReadyQueue *Head = NULL; /*定義第一個(gè)就緒隊(duì)列*/</p><p> int num; /*進(jìn)程個(gè)數(shù)*/</p><p>
48、int ReadyNum; /*就緒隊(duì)列個(gè)數(shù)*/</p><p> void Output(); /*進(jìn)程信息輸出函數(shù)*/</p><p> void InsertFinish(PCB *in); /*將進(jìn)程插入到完成隊(duì)列尾部*/</p><p> void InsertPrio(ReadyQueue *in); /
49、*創(chuàng)建就緒隊(duì)列,規(guī)定優(yōu)先數(shù)越小,優(yōu)先級(jí)越低*/</p><p> void PrioCreate(); /*創(chuàng)建就緒隊(duì)列輸入函數(shù)*/</p><p> void GetFirst(ReadyQueue *queue); /*取得某一個(gè)就緒隊(duì)列中的隊(duì)頭進(jìn)程*/</p><p> void InsertLast(PCB *in,ReadyQu
50、eue *queue); /*將進(jìn)程插入到就緒隊(duì)列尾部*/</p><p> void ProcessCreate(); /*進(jìn)程創(chuàng)建函數(shù)*/</p><p> void RoundRun(ReadyQueue *timechip); /*時(shí)間片輪轉(zhuǎn)調(diào)度算法*/</p><p> void MultiDispatch(); /
51、*多級(jí)調(diào)度算法,每次執(zhí)行一個(gè)時(shí)間片*/</p><p><b> ?。?)命令解釋程序</b></p><p> 命令解釋程序從標(biāo)準(zhǔn)輸入重復(fù)讀入用戶命令,然后以消息形式發(fā)送給內(nèi)核。命令解釋程序處理的命令由設(shè)計(jì)者定義并實(shí)現(xiàn)。</p><p><b> ?。?)編譯器</b></p><p> 編譯
52、器把虛擬指令和虛擬系統(tǒng)調(diào)用編譯為可執(zhí)行字節(jié)碼??蓤?zhí)行字節(jié)碼由內(nèi)核解釋執(zhí)行。</p><p><b> 2.2課程設(shè)計(jì)任務(wù)</b></p><p> 1)設(shè)計(jì)進(jìn)程控制塊; </p><p> 2)設(shè)計(jì)優(yōu)先級(jí)對(duì)應(yīng)的時(shí)間片; </p><p> 3)實(shí)現(xiàn)高優(yōu)先級(jí)非搶占式調(diào)度算法; </p><p&g
53、t; 4)實(shí)現(xiàn)時(shí)間片輪轉(zhuǎn)調(diào)度算法; </p><p> 5)實(shí)現(xiàn)基于高優(yōu)先級(jí)的時(shí)間片輪轉(zhuǎn)算法。</p><p> 2.2.1課題目的 </p><p> 1) 理解進(jìn)程調(diào)度相關(guān)理論; </p><p> 2) 掌握時(shí)間片調(diào)度原理; </p><p> 3) 掌握高優(yōu)先級(jí)調(diào)度原理。</p>&l
54、t;p> 2.2.2課題內(nèi)容 </p><p> 1) 設(shè)計(jì)進(jìn)程控制塊; </p><p> 2) 設(shè)計(jì)多個(gè)進(jìn)程隊(duì)列; </p><p> 3) 設(shè)計(jì)多個(gè)進(jìn)程; </p><p> 4) 動(dòng)態(tài)生成時(shí)間片、執(zhí)行時(shí)間和優(yōu)先級(jí);</p><p> 5) 設(shè)計(jì)基于時(shí)間片的多優(yōu)先級(jí)調(diào)度算法; </p>
55、;<p> 2.2.3測(cè)試要求 </p><p> 要求輸出進(jìn)程名以及與其對(duì)應(yīng)的優(yōu)先級(jí)、輪數(shù)、CPU時(shí)間、需要時(shí)間、進(jìn)程狀態(tài)、計(jì)數(shù)器,可執(zhí)行文件的輸出格式如下:</p><p> 進(jìn)程名 優(yōu)先級(jí) 輪數(shù) CPU時(shí)間 需要時(shí)間 進(jìn)程狀態(tài) 計(jì)數(shù)器</p><p> Jc2 2 8 0 2
56、 W 0</p><p> Jc1 1 8 0 1 R 0</p><p><b> 2.3課程設(shè)計(jì)要求</b></p><p> 1) 編寫程序完成課題內(nèi)容; </p><p> 2) 在課程設(shè)計(jì)報(bào)告中畫出基于時(shí)
57、間片的高優(yōu)先級(jí)調(diào)度函數(shù)流程圖; </p><p> 3) 撰寫課程設(shè)計(jì)報(bào)告,并參加答辯。 </p><p><b> 2.4課程設(shè)計(jì)思想</b></p><p> FCFS、SJF和優(yōu)先級(jí)調(diào)度算法僅對(duì)某一類作業(yè)有利,相比之下,它能全面滿足不同類型作業(yè)的需求,較好實(shí)現(xiàn)公平性與資源利用率之間的平衡。對(duì)交互型作業(yè),由于通常較短,這些作業(yè)在第一隊(duì)
58、列規(guī)定的時(shí)間片內(nèi)完成,可使用戶感到滿意;對(duì)短批作業(yè),開始時(shí)在第一隊(duì)列中執(zhí)行一個(gè)時(shí)間片就可完成,便可與交互型作業(yè)一樣獲得快速晌應(yīng),否則通常也僅需在第二、第三隊(duì)列中各執(zhí)行一個(gè)時(shí)間片即可完成,其周轉(zhuǎn)時(shí)間仍較短;對(duì)長(zhǎng)批作業(yè),它們依次在第一至第n個(gè)隊(duì)列中輪番執(zhí)行,不必?fù)?dān)心長(zhǎng)時(shí)間得不到處理。</p><p> 不要隨便加空行?。?!</p><p><b> 3概要設(shè)計(jì)</b&g
59、t;</p><p> 3.1課程設(shè)計(jì)所用方法及其原理</p><p><b> 3.1.1優(yōu)先級(jí)</b></p><p> 優(yōu)先級(jí)[4]體現(xiàn)了進(jìn)程的重要程度或緊迫程度,在大多數(shù)現(xiàn)代操作系統(tǒng)中,都采用了優(yōu)先級(jí)調(diào)度策略。優(yōu)先級(jí)從小到大(如0-127),0 優(yōu)先級(jí)最低,127 最高。在本實(shí)驗(yàn)中,要求優(yōu)先級(jí)為0-8。 </p>&
60、lt;p> 3.1.2基于時(shí)間片調(diào)度 </p><p> 將所有的就緒進(jìn)程按照先來先服務(wù)[5]的原則,排成一個(gè)隊(duì)列,每次調(diào)度時(shí),將CPU 分配給隊(duì)首進(jìn)程,并令其執(zhí)行一個(gè)時(shí)間片。當(dāng)時(shí)間片用完時(shí),由一個(gè)計(jì)時(shí)器發(fā)出時(shí)鐘中斷請(qǐng)求,調(diào)度程序把此進(jìn)程終止,把該進(jìn)程放到隊(duì)尾。 </p><p> 在調(diào)度過程中,需要通過時(shí)間函數(shù)檢測(cè)進(jìn)程的執(zhí)行時(shí)間,當(dāng)該進(jìn)程執(zhí)行時(shí)間≥時(shí)間片大小時(shí),進(jìn)行調(diào)度。 &
61、lt;/p><p> 3.1.3高優(yōu)先級(jí)調(diào)度 </p><p> 優(yōu)先級(jí)高的進(jìn)程優(yōu)先得到cpu,等該進(jìn)程執(zhí)行完畢后,另外的進(jìn)程才能執(zhí)行。 </p><p> 3.1.4基于時(shí)間片的高優(yōu)先級(jí)調(diào)度 </p><p> 時(shí)間片和優(yōu)先級(jí)調(diào)度的結(jié)合,在系統(tǒng)中,每個(gè)優(yōu)先級(jí)對(duì)應(yīng)一個(gè)就緒隊(duì)列,在每個(gè)就緒隊(duì)列內(nèi),采用時(shí)間片調(diào)度。當(dāng)高優(yōu)先級(jí)進(jìn)程隊(duì)列調(diào)度完成后
62、,才能轉(zhuǎn)入更低優(yōu)先級(jí)的就緒隊(duì)列調(diào)度。</p><p> 不要隨便加空行?。?!</p><p> 3.2 主要的數(shù)據(jù)結(jié)構(gòu)</p><p> 表3.1 PCB的數(shù)據(jù)結(jié)構(gòu)</p><p> 不要隨便加空行?。。?lt;/p><p> 3.3課題設(shè)計(jì)的流程圖</p><p> 圖3.1 主要數(shù)據(jù)
63、流程圖</p><p><b> 4詳細(xì)設(shè)計(jì)</b></p><p> 4.1設(shè)計(jì)進(jìn)程控制塊</p><p> 為了描述和控制進(jìn)程的運(yùn)行,系統(tǒng)為每個(gè)進(jìn)程定義了一個(gè)數(shù)據(jù)結(jié)構(gòu),即進(jìn)程控制塊【6】他的作用是使一個(gè)在多道程序環(huán)境下不能獨(dú)立運(yùn)行的程序(含數(shù)據(jù)),成為一個(gè)能獨(dú)立運(yùn)行的基本單位,一個(gè)能與其它進(jìn)程并發(fā)執(zhí)行的進(jìn)程。在進(jìn)程的整個(gè)生命周期中,系
64、統(tǒng)總是通過PCB而不是任何別的什么而感知到該進(jìn)程的存在的。PCB是進(jìn)程存在的唯一標(biāo)志。</p><p> 4.1.1進(jìn)程控制塊的內(nèi)容</p><p> 1)進(jìn)程標(biāo)識(shí)符[7]:進(jìn)程標(biāo)識(shí)符用于惟一的標(biāo)識(shí)一個(gè)進(jìn)程。一個(gè)進(jìn)程通常有兩種標(biāo)識(shí)符:內(nèi)部標(biāo)識(shí)符和外部標(biāo)識(shí)符。內(nèi)部標(biāo)識(shí)符指在所有的操作系統(tǒng)中,都為每一個(gè)進(jìn)程賦予了一個(gè)惟一的標(biāo)識(shí)符,他通常是一個(gè)進(jìn)程的符號(hào)。設(shè)置內(nèi)部標(biāo)識(shí)符主要是為了方便系統(tǒng)使用
65、。外部標(biāo)識(shí)符是由創(chuàng)建者提供,通常是由字母、數(shù)字組成,往往是由用戶(進(jìn)程)在訪問該進(jìn)程時(shí)使用。為了描述進(jìn)程的家族關(guān)系,還應(yīng)設(shè)置父進(jìn)程標(biāo)識(shí)和子進(jìn)程標(biāo)識(shí)。此外,還可設(shè)置用戶標(biāo)識(shí),以指示擁有該進(jìn)程的用戶。</p><p> 2)處理機(jī)狀態(tài)[8]:主要是由處理機(jī)的各種寄存器中的內(nèi)容組成。處理機(jī)在運(yùn)行時(shí),許多信息都放在寄存器中。當(dāng)處理機(jī)被中斷時(shí),所有這些信息都必須保存在PCB中,以便在該進(jìn)程重新執(zhí)行時(shí),能從斷電繼續(xù)執(zhí)行。這
66、些寄存器包括:(1)通用寄存器,又稱為用戶可視寄存器,它們是用戶進(jìn)程可以訪問的,用于在暫存信息,在大多數(shù)處理機(jī)中,有8~32個(gè)通用寄存器,在RISC結(jié)構(gòu)的計(jì)算機(jī)中科超過100個(gè);(2)指令計(jì)數(shù)器,其中存放訪問的下一條指令的地址;(3)程序狀態(tài)字PSW,其中含有狀態(tài)信息,如條形碼、執(zhí)行方式中斷屏蔽標(biāo)志等 。(4)用戶棧指針,指每個(gè)用戶進(jìn)程都有一個(gè)或若干個(gè)與之相關(guān)的系統(tǒng)棧,用于存放過過程和系統(tǒng)調(diào)用參數(shù)及調(diào)用地址,棧指針指向該棧的棧頂。<
67、;/p><p> 3)進(jìn)程調(diào)度信息[9]:在PCB中還存放一些與進(jìn)程調(diào)度和進(jìn)程對(duì)換有關(guān)的信息,包括:(1)進(jìn)程狀態(tài),指明進(jìn)程的當(dāng)前狀態(tài),作為進(jìn)程調(diào)度和兌換的依據(jù);(2)進(jìn)程優(yōu)先級(jí),用于描述進(jìn)程使用處理機(jī)的優(yōu)先級(jí)別的一個(gè)整數(shù),優(yōu)先級(jí)高的進(jìn)程應(yīng)優(yōu)先獲得處理機(jī);(3)進(jìn)程調(diào)度所需的其它信息,他們與所采用的進(jìn)程調(diào)度算法有關(guān),比如,進(jìn)程已等待CPU的時(shí)間總和、進(jìn)程已執(zhí)行的時(shí)間總和等;(4)事件,指進(jìn)程由執(zhí)行狀態(tài)改為阻塞狀態(tài)所
68、等待發(fā)生的事件,即阻塞原因。</p><p> 4)進(jìn)程控制信息:進(jìn)程控制信息包括程序和數(shù)據(jù)地址的地址,只進(jìn)程的程序和數(shù)據(jù)所在的內(nèi)存或外存底(首)址,以便再調(diào)度到該進(jìn)程執(zhí)行時(shí),能從CPU中找到其程序和數(shù)據(jù);進(jìn)程同步和通信機(jī)制,指實(shí)現(xiàn)進(jìn)程同步和進(jìn)程通信時(shí)必須的機(jī)制,如信息隊(duì)列指針、信號(hào)量等,他們可能全部或的放在PCB中;資源清單,即一張列出了除CPU以外的、進(jìn)程所需的全部資源即已經(jīng)分配到該進(jìn)程的資源清單;鏈接指針
69、,它給出了本進(jìn)程(PCB)所在隊(duì)列中的下一個(gè)進(jìn)程的PCB的首地址。</p><p> 4.1.2 PCB的信息</p><p> 進(jìn)程名字name、進(jìn)程的優(yōu)先級(jí)prio、分配CPU的時(shí)間片round、進(jìn)程執(zhí)行所需要的時(shí)間needtime、進(jìn)程的狀態(tài)state、記錄執(zhí)行的次數(shù)count、鏈表指針next。</p><p> 4.1.3進(jìn)程控制塊的格式</p
70、><p> 圖4.1進(jìn)程控制塊格式</p><p> 其中,進(jìn)程名——作為進(jìn)程的標(biāo)識(shí),如Q1、Q2等。</p><p> 指針——進(jìn)程按順序排成循環(huán)鏈隊(duì)列,用指針指出下一個(gè)進(jìn)程的進(jìn)程控制塊的首地址,最后一個(gè)進(jìn)程的指針指出第一個(gè)進(jìn)程的進(jìn)程控制塊首地址。</p><p> 要求運(yùn)行時(shí)間——假設(shè)進(jìn)程需要運(yùn)行的單位時(shí)間數(shù)。</p>
71、<p> 已運(yùn)行時(shí)間——假設(shè)進(jìn)程已經(jīng)運(yùn)行的單位時(shí)間數(shù),初始值為“0”。</p><p> 狀態(tài)——有兩種狀態(tài),“就緒”和“結(jié)束”,初始狀態(tài)都為“就緒”,用“W”表示。當(dāng)一個(gè)進(jìn)程運(yùn)行結(jié)束后,它的狀態(tài)為“結(jié)束”,用“F”表示,當(dāng)進(jìn)程運(yùn)行時(shí),它的狀態(tài)為“執(zhí)行”,用“R”表示。</p><p> 4.2進(jìn)程的三種基本狀態(tài)</p><p> 1)就緒(rea
72、dy)狀態(tài)</p><p> 分配到除CPU以外所有必要的資源以后,只要在獲得CPU,便可立即執(zhí)行,進(jìn)程這時(shí)的狀態(tài)稱為就緒狀態(tài)。在一個(gè)系統(tǒng)中處于就緒狀態(tài)的進(jìn)程可能有多個(gè),通常將它們排成一個(gè)隊(duì)列,稱為就緒隊(duì)列。</p><p><b> 2)執(zhí)行狀態(tài)</b></p><p> 進(jìn)程已獲得CPU,其程序正在執(zhí)行。在單機(jī)處理系統(tǒng)中,只有一個(gè)進(jìn)程
73、處于執(zhí)行狀態(tài);在多處理機(jī)系統(tǒng)中,則有多個(gè)進(jìn)程處于執(zhí)行狀態(tài)。</p><p><b> 3)阻塞狀態(tài)</b></p><p> 正在執(zhí)行的進(jìn)程由于發(fā)生某個(gè)時(shí)間而暫時(shí)無法繼續(xù)執(zhí)行時(shí),便放棄處理機(jī)而處于暫停狀態(tài),亦即進(jìn)程的執(zhí)行受到阻塞,把這種暫停狀態(tài)稱為阻塞狀態(tài),有時(shí)也稱為等待狀態(tài)或者封鎖狀態(tài)。致使進(jìn)程阻塞的典型事件有:強(qiáng)求I/O,申請(qǐng)緩存空間等。通常將這種處于阻塞狀態(tài)
74、的進(jìn)程也排成一個(gè)隊(duì)列。有的系統(tǒng)則根據(jù)阻塞原因的不同而把處于阻塞狀態(tài)的進(jìn)程拍成多個(gè)隊(duì)列。</p><p> 處于就緒狀態(tài)的進(jìn)程,在調(diào)度程序?yàn)橹峙涞牧颂幚頇C(jī)之后,該進(jìn)程便可執(zhí)行,相應(yīng)的,它就由就緒狀態(tài)轉(zhuǎn)變?yōu)閳?zhí)行狀態(tài)。正在執(zhí)行的進(jìn)程也成為當(dāng)前進(jìn)程,如果因分配給它的時(shí)間片已完而被暫停執(zhí)行時(shí),該進(jìn)程便由執(zhí)行狀態(tài)又回復(fù)到就緒狀態(tài);如果因發(fā)生某件事而使進(jìn)程的執(zhí)行受阻(例如,進(jìn)程請(qǐng)求訪問某臨界資源,而該資源正在被其他進(jìn)程訪問
75、時(shí)),使之無法繼續(xù)執(zhí)行,該進(jìn)程將由執(zhí)行狀態(tài)轉(zhuǎn)變?yōu)樽枞麪顟B(tài)。如圖,表示了進(jìn)程三種基本狀態(tài)以及各狀態(tài)之間的轉(zhuǎn)換關(guān)系。</p><p><b> 4.3優(yōu)先級(jí)</b></p><p> 4.3.1 優(yōu)先級(jí)簡(jiǎn)介</p><p> 是指在進(jìn)程創(chuàng)建時(shí)先確定一個(gè)初始優(yōu)先數(shù), 以后在進(jìn)程運(yùn)行中隨著進(jìn)程特性的改變不斷修改優(yōu)先數(shù),這樣,由于開始優(yōu)先數(shù)很低而得
76、不到CPU的進(jìn)程,就能因?yàn)榈却龝r(shí)間的增長(zhǎng)而優(yōu)先數(shù)變?yōu)樽罡叨玫紺PU運(yùn)行。</p><p> 4.3.2優(yōu)先權(quán)調(diào)度算法的類型 </p><p> 1)非搶占式優(yōu)先權(quán)算法:在這種方式下,系統(tǒng)一旦把處理機(jī)分配給就緒隊(duì)列中優(yōu)先權(quán)最高的進(jìn)程后,該進(jìn)程便一直執(zhí)行下去,直至完成; 或因發(fā)生某事件使該進(jìn)程放棄處理機(jī)時(shí),系統(tǒng)方可再將處理機(jī)重新分配給另一優(yōu)先權(quán)最高的進(jìn)程。這種調(diào)度算法主要用于批處理系
77、統(tǒng)中;也可某些對(duì)實(shí)時(shí)性要求不嚴(yán)的實(shí)時(shí)系統(tǒng)中。 </p><p> 2)搶占式優(yōu)先權(quán)調(diào)度算法:系統(tǒng)同樣把處理機(jī)分配給優(yōu)先權(quán)最高的進(jìn)程,使之執(zhí)行。但在其執(zhí)行期間,只要又出現(xiàn)了另一個(gè)其優(yōu)先權(quán)更高的進(jìn)程,進(jìn)程調(diào)度程序就立即停止當(dāng)前進(jìn)程(原優(yōu)先權(quán)最高的進(jìn)程)的執(zhí)行,重新將處理機(jī)分配給新到的優(yōu)先權(quán)最高的進(jìn)程。這種搶占式的優(yōu)先權(quán)調(diào)度算法,能更好地滿足緊迫作業(yè)的要求,常用于要求比較嚴(yán)格的實(shí)時(shí)系統(tǒng)中, 以及對(duì)性能要求較高的批
78、處理和分時(shí)系統(tǒng)中。 </p><p> 4.3.3優(yōu)先權(quán)的類型 </p><p> 1)靜態(tài)優(yōu)先權(quán)[10]:靜態(tài)優(yōu)先權(quán)是在創(chuàng)建進(jìn)程時(shí)確定的,且在進(jìn)程的整個(gè)運(yùn)行期間保持不變。一般地,優(yōu)先權(quán)是利用某一范圍內(nèi)的一個(gè)整數(shù)來表示的,例如,0~7,又把該整數(shù)稱為優(yōu)先數(shù)。只是具體用法各異:有的系統(tǒng)用“0”表示最高優(yōu)先權(quán),當(dāng)數(shù)值愈大時(shí),其優(yōu)先權(quán)愈低;而有的系統(tǒng)恰恰相反。確定進(jìn)程優(yōu)先權(quán)的依據(jù)有三
79、個(gè)方面:(1)進(jìn)程類型(系統(tǒng)進(jìn)程/用戶進(jìn)程)(2)進(jìn)程對(duì)資源的需求(需求量的大小)(3)用戶要求(用戶進(jìn)程緊迫程度) </p><p> 2)動(dòng)態(tài)優(yōu)先權(quán):動(dòng)態(tài)優(yōu)先權(quán)是指在創(chuàng)建進(jìn)程時(shí)所賦予的優(yōu)先權(quán),可以隨進(jìn)程的推進(jìn)或隨其等待時(shí)間的增加而改變的,以便獲得更好的調(diào)度性能。例如,我們可以規(guī)定,在就緒隊(duì)列中的進(jìn)程,隨其等待時(shí)間的增長(zhǎng),其優(yōu)先權(quán)以速率a提高。若所有的進(jìn)程都具有相同的優(yōu)先權(quán)初值,則顯然是最先進(jìn)入就緒隊(duì)列的
80、進(jìn)程,將因其動(dòng)態(tài)優(yōu)先權(quán)變得最高而優(yōu)先獲得處理機(jī),此即FCFS算法。 </p><p> 4.3.4 優(yōu)先權(quán)的變化規(guī)律</p><p> 由于等待時(shí)間與服務(wù)時(shí)間之和,就是系統(tǒng)對(duì)該作業(yè)的響應(yīng)時(shí)間,故該優(yōu)先權(quán)又相當(dāng)于響應(yīng)比RP。</p><p> 4.3.5優(yōu)先級(jí)的算法</p><p> 1)設(shè)定系統(tǒng)中有五個(gè)進(jìn)程,每一個(gè)進(jìn)程用一個(gè)進(jìn)程控制
81、塊( PCB)表示,進(jìn)程隊(duì)列采用鏈表數(shù)據(jù)結(jié)構(gòu)。</p><p> 2)進(jìn)程控制塊包含如下信息:進(jìn)程名、優(yōu)先數(shù)、需要運(yùn)行時(shí)間、已用CPU時(shí)間、進(jìn)程狀態(tài) 等等等。</p><p> 3)在每次運(yùn)行設(shè)計(jì)的處理調(diào)度程序之前,由終端輸入五個(gè)進(jìn)程的“優(yōu)先數(shù)”和“要求運(yùn)行時(shí)間”。</p><p> 4)進(jìn)程的優(yōu)先數(shù)及需要的運(yùn)行時(shí)間人為地指定.進(jìn)程的運(yùn)行時(shí)間以時(shí)間片為單位進(jìn)行
82、計(jì)算。</p><p> 5)采用優(yōu)先權(quán)調(diào)度算法,將五個(gè)進(jìn)程按給定的優(yōu)先數(shù)從大到小連成就緒隊(duì)列。用頭指針指出隊(duì)列首進(jìn)程,隊(duì)列采用鏈表結(jié)構(gòu)。</p><p> 6)處理機(jī)調(diào)度總是選隊(duì)列首進(jìn)程運(yùn)行。采用動(dòng)態(tài)優(yōu)先數(shù)辦法,進(jìn)程每運(yùn)行一次優(yōu)先數(shù)“1”,同時(shí)將已運(yùn)行時(shí)間加“1”。</p><p> 7)進(jìn)程運(yùn)行一次后,若要求運(yùn)行時(shí)間不等于已運(yùn)行時(shí)間,則再將它加入就緒隊(duì)列;
83、否則將其狀態(tài)置為“結(jié)束”,且退出就緒隊(duì)列。</p><p> 8)“就緒”狀態(tài)的進(jìn)程隊(duì)列不為空,則重復(fù)上面6,7步驟,直到所有進(jìn)程都成為“結(jié)束”狀態(tài)。</p><p> 9)在設(shè)計(jì)的程序中有輸入語(yǔ)句,輸入5個(gè)進(jìn)程的“優(yōu)先數(shù)”和“要求運(yùn)行時(shí)間”,也有顯示或打印語(yǔ)句,能顯示或打印每次被選中進(jìn)程的進(jìn)程名、運(yùn)行一次后隊(duì)列的變化,以及結(jié)束進(jìn)程的進(jìn)程名。</p><p>
84、 10)最后,為五個(gè)進(jìn)程任意確定一組“優(yōu)先數(shù)”和“要求運(yùn)行時(shí)間”,運(yùn)行并調(diào)試所設(shè)計(jì)的程序,顯示或打印出逐次被選中進(jìn)程的進(jìn)程名及其進(jìn)程控制塊的動(dòng)態(tài)變化過程。</p><p> 4.3.6最高優(yōu)先級(jí)優(yōu)先調(diào)度算法流程圖</p><p> 圖4.3最高優(yōu)先級(jí)優(yōu)先調(diào)度算法流程圖</p><p> 4.4 時(shí)間片輪轉(zhuǎn)算法</p><p> 4.4
85、.1時(shí)間片輪轉(zhuǎn)法的基本原理</p><p> 系統(tǒng)將所有的就緒進(jìn)程按先來先服務(wù)的原則排成一個(gè)隊(duì)列,每次調(diào)度時(shí),把CPU分配給隊(duì)首進(jìn)程,并令其執(zhí)行一個(gè)時(shí)間片。此實(shí)驗(yàn)中時(shí)間片的單位定義為100ms。當(dāng)執(zhí)行的時(shí)間片用完時(shí),由一個(gè)計(jì)時(shí)器發(fā)出時(shí)鐘中斷請(qǐng)求,調(diào)度程序便據(jù)此信號(hào)來停止該進(jìn)程的執(zhí)行,并將它送往就緒隊(duì)列的末尾;然后,再把處理機(jī)分配給就緒隊(duì)列中的對(duì)手進(jìn)程,同時(shí)也讓它執(zhí)行一個(gè)時(shí)間片。這樣就可以保證就緒隊(duì)列中的所有進(jìn)程
86、在一給定的時(shí)間內(nèi)均能獲得一時(shí)間片的處理機(jī)執(zhí)行時(shí)間。換言之,系統(tǒng)能在給定的時(shí)間內(nèi)響應(yīng)所有用戶的請(qǐng)求。</p><p> 4.4.2 時(shí)間片輪轉(zhuǎn)算法描述</p><p> 1)設(shè)系統(tǒng)有10個(gè)進(jìn)程,每個(gè)進(jìn)程用一個(gè)進(jìn)程控制塊PCB來代表。</p><p> 2)為每個(gè)進(jìn)程任意確定一個(gè)要求運(yùn)行時(shí)間。</p><p> 3)按照進(jìn)程輸入的先后順序
87、排成一個(gè)隊(duì)列。再設(shè)一個(gè)隊(duì)首指針指向第一個(gè)到達(dá)進(jìn)程的首址。</p><p> 4)執(zhí)行處理機(jī)調(diào)度時(shí),開始選擇隊(duì)首的第一個(gè)進(jìn)程運(yùn)行。另外,再設(shè)一個(gè)當(dāng)前運(yùn)行進(jìn)程的指針,指向當(dāng)前正在運(yùn)行的進(jìn)程。</p><p> 5)考慮到代碼的可重用性, 輪轉(zhuǎn)法調(diào)度程序和最高優(yōu)先級(jí)優(yōu)先調(diào)度是調(diào)用同一個(gè)??爝M(jìn)行輸出</p><p> 注:由于輪轉(zhuǎn)法調(diào)度程序和最高優(yōu)先級(jí)優(yōu)先調(diào)度是調(diào)用同
88、一個(gè)??爝M(jìn)行輸出,所以在時(shí)間輪轉(zhuǎn)法調(diào)度算法的進(jìn)程中,依然顯示上述所定義的優(yōu)先級(jí)數(shù)。</p><p> 6)進(jìn)程運(yùn)行一次后,以后的調(diào)度則將當(dāng)前指針依此下移一個(gè)位置,指向下一個(gè)進(jìn)程,即調(diào)整當(dāng)前運(yùn)行指針指向該進(jìn)程的鏈接指針?biāo)高M(jìn)程,以指示應(yīng)運(yùn)行進(jìn)程。同時(shí)還應(yīng)采用計(jì)數(shù)器來判斷該進(jìn)程的要求運(yùn)行時(shí)間是否等于已運(yùn)行時(shí)間。若不等,則等待下一輪的運(yùn)行,但此時(shí)該進(jìn)程應(yīng)插到代執(zhí)行隊(duì)列的尾部,否則將該進(jìn)程的狀態(tài)置為完成態(tài)F,并退出執(zhí)行
89、隊(duì)列進(jìn)入完成隊(duì)列。</p><p> 7)若就緒隊(duì)列不空,則重復(fù)上述的5)和6)步驟直到所有的進(jìn)程都運(yùn)行完為止。</p><p> 8)在所設(shè)計(jì)的調(diào)度程序中,包含顯示或打印語(yǔ)句。顯示或打印每次選中的進(jìn)程的名稱、所需運(yùn)行的時(shí)間、輪數(shù)、cpu時(shí)間、運(yùn)行一次后進(jìn)程所處的狀態(tài)以及計(jì)數(shù)器的變化情況。</p><p><b> 4.4.3 要求</b>
90、;</p><p> 1)在開始頁(yè)面用戶可輸入進(jìn)程名,給出時(shí)間片的大小和每個(gè)進(jìn)程的服務(wù)時(shí)間。 </p><p> 2)每運(yùn)行一次,給進(jìn)程的服務(wù)時(shí)間減去一個(gè)時(shí)間片大小排到隊(duì)尾,顯示一個(gè)時(shí)間片后的新隊(duì)列。</p><p> 3)直到所有的進(jìn)程都服務(wù)完。</p><p> 4.4.4 時(shí)間片的工作流程</p><p&g
91、t; 時(shí)間片輪轉(zhuǎn)的原則是系統(tǒng)將所有的就緒進(jìn)程按照先來先服務(wù)的原則排成一個(gè)隊(duì)列,每次調(diào)度時(shí),把CPU分配對(duì)手進(jìn)程,并令其執(zhí)行一個(gè)時(shí)間片,當(dāng)執(zhí)行完時(shí),有一個(gè)計(jì)時(shí)器發(fā)出時(shí)鐘中斷請(qǐng)求,該進(jìn)程停止,并被送到就緒隊(duì)列的末尾,然后再把處理機(jī)分配就緒隊(duì)列的隊(duì)列進(jìn)程,同時(shí)也讓它執(zhí)行一個(gè)時(shí)間片。</p><p> 根據(jù)時(shí)間片輪轉(zhuǎn)調(diào)度算法并結(jié)合本實(shí)驗(yàn),分析進(jìn)程運(yùn)行情況,得到如下圖所示的時(shí)間軸:</p><p&g
92、t; 不要隨便加空行!??!</p><p> 圖4.4進(jìn)程運(yùn)行情況</p><p> 不要隨便加空行!??!</p><p> 4.4.5 時(shí)間片輪轉(zhuǎn)調(diào)度流程圖</p><p> 圖4.5時(shí)間片輪轉(zhuǎn)法調(diào)度算法流程圖</p><p> 4.5 多級(jí)反饋隊(duì)列調(diào)度算法</p><p> 多
93、級(jí)反饋隊(duì)列調(diào)度算法是一種CPU處理機(jī)調(diào)度算法,UNIX操作系統(tǒng)采取的便是這種調(diào)度算法。多級(jí)反饋隊(duì)列調(diào)度算法不必事先知道各種進(jìn)程所需的執(zhí)行時(shí)間,而且還可以滿足各類進(jìn)程的需要,因而它是目前被公認(rèn)的一種較好的進(jìn)程調(diào)度算法。</p><p> 4.5.1 多級(jí)反饋隊(duì)列調(diào)度算法原理</p><p> 1)設(shè)有K個(gè)隊(duì)列,其中各個(gè)隊(duì)列對(duì)于處理機(jī)的優(yōu)先級(jí)是不一樣的,也就是說位于各個(gè)隊(duì)列中的作業(yè)(進(jìn)程)
94、的優(yōu)先級(jí)也是不一樣的。一般來說,第一個(gè)隊(duì)列的優(yōu)先級(jí) 最高,第二個(gè)隊(duì)列次之,其余各隊(duì)列的優(yōu)先級(jí)逐個(gè)降低。</p><p> 2)對(duì)于某個(gè)特定的隊(duì)列來說,里面是遵循時(shí)間片輪轉(zhuǎn)法。也就是說,位于隊(duì)列K中有N個(gè)作業(yè),它們的運(yùn)行時(shí)間是通過K這個(gè)隊(duì)列所設(shè)定的時(shí)間片來確定的(為了便于理解,我們也可以認(rèn)為特定隊(duì)列中的作業(yè)的優(yōu)先級(jí)是按照FCFS來調(diào)度的)。 </p><p> 3)各個(gè)隊(duì)列的時(shí)間片是一樣
95、的嗎?不一樣,這就是該算法設(shè)計(jì)的精妙之處。各個(gè)隊(duì)列的時(shí)間片是隨著優(yōu)先級(jí)的增加而減少的,也就是說,優(yōu)先級(jí)越高的隊(duì)列中它的時(shí)間片就越短。例如,第二個(gè)隊(duì)列的時(shí)間片要比第一個(gè)隊(duì)列的時(shí)間片要長(zhǎng)一倍,……,最后一個(gè)隊(duì)列(優(yōu)先級(jí)最低的隊(duì)列)的時(shí)間片一般很大。下圖是多級(jí)反饋隊(duì)列算法的示意。</p><p> 圖 4.6多級(jí)反饋隊(duì)列調(diào)度算法</p><p> 4.5.2 多級(jí)反饋隊(duì)列調(diào)度算法描述<
96、/p><p> 1)設(shè)置多個(gè)就緒隊(duì)列,并給隊(duì)列賦予不同的優(yōu)先級(jí)數(shù),第一個(gè)最高,依次遞減。</p><p> 2)賦予各個(gè)隊(duì)列中進(jìn)程執(zhí)行時(shí)間片的大小,優(yōu)先級(jí)越高的隊(duì)列,時(shí)間片越小。</p><p> 3)當(dāng)一個(gè)新進(jìn)程進(jìn)入內(nèi)存后,首先將其放入一個(gè)對(duì)列末尾,如果在一個(gè)時(shí)間片結(jié)束時(shí)尚未完成,將其轉(zhuǎn)入第二隊(duì)列末尾。</p><p> 4)當(dāng)一個(gè)進(jìn)程
97、從一個(gè)對(duì)列移至第n個(gè)隊(duì)列后,便在第n個(gè)隊(duì)列中采用時(shí)間片輪轉(zhuǎn)執(zhí)行完。</p><p> 5)僅當(dāng)時(shí)間片空閑時(shí),才調(diào)度第二個(gè)隊(duì)列中的進(jìn)程。(1~i-1)空閑時(shí),才調(diào)度i,如果處理機(jī)正在第i隊(duì)列中運(yùn)行,又有新進(jìn)程進(jìn)入優(yōu)先權(quán)較高的隊(duì)列,則新進(jìn)程搶占處理機(jī),將正在運(yùn)行的進(jìn)程放入第i隊(duì)列隊(duì)尾,將處理機(jī)分給新進(jìn)程。</p><p> 4.5.3 多級(jí)反饋隊(duì)列調(diào)度算法的性能</p>&l
98、t;p> 多級(jí)反饋隊(duì)列調(diào)度算法具有較好的性能,能很好地滿足各種類型用戶的需要。</p><p> 1)終端型作業(yè)用戶。由于終端型作業(yè)用戶所提交的作業(yè)大多數(shù)屬于交互型作業(yè),作業(yè)通常較小,系統(tǒng)只要能使這些作業(yè)在第一隊(duì)列所規(guī)定的時(shí)間片內(nèi)完成,便可使終端型作業(yè)用戶都感到滿意。</p><p> 2)短批處理作業(yè)用戶。對(duì)于很短的批處理型作業(yè),開始時(shí)像終端型作業(yè)一樣,如果僅在第一對(duì)列中執(zhí)行
99、一個(gè)時(shí)間片即可完成,便可獲得與終端型作業(yè)一樣的響應(yīng)時(shí)間。對(duì)于稍長(zhǎng)的作業(yè),通常也只需在第二隊(duì)列和第三隊(duì)列各執(zhí)行一個(gè)時(shí)間片即可完成,其周轉(zhuǎn)時(shí)間仍然較短。</p><p> 3)長(zhǎng)批處理作業(yè)用戶。對(duì)于長(zhǎng)作業(yè)它將依次在第1,2,…,k個(gè)隊(duì)列中運(yùn)行,然后再按輪轉(zhuǎn)方式運(yùn)行,用戶不必?fù)?dān)心其作業(yè)長(zhǎng)期得不到處理。</p><p> 4.5.4 多級(jí)反饋隊(duì)列調(diào)度算法的運(yùn)作</p><p
100、> 1)現(xiàn)在有10個(gè)作業(yè)JC1,JC2,JC3,JC4,JC5,JC6,JC7,JC8,JC9,JC10,分別用A,B,C,D,E,F(xiàn),G,H,I,J表示,分別在0,1,2,3,4,5,6,7,8,9時(shí)刻到達(dá),所需要的CPU時(shí)間片分別為1,2,3,4,5,6,7,8,9,10。</p><p> ?。?)時(shí)刻0: A到達(dá)。運(yùn)行1個(gè)時(shí)間片 , 完成執(zhí)行,調(diào)入完成隊(duì)列,此時(shí)B到達(dá)。</p>&l
101、t;p> ?。?)時(shí)刻1: B到達(dá)。運(yùn)行了1個(gè)時(shí)間片后,C到達(dá)。</p><p> (3)時(shí)刻2: C到達(dá)。由于時(shí)間片仍然由B掌控,于是等待。B在運(yùn)行了1個(gè)時(shí)間片后,已經(jīng)完成2個(gè)時(shí)間片的限制,加入完成隊(duì)列隊(duì)尾,現(xiàn)在處理機(jī)分配給C。</p><p> ?。?)時(shí)刻3 :D到達(dá)。由于時(shí)間片仍然由C掌控,于是等待。C在運(yùn)行了1個(gè)時(shí)間片后,E到達(dá)。</p><p>
102、 (5)時(shí)刻4 :E到達(dá)。由于時(shí)間片仍然由C掌控,于是等待。C在運(yùn)行了1個(gè)時(shí)間片后,時(shí)間片用完,置于等待,處理機(jī)分配給D,F(xiàn)到達(dá)。</p><p> ?。?)時(shí)刻5 :F到達(dá)。由于時(shí)間片由D掌控,于是等待。D在運(yùn)行了1個(gè)時(shí)間片后,G到達(dá)。</p><p> ?。?)時(shí)刻6: G到達(dá)。由于時(shí)間片由D掌控,于是等待。D在運(yùn)行了1個(gè)時(shí)間片后,時(shí)間片用完,置于等待,處理機(jī)分配給E,H到達(dá)。<
103、;/p><p> (8)時(shí)刻7: H到達(dá)。由于時(shí)間片由E掌控,于是等待。E在運(yùn)行了1個(gè)時(shí)間片后,I到達(dá)。</p><p> ?。?)時(shí)刻8 :I到達(dá)。由于時(shí)間片由E掌控,于是等待。E在運(yùn)行了1個(gè)時(shí)間片后,時(shí)間片用完,置于等待,處理機(jī)分配給F,J到達(dá)。</p><p> ?。?0)時(shí)刻9 :J到達(dá)。由于時(shí)間片由F掌控,于是等待。F在運(yùn)行了2個(gè)時(shí)間片后,時(shí)間片用完,置于等
104、待,處理機(jī)分配給C。</p><p> ?。?1)時(shí)刻11。C運(yùn)行了1個(gè)時(shí)間片后,完成執(zhí)行,調(diào)入完成隊(duì)列隊(duì)尾,處理機(jī)分配給G。</p><p> ?。?2)時(shí)刻12。G運(yùn)行了2個(gè)時(shí)間片后,時(shí)間片用完,于是等待,處理機(jī)分配給H。</p><p> ?。?3)時(shí)刻14。H運(yùn)行了2個(gè)時(shí)間片后,時(shí)間片用完,于是等待,處理機(jī)分配給D。</p><p>
105、 ?。?4)時(shí)刻16。D運(yùn)行了2個(gè)時(shí)間片后,完成執(zhí)行,調(diào)入完成隊(duì)列隊(duì)尾,處理機(jī)分配給I。</p><p> ?。?5)時(shí)刻18。I運(yùn)行了2個(gè)時(shí)間片后,時(shí)間片用完,于是等待,處理機(jī)分配給J。</p><p> ?。?6)時(shí)刻20。J運(yùn)行了2個(gè)時(shí)間片后,時(shí)間片用完,于是等待,處理機(jī)分配給E。</p><p> ?。?7)時(shí)刻22。E運(yùn)行了2個(gè)時(shí)間片后,時(shí)間片用完,于是等
106、待,處理機(jī)分配給F。</p><p> ?。?8)時(shí)刻24。F運(yùn)行了2個(gè)時(shí)間片后,時(shí)間片用完,于是等待,處理機(jī)分配給G。</p><p> (19)時(shí)刻26。G運(yùn)行了2個(gè)時(shí)間片后,時(shí)間片用完,于是等待,處理機(jī)分配給H。</p><p> (20)時(shí)刻28。H運(yùn)行了2個(gè)時(shí)間片后,時(shí)間片用完,于是等待,處理機(jī)分配給I。</p><p> (
107、21)時(shí)刻30。I運(yùn)行了2個(gè)時(shí)間片后,時(shí)間片用完,于是等待,處理機(jī)分配給J。</p><p> (22)時(shí)刻32。J運(yùn)行了2個(gè)時(shí)間片后,時(shí)間片用完,于是等待,處理機(jī)分配給E。</p><p> (23)時(shí)刻34。E運(yùn)行了1個(gè)時(shí)間片后,執(zhí)行完成,調(diào)入完成隊(duì)列隊(duì)尾,處理機(jī)分配給F。</p><p> (24)時(shí)刻35。F運(yùn)行了2個(gè)時(shí)間片后,執(zhí)行完成,調(diào)入完成隊(duì)列隊(duì)
108、尾,處理機(jī)分配給G。</p><p> (25)時(shí)刻37。G運(yùn)行了2個(gè)時(shí)間片后,時(shí)間片用完,于是等待,處理機(jī)分配給H。</p><p> (26)時(shí)刻39。H運(yùn)行了2個(gè)時(shí)間片后,時(shí)間片用完,于是等待,處理機(jī)分配給I。</p><p> (27)時(shí)刻41。I運(yùn)行了2個(gè)時(shí)間片后,時(shí)間片用完,于是等待,處理機(jī)分配給J。</p><p> (
109、28)時(shí)刻43。J運(yùn)行了2個(gè)時(shí)間片后,時(shí)間片用完,于是等待,處理機(jī)分配給G。</p><p> (29)時(shí)刻45。G運(yùn)行了1個(gè)時(shí)間片后,執(zhí)行完成,調(diào)入完成隊(duì)列隊(duì)尾,處理機(jī)分配給H。</p><p> (30)時(shí)刻46。H運(yùn)行了2個(gè)時(shí)間片后,執(zhí)行完成,調(diào)入完成隊(duì)列隊(duì)尾,處理機(jī)分配給I。</p><p> (31)時(shí)刻48。I運(yùn)行了2個(gè)時(shí)間片后,時(shí)間片用完,于是等
110、待,處理機(jī)分配給J。</p><p> (32)時(shí)刻50。J運(yùn)行了2個(gè)時(shí)間片后,時(shí)間片用完,于是等待,處理機(jī)分配給I。</p><p> (33)時(shí)刻52。I運(yùn)行了1個(gè)時(shí)間片后,執(zhí)行完成,調(diào)入完成隊(duì)列隊(duì)尾,處理機(jī)分配給J。</p><p> (34)時(shí)刻53。J運(yùn)行了2個(gè)時(shí)間片后,執(zhí)行完成,調(diào)入完成隊(duì)列隊(duì)尾,算法完畢。</p><p>
111、<b> 進(jìn)程運(yùn)行情況如下圖</b></p><p> 圖4.7進(jìn)程運(yùn)行情況</p><p><b> 5調(diào)試與操作說明</b></p><p> 5.1調(diào)試過程中遇到的問題及解決方案</p><p> 1)一開始執(zhí)行的結(jié)果都是左對(duì)齊,無法居中顯示,如下圖顯示</p><
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 操作系統(tǒng)課程設(shè)計(jì)-時(shí)間片輪轉(zhuǎn)算法java實(shí)現(xiàn)
- 操作系統(tǒng)時(shí)間片輪轉(zhuǎn)算法與優(yōu)先級(jí)調(diào)度算法
- 操作系統(tǒng)課程設(shè)計(jì)報(bào)告--磁盤調(diào)度算法
- 操作系統(tǒng)課程設(shè)計(jì)報(bào)告--磁盤調(diào)度算法
- 操作系統(tǒng)磁盤調(diào)度算法課程設(shè)計(jì)報(bào)告
- 操作系統(tǒng)課程設(shè)計(jì)報(bào)告--磁盤調(diào)度算法
- 操作系統(tǒng)_進(jìn)程調(diào)度算法課程設(shè)計(jì)報(bào)告
- 操作系統(tǒng)課程設(shè)計(jì)報(bào)告--磁盤調(diào)度算法
- 進(jìn)程調(diào)度算法 操作系統(tǒng)課程設(shè)計(jì)
- 操作系統(tǒng)課程設(shè)計(jì)--進(jìn)程調(diào)度算法
- 操作系統(tǒng)課程設(shè)計(jì)---磁盤調(diào)度算法
- 操作系統(tǒng)課程設(shè)計(jì)---進(jìn)程調(diào)度算法
- 進(jìn)程調(diào)度算法操作系統(tǒng)課程設(shè)計(jì)
- 操作系統(tǒng)課程設(shè)計(jì)--進(jìn)程調(diào)度算法
- 操作系統(tǒng)課程設(shè)計(jì)---磁盤調(diào)度報(bào)告
- 進(jìn)程調(diào)度算法操作系統(tǒng)課程設(shè)計(jì) (2)
- 操作系統(tǒng)課程設(shè)計(jì)--磁盤調(diào)度算法實(shí)踐
- 操作系統(tǒng)課程設(shè)計(jì)——進(jìn)程調(diào)度模擬算法
- 【2017年整理】操作系統(tǒng)時(shí)間片輪轉(zhuǎn)法進(jìn)程cpu調(diào)度
- 操作系統(tǒng)課程設(shè)計(jì)報(bào)告--驅(qū)動(dòng)調(diào)度
評(píng)論
0/150
提交評(píng)論