立即學習:https://edu.csdn.net/course/play/7883/161188?utm_source=blogtoedu
3.2 處理機管理(進程管理)
五. 進程調度
也稱短程調度(Short-Term Scheduling),用來決定就緒隊列中的哪個進程應獲得處理機,然後再由分派程序把處理機分配給該進程.
進程調度 爲最基本的一種調度,三種類型OS中都必須有進程調度.
進程調度可採用下述兩種調度方式:
- 非搶佔方式(Non-preemptive Mode)
- 搶佔方式(Preemptive Mode)
1. 非搶佔方式(Non-preemptive Mode)
一旦把處理機分配給某進程後,便讓該進程一直執行,直至該進程完成或發生某事件而被阻塞時,才把處理機分配給其他進程,絕不允許進程搶佔已分配出去的處理機.
評價:實現簡單\系統開銷小;適用於大多數的批處理OS,但在要求比較嚴格的實時系統中,不宜採用這種調度方式
2.搶佔方式(Preemptive Mode)
允許調度程序根據某種原則,去暫停某個正在執行的進程,將處理機重新分配給另一進程.
搶佔的原則:
- 時間片原則:各進程時間片運行,一個時間片用完時,停止該進程執行重新進行調度.
- 短作業(進程)優先原則:短作業(進程)可以搶佔常作業(進程)的處理機.
- 優先權原則:優先權高的可以搶佔優先權低的進程的處理機.
六. 調度算法
1. 先來先服務(FCFS)
2.短作業(進程)優先調度算法
3.高優先權優先調度算法
4.時間片輪轉調度算法
1. 先來先服務調度算法(FCFS)
是一種最簡單的調度算法,既可用於作業調度,也可用於進程調度.
進程調度採用FCFS算法時,每次調度都從就緒隊列中選擇一個最先進入該隊列的進程,爲之分配處理機,使之運行.
- FCFS算法比較有利於長作業(進程),而不利於短作業(進程).
2.短作業(進程)優先調度算法 (SJ(P)F)
對短作業或短進程優先調度的算法.可以分別用於作業調度和進程調度.
- 短作業優先(SJF)的調度算法:從後備隊列中選擇一個或若干個估計運行時間最短的作業,將它們調入內存運行.
- 短進程優先(SPF)調度算法,是從就緒隊列中選出一估計運行時間最短的進程,將處理機分配給它,使它立即執行.
SJF調度算法的優缺點:
優點:
有效降低作業的平均等待時間,提高系統吞吐量.
缺點:
- 該算法完全未考慮作業的緊迫程度,因而不能保證緊迫性作業(進程)會被及時處理.
- 由於作業(進程)的長短只是根據估計執行時間定的,主觀因素較大,不一定能真正做到短作業優先.
3.高優先權優先調度算法
爲照顧緊迫性作業,使之在進入系統後便獲得優先處理,引入了最高優先權優先(FPF)調度算法.
此算法常用於批處理系統中,作爲作業調度算法,也作爲多種操作系統中的進程調度算法,還可用於實時系統中.
(1) 優先權的類型
對於最高優先權優先調度算法,關鍵在於:使用靜態優先權\動態優先權;如何確定進程的優先權.
- 靜態優先權:在創建進程時確定的,在進程的整個運行期間保持不變.利用某一範圍的整數來表示(0-7),又稱爲優先數.(值越小,優先級越高)
- 動態優先權:在創建進程時所賦予的優先權可以隨進程的推進或隨其等待時間的增加而改變.
(2) 高響應比優先調度算法
在批處理系統中,短作業優先算法是一種比較好的算法,其主要不足是長作業的運行得不到保證.我們爲每個作業引入動態優先權,並使作業的優先級隨着等待時間的增加而以速率a提高,則可解決問題.見下式:
優先權=(等待時間+要求服務時間)/要求服務時間
由於等待時間與服務時間之和就是系統的響應時間,故上式又表示爲:R=響應時間/要求服務時間
注意:值越大,優先級越高.
由上式可以看出:
- 如作業等待時間相同,則要求服務的時間愈短優先權愈高,所以該算法利於短作業.
- 當要求服務的時間相同,作業優先權的高低決定於其等待時間的長短,所以是先來先服務.
- 對於長作業,作業的優先級可以隨等待時間的增加而提高,當其等待時間足夠長也可獲得處理機.
4.時間片輪轉調度
是一種最古老,最簡單,最公平使用最廣的算法.每個進程被分配一個時間段,稱作它的時間片,即該進程允許運行的時間.
- 如果在時間片結束時進程還沒有運行介紹,則CPU將被剝奪並分配給另一個進程,該進程到就緒隊列隊尾重新排隊.
- 如果進程在時間片內阻塞或結束,則CPU當即進行切換.