操作系統精髓與設計原理學習筆記八:單處理器調度

在多道程序設計系統中,內存中有多個進程。每個進程或者正在處理器上運行,或者正在等待某些事件的發生,比如IO完成。處理器通過執行某個進程而保持忙狀態,而此時其他進程處於等待狀態。

一、處理器調度的類型

處理器調度的目標是以滿足系統目標(如響應時間、吞吐率、處理器小雷)的方式,把進程分配到一個或多個處理器中執行。在許多系統中,這個調度活動分成三個獨立功能:長程、中程和短程調度。他們的名字表明在執行這些功能時的相對時間比例。

創建新進程時,執行長程調度,它決定是否把進程添加到當前活躍的進程集合中。

中程調度是交換功能的一部分,它決定是否把進程加到那些至少部分在內存中並且可以被執行的進程集合中。

短程調度真正決定下一次執行哪一個就緒進程。

從根本上說,調度屬於隊列管理方面的問題,用來在排隊環境中減少延遲和優化性能。

1 長程調度

長程調度決定哪一個程序可以進入系統中處理,因此,它控制着系統的併發度。一旦允許進入,一個作業或用戶程序就成爲一個進程,並被添加到供短程調度程序使用的隊列中等待調度。在某些系統中,一個新創建的進程開始處於被換出狀態,在這種情況下,它被添加到供中程調度程序使用的隊列中等待調度。

在批處理系統或者操作系統的批處理部分中,新提交的作業被髮送到磁盤,並保存在一個批處理隊列中。在長程調度程序運行的時候,從隊列中創建相應的進程。這裏涉及兩個決策:調度程序必須決定什麼時候操作系統能夠接納一個進程或者多個進程;同時,調度程序必須決定接受哪個作業或哪些作業,並將其轉變成進程。

2 中程調度

中程調度時交換功能的一部分。在典型情況下,換入決定取決於管理系統併發度的需求。

3 短程調度

考慮執行的頻繁程度,長程調度程序執行的頻率相對較低,並且僅僅是粗略地決定是否接受新進程及接受哪一個。爲進行交換決定,中程調度程序執行得略微頻繁一些。

短程調度程序,也稱爲分派(dispatcher)程序,執行的最頻繁,並且精確地決定下一次執行哪一個進程。


二、調度算法

1 短程調度準則

短程調度的主要目標是按照優化系統一個或多個方面行爲的方式來分配處理器時間。通常使用的準則可以按兩個維度來分類:面向用戶的準則與單個用戶或進程感知到的系統行爲相關;面向系統的準則的重點是處理器使用效果和效率(比如吞吐量,也就是進程的完成的速度)。

設計一個調度策略涉及在互相競爭的各種要求之間進行折中,根據系統的本質和使用情況,給各種要求設定相應的權值。

2 優先級的使用

在許多系統中,每個進程都被指定一個優先級,調度程序總是有些選擇具有較高優先級的進程。

3 選擇調度策略

選擇函數確定在就緒進程中選擇哪一個進程在下一次執行。

決策模式說明選擇函數在被執行的瞬間的處理方式,通常可分爲以下兩類:

非搶佔。在這種情況下,一旦進程出於運行狀態,它就不斷執行直到終止,或者因爲等待IO,或者因爲請求某些操作系統服務,而阻塞自己。

搶佔。當前正中運行的進程可能被操作系統中斷,並轉移到就緒態。關於搶佔的決策可能是在一個新進程到達時,或者在一箇中斷髮生後,把一個被阻塞的進程職位就緒態時,或者出現基於週期性的時間中斷時。

與非搶佔策略相比,搶佔策略可能會導致較大的開銷,但是可能會對所有進程提供較好的服務,因爲它們避免了任何一個進程獨佔處理器太長時間。此外,通過使用有效的進程切換機制,以及提供較大的內存,使得大部分程序都在內存中,可使搶佔的代價相對比較低。

週轉時間:就是駐留時間,或者這一項在系統中花費的總時間。

歸一化週轉時間:週轉時間與服務時間的比率,該值表示一個進程的相對延遲。

1)先來先服務(FCFS):當美國進程就緒後,它就入就緒隊列。當前正在運行的進程停止執行時,選擇在就緒隊列中存在時間最長的進程運行。

2)輪轉:一種簡單的方法是採用使用基於時鐘的搶佔策略,在這類方法中,最簡單的是輪轉算法。以一個週期性間隔產生時鐘中斷,當中斷髮送時,當前正在運行的進程被置於就緒隊列中,然後基於FCFS策略選擇下一個就緒作業運行。這種技術也稱爲時間片,因爲每個進程在被搶佔前都給定一片時間。

3)最短進程優先:這是一個非搶佔的策略,其原則是下一次選擇預計處理時間最短的進程。因此,短進程將會越過長進程,跳到隊列頭。

4)最短剩餘時間:調度程序總是選擇預期剩餘時間最短的進程。當一個新進程加入就緒隊列時,它可能比當前運行的進程具有更短的剩餘時間,因此,只要新進程就緒,調度程序就可能搶佔當前正在運行的進程。

5)最高響應比優先。響應比=(等待處理器的時間+預計的服務時間)/預計的服務時間

6)反饋法:建立一組調度隊列,基於每個進程的執行歷史和其他一些準則,把他們分配到各個隊列中。

4 公平共享調度

如果當用戶的應用程序或作業可以組成多個進程(或線程),就會出現傳統的調度程序不認識的進程集合結構。從用戶的角度看,他所關心的不是某個特定的進程如何執行,而是構成應用程序的一組進程如何執行。因此,基於進程組的調度策略是非常具有吸引力的,該方法通常稱爲公平共享調度。

術語“公平共享”表明了這類調度程序的基本原則。每個用戶被指定了某種類型的權值,該權值定義了該用戶對系統資源的共享,而且是作爲在所有使用的資源中所佔的比例來體現的。


三、傳統的UNIX調度

傳統的UNIX調度程序採用了多級反饋,而在每個優先級隊列中採用了輪轉的方法。該系統使用1秒搶佔方式,也就是說,如果一個正在運行的進程在1秒內未被阻塞或者完成,它將被搶佔。優先級基於進程類型和執行歷史。


四 、小結

操作系統根據進程的執行對三種類型的調度方案作出選擇。長程調度決定何時允許一個新進程進入系統。中程調度是交換功能的一部分,它決定何時把一個程序的部分或全部取進內存,使得該程序能夠被執行。短程調度決定哪一個就緒進程下一次被處理器執行。本章集中討論與短程調度相關的問題。

在設計短程調度程序時使用了各種各樣的準則。一些準則與單個用戶察覺到的系統行爲有關(面向用戶),而其他準則查看系統在滿足所有用戶的需求時的總效率(面向系統)。一些準則與性能的定量度量有關,另一些在本質上是定性的。從用戶角度看,相應時間通常是系統最重要的一個特性;從系統的角度看,吞吐量處理器利用率是最重要的。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章