-
進程調度程序
鎖定
進程調度程序亦稱“低級調度程序”,是併發程序設計中,用於調度和分派處理器的程序。在併發程序設計系統中,在同一時刻可能有多個進程同時競爭處理器,需進行進程調度。
- 中文名
- 進程調度程序
- 外文名
- process dispatcher
- 性 質
- 通信信息科學術語
進程調度程序功能
進程調度主要功能有:
(2)確定調度算法和調度方式。
進程調度程序進程調度時機
(1)任務完成。正在運行的進程完成其任務後,主動釋放對CPU的控制。
(2)等待資源。由於等待某些資源或事件,正在運行的進程不得不放棄CPU。
(3)運行到時。在分時系統中,當前進程使用完規定的時間片,時鐘中斷,使該進程讓出CPU。
(4)發現標誌。核心處理完中斷或陷入事件後,發現系統中“重新調度”標誌(如 Linux系統中進程 task struct的成員 need resched)被置上,表示有比當前用户進程更適宜運行的進程,於是執行進程調度。
進程調度程序是操作系統的真正核心,它直接負責CPU的分配。系統中所有進程都是在CPU上運行的,進程調度程序就是它們的切換開關。如果把硬件CPU看成一台裸機,那麼加上這個進程調度程序之後,就變成了多台邏輯上相同的CPU,只是速度慢一些。在有的機器上,甚至可以用微程序設計把這個程序裝入只讀存儲器( Read-Only Memory,ROM)中,從而提高CPU的調度效率。
[2]
進程調度程序流程
進程調度程序的主要工作流程如下:
2、根據某種調度算法,從就緒進程中選出一個進程;
進程調度程序算法
進程調度程序靜態優先權法
優先權法按照進程執行任務的輕重緩急程度使每個進程都有一調度優先權,優先權的高低用優先數表示。系統在調度進程時按優先權從高到低選擇進程。如果在創建進程時就確定其優先權,而且在進程運行過程中不再改變,那麼這種優先權稱為靜態優先權。
[5]
進程調度程序動態優先權法
靜態優先權法實現起來比較簡單,但是不能反映系統以及進程在運行過程中發生的變化。動態優先權法則克服了這一缺陷。它按照變化着的情況對各進程的優先權不斷地進程調整,因此能獲得更好的效果。如可以按進程等待處理機的時間的長短調整進程的優先權,使每一個進程都有機會佔有處理機無論是靜態優先權或是動態優先權,按照佔用處理機的方式可以分成剝奪搶佔和非剝奪搶佔兩種方式。非剝奪搶佔方式是指,一旦某個優先權高的進程佔用了處理機就一直運行下去,直到它終止,或由於自身原因不能運行下去時才選取另一個優先權最高的進程佔用處理機。剝奪搶佔方式則相反,在某個進程運行過程中,一旦有另一個優先權更高的進程被喚醒處於就緒狀態,就迫使正在運行的進程放棄處理機,而將其交給優先權更高的進程使用。
[5]