10.1 處理機調度

調度的概念

1 調度的基本概念

在多道程序系統中,進程的數量往往多于處理機的個數,進程爭用處理機的情況就在所難免。處理機調度是對處理機進行分配,就是從就緒隊列中,按照一定的算法(公平、髙效)選擇一個進程并將處理機分配給它運行,以實現進程并發地執行。處理機調度是多道程序操作系統的基礎,它是操作系統設計的核心問題。

2 調度的層次

一個作業從提交開始直到完成,往往要經歷以下三級調度。

1) 作業調度
又稱高級調度或長程調度。其主要任務是按一定的原則從外存上處于后備狀態的作業中挑選作業調入內存,為之建立相應的進程。作業調度是內存與輔存之間的調度。對每個作業只執行一次調入和調出操作。

在批處理系統中,作業進入系統后總是駐留在后備隊列上,需要作業調度將其分批裝入內存,作業調度的執行頻率較低,通常為幾分鐘一次。然而在分時系統和實時系統中,為了做到及時響應,用戶通過鍵盤輸入的命令或數據都是直接送入內存的,通常無需配置作業調度,但也需要采用某些措施來限制系統用戶數。

2) 中級調度
又稱內存調度,中程調度,是存儲器的對換功能。

引入中級調度是為了提高內存利用率和系統吞吐量。為此,應使那些暫時不能運行的進程,調至外存等待,把此時的進程狀態稱為掛起狀態。當它們已具備運行條件且內存又稍有空閑時,由中級調度來決定,把外存上的那些已具備運行條件的就緒進程,再重新調入內存,并修改其狀態為就緒狀態,掛在就緒隊列上等待。

3) 進程調度
又稱為低級調度,短程調度。其主要任務是按照某種方法和策略從就緒隊列中選取一個進程,將處理機分配給它。進程調度是操作系統中最基本的一種調度,在一般操作系統中都必須配置進程調度。進程調度的頻率在三種調度中最高,通常10~100ms一次。

為實現進程調度,需要實現三個基本機制:

  • 排隊器
    為提高進程調度的效率,應事先將系統中所有的就緒進程按照一定方式排成一個或者多個隊列。
  • 分派器
    分派器把把進程調度程序選中的進程,從就緒隊列中取出,為止進行上下文切換,將處理機分配給它。
  • 上下文切換機制
    對處理機切換時,會發生上下文切換操作。操作系統將當前進程的運行信息寫入其PCB中,并將新選進程的CPU現場信息裝到處理機的各寄存器中。上下文切換時間開銷在幾毫秒級別,該時間可以執行上千條指令。

3 三級調度的聯系

作業調度從外存的后備隊列中選擇一批作業進入內存,為它們建立進程,這些進程被送入就緒隊列,進程調度從就緒隊列中選出一個進程,并把其狀態改為運行狀態,把CPU分配給它。中級調度是為了提高內存的利用率,系統將那些暫時不能運行的進程掛起來。當內存空間寬松時,通過中級調度選擇具備運行條件的進程,將其喚醒。

  1. 作業調度為進程活動做準備,進程調度使進程正常活動起來,中級調度將暫時不能運行的進程掛起,中級調度處于作業調度和進程調度之間。

  2. 作業調度次數少,中級調度次數略多,進程調度頻率最高。

  3. 進程調度是最基本的,不可或缺。調度的時機、切換與過程

4 調度的時機、切換與過程

進程調度和切換程序是操作系統內核程序。當請求調度的事件發生后,才可能會運行進程調度程序,當調度了新的就緒進程后,才會去進行進程間的切換。在實際設計中,在操作系統內核程序運行時,如果某時發生了引起進程調度的因素,并不一定能夠馬上進行調度與切換。

4.1 不能進行進程調度與切換的情況有:

  1. 在處理中斷的過程中:中斷處理過程復雜,在實現上很難做到進程切換,而且中斷處理是系統工作的一部分,邏輯上不屬于某一進程,不應被剝奪處理機資源。

  2. 進程在操作系統內核程序臨界區中:進入臨界區后,需要獨占式地訪問共享數據,理論上必須加鎖,以防止其他并行程序進入,在解鎖前不應切換到其他進程運行,以加快該共享數據的釋放。

  3. 其他需要完全屏蔽中斷的原子操作過程中:如加鎖、解鎖、中斷現場保護、恢復等原子操作。在原子過程中,連中斷都要屏蔽,更不應該進行進程調度與切換。

如果在上述過程中發生了引起調度的條件,并不能馬上進行調度和切換,應置系統的請求調度標志,直到上述過程結束后才進行相應的調度與切換。

4.2 應該進行進程調度與切換的情況有:

  1. 當發生引起調度條件,且當前進程無法繼續運行下去時,可以馬上進行調度與切換。如果操作系統只在這種情況下進行進程調度,就是非剝奪調度。

  2. 當中斷處理結束或自陷處理結束后,返回被中斷進程的用戶態程序執行現場前,若置上請求調度標志,即可馬上進行進程調度與切換。如果操作系統支持這種情況下的運行調度程序,就實現了剝奪方式的調度。

5 進程調度方式

通常有以下兩種進程調度方式:

  1. 非剝奪調度方式,又稱非搶占方式。是指當一個進程正在處理機上執行時,即使有某個更為重要或緊迫的進程進入就緒隊列,仍然讓正在執行的進程繼續執行,直到該進程完成或發生某種事件而進入阻塞狀態時,才把處理機分配給更為重要或緊迫的進程。

此方式的優點是實現簡單、系統開銷小,適用于大多數的批處理系統,但它不能用于分時系統和大多數的實時系統。

  1. 剝奪調度方式,又稱搶占方式。是指當一個進程正在處理機上執行時,若有某個更為重要或緊迫的進程需要使用處理機,則立即暫停正在執行的進程,將處理機分配給這個更為重要或緊迫的進程。.

釆用剝奪式的調度,對提高系統吞吐率和響應效率都有明顯的好處。但“剝奪”不是一種任意性行為,必須遵循一定的原則,主要有:優先權、短進程優先和時間片原則等。

6 調度的基本準則

不同的調度算法具有不同的特性,在選擇調度算法時,必須考慮算法所具有的特性。為了比較處理機調度算法的性能,人們提出以下幾種評價準則:

  1. CPU利用率。CPU是計算機系統中最重要和昂貴的資源之一,所以應盡可能使CPU 保持“忙”狀態,使這一資源利用率最髙。

  2. 系統吞吐量。表示單位時間內CPU完成作業的數量。長作業需要消耗較長的處理機時間,因此會降低系統的吞吐量。而對于短作業,它們所需要消耗的處理機時間較短,因此能提高系統的吞吐量。調度算法和方式的不同,也會對系統的吞吐量產生較大的影響。

  3. 周轉時間。是指從作業提交到作業完成所經歷的時間,包括作業等待、在就緒隊列中排隊、在處迤機上運行以及進行輸入/輸出操作所花費時間的總和。

周轉時間 = 作業完成時間 - 作業提交時間
帶權周轉時間是指作業周轉時間與作業實際運行時間的比值:


平均周轉時間 = (作業1的周轉時間 + … + 作業 n 的周轉時間) / n
平均帶權周轉時間 = (作業1的帶權周轉時間 + … + 作業 n 的帶權周轉時間) / n

  1. 等待時間。是指進程處于等處理機狀態時間之和。處理機調度算法實際上并不影響作業執行或輸入/輸出操作的時間,只影響作業在就緒隊列中等待所花的時間。因此,衡量一個調度算法優劣常常只需簡單地考察等待時間。

  2. 響應時間。是指從用戶提交請求到系統首次產生響應所用的時間。在交互式系統中,周轉時間不可能是最好的評價準則,一般釆用響應時間作為衡量調度算法的重要準則之一。從用戶角度看,調度策略應盡量降低響應時間,使響應時間處在用戶能接受的范圍之內。

要想得到一個滿足所有用戶和系統要求的算法幾乎是不可能的。設計調度程序,一方面要滿足特定系統用戶的要求(如某些實時和交互進程快速響應要求),另一方面要考慮系統整體效率(如減少整個系統進程平均周轉時間),同時還要考慮調度算法的開銷。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 15.1處理機調度概念 CPU資源的時分復用 ■進程切換:CPU資源的當前占用者切換 保存當前進程在PCB中的執行...
    龜龜51閱讀 927評論 0 0
  • 處理機調度與死鎖 處理機調度的層次 高級調度/作業調度/長程調度 作用:將外存后備隊列中的作業調入內存 對象:作業...
    顏洛濱閱讀 851評論 0 1
  • 一、CPU調度的相關概念 1.1 cpu調度 其任務是控制、協調進程對cpu的競爭,即按一定的調度算法從就緒隊列中...
    yjaal閱讀 1,159評論 4 5
  • 我叫王巖(化名),住在離北朝鮮很近的一座城市。2002年7月的一個早晨,去菜市場買菜(母親及兩個侄兒從長春來)。巧...
    穿越_a4da閱讀 861評論 2 4
  • 苞米面大餅子差不多是東北的特色食品吧?而且,我認為是可以稱作美食的。 我出生在七十年代初,在吉林的一個小鎮。那時候...
    園丁鳥閱讀 627評論 0 0