進程調度:在操作系統中調度是指一種資源分配,因而調度算法是指:根據系統的資源分配策略所規定的資源分配算法。操作系統管理了系統的有限資源,當有多個進程(或多個進程發出的請求)要使用這些資源時,因為資源的有限性,必須按照一定的原則選擇進程(請求)來占用資源。這就是調度。目的是控制資源使用者的數量,選取資源使用者許可占用資源或占用資源。
1 先來先服務(隊列)
? ? 先來先服務(FCFS)調度算法是一種最簡單的調度算法,該算法既可用于作業調度,也可用于進程調度。當在作業調度中采用該算法時,每次調度都是從后備作業隊列中選擇一個或多個最先進入該隊列的作業,將它們調入內存,為它們分配資源、創建進程,然后放入就緒隊列。在進程調度中采用FCFS算法時,則每次調度是從就緒隊列中選擇一個最先進入該隊列的進程,為之分配處理機,使之投入運行。該進程一直運行到完成或發生某事件而阻塞后才放棄處理機。算法總是把處理機分配給最先進入就緒隊列的進程,一個進程一旦分得處理機,便一直執行下去,直到該進程完成或阻塞時,才釋放處理機。缺點:比較有利于長作業,而不利于短作業。 有利于CPU繁忙的作業,而不利于I/O繁忙的作業。
2 最短優先(優先隊列)
? ? 最短優先調度算法是指對短作業或短進程優先調度的算法。它們可以分別用于作業調度和進程調度。短作業優先(SJF)的調度算法是從后備隊列中選擇一個或若干個估計運行時間最短的作業,將它們調入內存運行。而短進程優先(SPF)調度算法則是從就緒隊列中選出一個估計運行時間最短的進程,將處理機分配給它,使它立即執行并一直執行到完成,或發生某事件而被阻塞放棄處理機時再重新調度。缺點:長作業的運行得不到保證。
3 輪轉法(RoundRobin)
將系統中所有的就緒進程按照FCFS原則,排成一個隊列。每次調度時將CPU分派給隊首進程,讓其執行一個時間片。時間片的長度從幾個ms到幾百ms。在一個時間片結束時,發生時鐘中斷。調度程序據此暫停當前進程的執行,將其送到就緒隊列的末尾,并通過上下文切換執行當前的隊首進程。 進程可以未使用完一個時間片,就出讓CPU(如阻塞)。
4 多級反饋隊列算法設置多個就緒隊列,分別賦予不同的優先級,如逐級降低,隊列1的優先級最高。每個隊列執行時間片的長度也不同,規定優先級越低則時間片越長,如逐級加倍。2 新進程進入內存后,先投入隊列1的末尾,按FCFS算法調度;若按隊列1一個時間片未能執行完,則降低投入到隊列2的末尾,同樣按FCFS算法調度;如此下去,降低到最后的隊列,則按"時間片輪轉"算法調度直到完成。僅當較高優先級的隊列為空,才調度較低優先級的隊列中的進程執行。如果進程執行時有新進程進入較高優先級的隊列,則搶先執行新進程,并把被搶先的進程投入原隊列的末尾。
進程調度的性能評價:
進程調度雖然是在系統內部的低級調度,但進程調度的優劣直接影響作業調度的性能。那么,怎樣評價進程調度的優劣呢?反映作業調度優劣的周轉時間和平均周轉時間只在某種程度上反映了進程調度的性能,例如,其執行時間部分中實際上包含有進程等待(包括就緒狀態時的等待)時間,而進程等待時間的多少是要依靠進程調度策略和等待事件何時發生等來決定的。因此,進程調度性能的商量是操作系統設計的一個重要指標。我們說進程調度性能的衡量方法可分為定形和定量兩種。在定形衡量方面,首先是調度的可靠住。包括一次進程調度是否可能引起數據結構的破壞等。這要求我們對調度時機的選擇和保存CPU現場十分謹慎。另外,簡潔性也是衡量進程調度的一個重要指標,由于調度程序的執行涉及到多個進程和必須進行上下文切換,如果調度程序過于繁瑣和復雜,將會耗去較大的系統開銷。這在用戶進程調用系統調用較多的情況下,將會造成響應時間大幅度增加。進程調度的定量評價包括CPU的利用率評價、進程在就緒隊列中的等待時間與執行時間之比等。實際上由于進程進入就緒隊列的隨機模型很難確定,而且進程上下文切換等也將影響進程的執行效率,LL而對進程調度進行解析是很困難的。一般情況下,大多利用模擬或測試系統響應時間的方法來評價進程調度的性能。