進程調度程式

進程調度程式

進程調度程式亦稱“低級調度程式”,是並發程式設計中,用於調度和分派處理器的程式。在並發程式設計系統中,在同一時刻可能有多個進程同時競爭處理器,需進行進程調度。

基本介紹

  • 中文名:進程調度程式
  • 外文名:process dispatcher
  • 性質:通信信息科學術語
功能,進程調度時機,流程,算法,靜態優先權法,動態優先權法,按時間片輪轉法,

功能

進程調度主要功能有:
(1)記錄系統中所有進程的狀態、優先數和資源需求情況。
(2)確定調度算法和調度方式。
(3)分配處理器給某進程,完成處理器的切換。

進程調度時機

(1)任務完成。正在運行的進程完成其任務後,主動釋放對CPU的控制。
(2)等待資源。由於等待某些資源或事件,正在運行的進程不得不放棄CPU。
(3)運行到時。在分時系統中,當前進程使用完規定的時間片,時鐘中斷,使該進程讓出CPU。
(4)發現標誌。核心處理完中斷或陷入事件後,發現系統中“重新調度”標誌(如 Linux系統中進程 task struct的成員 need resched)被置上,表示有比當前用戶進程更適宜運行的進程,於是執行進程調度。
進程調度程式是作業系統的真正核心,它直接負責CPU的分配。系統中所有進程都是在CPU上運行的,進程調度程式就是它們的切換開關。如果把硬體CPU看成一台裸機,那么加上這個進程調度程式之後,就變成了多台邏輯上相同的CPU,只是速度慢一些。在有的機器上,甚至可以用微程式設計把這個程式裝入唯讀存儲器( Read-Only Memory,ROM)中,從而提高CPU的調度效率。

流程

進程調度程式的主要工作流程如下:
1、把當前進程(即調用進程調度程式的進程)的現場信息(暫存器的內容)存入它的PCB中,包括程式狀態字,程式計數器,各通用暫存器等;
2、根據某種調度算法,從就緒進程中選出一個進程;
3、復被選中講程的現場信息即將它的PCB中的現場信息存入相應的暫存器中。

算法

常用的進程調度算法有優先權調度、輪轉法調度和分級調度等。隨著分散式系統的發展,分散式任務調度算法成為關注的熱點。

靜態優先權法

優先權法按照進程執行任務的輕重緩急程度使每個進程都有一調度優先權,優先權的高低用優先數表示。系統在調度進程時按優先權從高到低選擇進程。如果在創建進程時就確定其優先權,而且在進程運行過程中不再改變,那么這種優先權稱為靜態優先權。

動態優先權法

靜態優先權法實現起來比較簡單,但是不能反映系統以及進程在運行過程中發生的變化。動態優先權法則克服了這一缺陷。它按照變化著的情況對各進程的優先權不斷地進程調整,因此能獲得更好的效果。如可以按進程等待處理機的時間的長短調整進程的優先權,使每一個進程都有機會占有處理機無論是靜態優先權或是動態優先權,按照占用處理機的方式可以分成剝奪搶占和非剝奪搶占兩種方式。非剝奪搶占方式是指,一旦某個優先權高的進程占用了處理機就一直運行下去,直到它終止,或由於自身原因不能運行下去時才選取另一個優先權最高的進程占用處理機。剝奪搶占方式則相反,在某個進程運行過程中,一旦有另一個優先權更高的進程被喚醒處於就緒狀態,就迫使正在運行的進程放棄處理機,而將其交給優先權更高的進程使用。

按時間片輪轉法

時間片輪轉法規定由各個就緒進程輪流地使用處理機,而且每一次使用的時間長度為定值,例如50MS或100MS。如果一個進程運行了一個時間片後沒有結束,則進入就緒佇列末尾,等待下一次機會如果由於等待某種事件,進程沒有用完時間片就進入睡眠狀態,則當它被喚醒後按其時間片未用的值插入就緒佇列中的某個位置。這種方法的優點是各進程能比較均勻地使用處理機,因此適用於分時系統。

相關詞條

熱門詞條

聯絡我們