複製鏈接
請複製以下鏈接發送給好友

進程調度程序

鎖定
進程調度程序亦稱“低級調度程序”,是併發程序設計中,用於調度和分派處理器的程序。在併發程序設計系統中,在同一時刻可能有多個進程同時競爭處理器,需進行進程調度。
中文名
進程調度程序
外文名
process dispatcher
性    質
通信信息科學術語

進程調度程序功能

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

進程調度程序進程調度時機

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

進程調度程序流程

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

進程調度程序算法

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

進程調度程序靜態優先權法

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

進程調度程序動態優先權法

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

進程調度程序按時間片輪轉法

時間片輪轉法規定由各個就緒進程輪流地使用處理機,而且每一次使用的時間長度為定值,例如50MS或100MS。如果一個進程運行了一個時間片後沒有結束,則進入就緒隊列末尾,等待下一次機會如果由於等待某種事件,進程沒有用完時間片就進入睡眠狀態,則當它被喚醒後按其時間片未用的值插入就緒隊列中的某個位置。這種方法的優點是各進程能比較均勻地使用處理機,因此適用於分時系統。 [5] 
參考資料
  • 1.    盧瀟主編,盧瀟,馮引學,孫璐編.計算機操作系統:西北工業大學出版社,2003年02月第1版:第27頁
  • 2.    孟慶昌主編.操作系統 第2版:中央廣播電視大學出版社,2015.01:第79頁
  • 3.    劉日升,牛紀楨編著.操作系統簡明教程:大連理工大學出版社,1940年11月第1版:第40頁
  • 4.    夏徵農,陳至立主編;幹福熹編,大辭海 信息科學卷,上海辭書出版社,2015.12,第123頁
  • 5.    李競生,楊一平,俞倢.計算機操作系統及其應用:北京經濟學院出版社,1995年03月第1版:第188頁