【正文】
per ndtime runtimevv W 2 2 1qname state super ndtime runtimerr W 1 3 0qname state super ndtime runtimeaa W 1 2 1按任一鍵繼續(xù)......The execute number:4******當前工作的進程是:vvqname state super ndtime runtimevv R 2 2 1進程[vv]已完成******當前就緒隊列狀態(tài)為:qname state super ndtime runtimerr W 1 3 0qname state super ndtime runtimeaa W 1 2 1按任一鍵繼續(xù)......The execute number:5******當前工作的進程是:rrqname state super ndtime runtimerr R 1 3 0******當前就緒隊列狀態(tài)為:qname state super ndtime runtimeaa W 1 2 1qname state super ndtime runtimerr W 1 3 1按任一鍵繼續(xù)......The execute number:6******當前工作的進程是:aaqname state super ndtime runtimeaa R 1 2 1進程[aa]已完成******當前就緒隊列狀態(tài)為:qname state super ndtime runtimerr W 1 3 1按任一鍵繼續(xù)......The execute number:7******當前工作的進程是:rrqname state super ndtime runtimerr R 1 3 1進程[rr]已完成******當前就緒隊列狀態(tài)為:進程已經(jīng)全部完成本程序利用標準輸入輸出模擬了進程調(diào)度過程。輸入各個進程的優(yōu)先級和需要運行的時間等信息,輸出給出了每進行一次調(diào)度的運行進程、就緒隊列、以及各個進程的 PCB信息,每當一個進程完成運行,輸出該進程已完成的信息,最后當所有進程都完成后給出所有進程都完成的信息。因為剛開始vv的優(yōu)先級高,所以它先搶占CPU,運行一個時間單位后,vv的優(yōu)先級數(shù)減少1,此時vv的優(yōu)先級與aa、kk相等,但比rr大,所以vv排在就緒隊列kk后面,aa處于運行狀態(tài);后面的也是這樣分析。從而可以看出:剛開始優(yōu)先數(shù)大的先運行,當進程運行一個時間片后,進程的已占用CPU時間已達到所需要的運行時間,則撤消該進程,如果運行一個時間片后進程的已占用CPU時間還未達所需要的運行時間,也就是進程還需要繼續(xù)運行,此時應(yīng)將進程的優(yōu)先數(shù)減1(即降低一級),且此時有和它相等的優(yōu)先數(shù)或比它大的優(yōu)先數(shù),則把它插入就緒隊列等待CPU。 通過以上述數(shù)據(jù)測的最高優(yōu)先數(shù)算法,可以看出這種算法的優(yōu)點是可使資源利用率得以提高,公平性好,缺點是系統(tǒng)開銷大,實現(xiàn)比較復(fù)雜。/*running result: ||本程序是先來先服務(wù)算法|| 輸入進程隊列名(用單個字母表示一個進程,字母間用tab間隔) a b c d e 依次輸入進程到達時間(時間之間用tab間隔) 0 1 2 3 4 依次輸入服務(wù)時間(時間之間用tab間隔) 4 3 5 2 4 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ a b c d e 0 1 2 3 4 4 3 5 2 4 4 7 12 14 18 4 6 10 11 14 平均周轉(zhuǎn)時間 :9 1 2 2 平均帶權(quán)周轉(zhuǎn)時間: +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 請按任意鍵繼續(xù). . . */ 輸入的a、b、c、d、e,是五個進程名;0、4為各個進程到達的時間;4是各個進程的占用CPU的時間;,當a進程結(jié)束時,b進程才是運行狀態(tài),以此類推,各個進程處于完成F(finish)狀態(tài)的時間是1118.,從而可以看出各個進程是按照進程進入就緒隊列的先后順序調(diào)度并分配處理機執(zhí)行,先進入就緒隊列的進程,先分配處理機運行。一旦一個進程占有了處理機,它就一直運行下去,直到該進程完成工作或者因為等待某事件發(fā)生而不能繼續(xù)運行時才釋放處理機。 但是,a進程運行時間是4,結(jié)束時間也是4;而d進程運行時間是2,結(jié)束時間是14,說明先來先服務(wù)有利于長作業(yè)進程,而不利于短作業(yè)進程。這是因為若一個長作業(yè)先到達系統(tǒng),就會使許多短作業(yè)等待很長的時間,從而引起許多短作業(yè)用戶的不滿。有利于CUP繁忙的作業(yè),不利于I/O繁忙的作6. 課題研究結(jié)論綜上所述,本次課題通過采用最高優(yōu)先數(shù)優(yōu)先的調(diào)度算法(即把處理機分配給優(yōu)先數(shù)最高的進程)、先來先服務(wù)算法,對進程調(diào)度進行模擬實驗,并分析實驗數(shù)據(jù),得到以下結(jié)論:最高優(yōu)先數(shù)優(yōu)先的調(diào)度算法進入運行狀態(tài)的依據(jù)是:優(yōu)先數(shù)越大就先運行;先來先服務(wù)算法進入運行狀態(tài)的依據(jù)是:進入就緒隊列的先后順序,先進就先運行。最高優(yōu)先數(shù)優(yōu)先的調(diào)度算法的調(diào)度方式是:搶占式和非搶占式;先來先服務(wù)算法的調(diào)度方式是:非搶占式。最高優(yōu)先數(shù)優(yōu)先的調(diào)度算法的吞吐量高;先來先服務(wù)算法的吞吐量不突出。最高優(yōu)先數(shù)優(yōu)先的調(diào)度算法的響應(yīng)時間較好;先來先服務(wù)算法的響應(yīng)時間不突出。最高優(yōu)先數(shù)優(yōu)先的調(diào)度算法的系統(tǒng)開銷大;先來先服務(wù)算法的系統(tǒng)開銷小。最高優(yōu)先數(shù)優(yōu)先的調(diào)度算法對進程作用:有利于緊迫作業(yè);先來先服務(wù)算法對進程作用:有利于長作業(yè)(進程),不利于短作業(yè),有利于CUP繁忙的作業(yè),不利于I/O繁忙的作業(yè) 7. 總結(jié)正文:本次課題主要研究了進程的調(diào)度算法即最高優(yōu)先數(shù)優(yōu)先的調(diào)度算法和先來先服務(wù)算法,并對進程調(diào)度進行模擬實驗,對比分析兩種算法的優(yōu)缺點。根據(jù)實驗可得:(進程),而不利于短作業(yè)(進程)。因為短作業(yè)運行時間很短,如果讓它等待較長時間才得到服務(wù),那么,它的帶權(quán)周轉(zhuǎn)時間就會很高;先來先服務(wù)調(diào)度算法有利于CPU繁忙型的作業(yè),不利于I/O繁忙型的作業(yè),而目前大多數(shù)事務(wù)處理都屬于I/O繁忙型作業(yè)。,而那些優(yōu)先級較低的則可能長時間得不到調(diào)度;靜態(tài)優(yōu)先級調(diào)度算法簡單易行,系統(tǒng)開銷小,但是不太靈活,很可能出現(xiàn)低優(yōu)先級的作業(yè),長期得不到調(diào)度而等待的情況;靜態(tài)優(yōu)先級法僅適合于實現(xiàn)要求不太高的系統(tǒng)。動態(tài)優(yōu)先級調(diào)度算法比較靈活科學(xué),可防止有一些進程一直得不到調(diào)度,也可防止有些進程長期壟斷處理機,但是需要花費相當多的執(zhí)行程序時間,因而花費的系統(tǒng)開銷比較大。通過這次課程設(shè)計使我認識到自己在平時的學(xué)習(xí)中,只學(xué)到知識的表面,沒有深入了解,當真正需要用到這些知識時,卻不能系統(tǒng)的聯(lián)系在一起。