實時調度及相關算法

實時調度及相關算法

引言: 隨着計算機的發展,多道程序處理的出現需要強大的調度算法來對多任務進行調度,以確定多任務環境下任務的執行順序以及佔有 CPU 時間。相對於靜態、不可搶佔的調度方法, EDF 的出現使之憑藉靈活性高、 CPU 佔有率高很快成爲最優的單處理器調度算法。
實時系統是那些時間因素非常關鍵的系統。例如,計算機的一個或多個外設發出信號,計算機必須在一段固定時間內作出適當的反應。一些實例是:醫院裏特護病房的監控系統、飛行器中的自動駕駛儀以及核反應堆中的安全控制系統等。在這些系統中,遲到的響應即使正確,也和沒有響應一樣糟糕。

實時系統通常分爲硬實時(hard real time)系統和軟實時(soft real time)系統。硬實時系統指系統要有確保的最壞情況下的服務時間,即對於事件的響應時間的截止期限是無論如何都必須得到滿足。比如航天中的宇宙飛船的控制等就是現實中這樣的系統。其他的所有有實時特性的系統都可以稱之爲軟實時系統。如果明確地來說,軟實時系統就是那些從統計的角度來說,一個任務(在下面的論述中,我們將對任務和進程不作區分)能夠得到有確保的處理時間,到達系統的事件也能夠在截止期限到來之前得到處理,但違反截止期限並不會帶來致命的錯誤,像實時多媒體系統就是一種軟實時系統。 這兩種系統中,實時性的獲得是通過將程序分成許多進程,而每個進程的行爲都預先可知。這些進程通常生存週期都很短,往往在一秒內便運行結束。當檢測到一個外部事件時,調度程序按滿足它們最後期限的方式調度這些進程。

實時系統要響應的事件進一步分爲週期性和非週期性。一個系統可能必須響應多個週期的事件流。根據每個事件需要多長的處理時間,系統可能根本來不及處理所有事件。例如,有m個週期性事件,事件I的週期爲Pi,其中每個事件需要Ci秒的CPU時間來處理則只有滿足以下條件

mmm.gif (1079 bytes)

時,纔可能處理所有的負載。滿足該條件的實時系統稱作是可調度的(schedulable)。

實現實時調度的基本條件

  1. 提供必要的信息
- 就緒時間
- 開始截止時間和完成截止時間
- 處理時間
- 資源要求
- 優先級
  1. 系統處理能力要強
  2. 採用搶佔式調度機制
  3. 具有快速切換機制

調度方法的分類

對於大量的實時調度方法來說,主要存在以下幾種劃分方法:
1、離線( off-line )和在線( on-line )調度
根據獲得調度信息的時機,調度算法可以分爲離線調度和在線調度兩類。對 於離線調度算法,運行過程中使用的調度信息在系統運行之前就確定了,如時間驅動的調度。離線調度算法具有確定性,但缺乏靈活性 ,適用於特徵能夠預先確定,且不容易發生變化的應用。在線調度算法的調度信息則在系統運行過程中動態獲得,如優先級驅動的調度(如 EDF,RMS 等)。在線調度算法在形成最佳調度決策上具有較大的靈活性。
2,搶佔( preemptive )和非搶佔( non-preemptive )調度
根據 任務在運行過程中能否被打斷的處理情況。調度算法分爲搶佔式調度和非搶佔式調度兩類。在搶佔式調度方法中,正在運行的任務可能被其他任務打斷。在非搶佔式調度算法中,一旦任務開始運行,該任務只有在運行完成而主動放棄 CPU 資源,或是因爲等待其他資源被阻塞的情況下才會停止運行。實時內核大都採用了搶佔式調度算法,使關鍵任務能夠打斷非關鍵任務執行,確保關鍵任務的截止時間能夠得到滿足。相對來說,搶佔式調度算法要更復雜些,且需要更多的資源,並可能在使用不當的情況下造成低優先級任務出現長時間得不到執行的情況。非搶佔式調度算法常用於那些任務需要按照預先確定的順序執行,且只有當任務主動放棄 CPU 資源後,其他任務才能得到執行的情況。
3, 靜態( static )和動態( dynamic )調度
根據任務優先級的確定時機,調度算法分爲靜態調度和動態調度兩類。在靜態調度算法中,所有任務的優先級在設計時已經確定下來,且在運行過程中不會發生變化(如 RMS )。在動態調度算法中,任務的優先級則在運行過程中確定,並可能不斷髮生變化(如 EDF )。靜態調度算法適用於能夠完全把握系統中所有任務及其時間約束(如截至時間、運行時間、優先順序和運行過程中的到達時間)特性的情況。靜態調度比較簡單,但缺乏靈活性,不利於系統擴展;動態調度有足夠的靈活性來處理變化的系統情況,但需要消耗更多的系統資源。

常用實時調度算法

最早截止時間算法(EDF)

最早截止期限優先(EDF)調度根據截止期限動態分配優先級。**截止期限越早,優先級越高;截止期限越晚,優先級越低。**其在實時任務隊列中也就越接近隊首。調度程序每次均從該隊列中選擇第一個任務投入運行。此算法可用於搶佔式非搶佔式調度算法。

在這裏插入圖片描述
根據 EDF 策略,當一個進程可運行時,它應向系統公佈截止期限要求。優先級可能需要進行調整,以便反映新可運行進程的截止期限。注意單調速率調度與 EDF 調度的不同,前者的優先級是固定的。
wekipedia上面對於單調速率調度(固定優先級搶佔式調度)介紹:
固定優先級搶佔式調度是實時系統中常用的調度系統。使用固定優先級的搶佔式調度,調度程序可確保在任何給定時間,處理器執行所有當前準備執行的任務中的最高優先級任務。
在搶佔式調度具有時鐘中斷任務,可提供調度的選項來切換任務於一定時期內執行時間片。該調度系統的優點是確保在比時間片更長的時間內沒有任何任務會佔用處理器。但是,這種調度方案容易受到進程或線程鎖定的影響:由於優先級較高的任務被賦予了優先級,因此優先級較低的任務可能會等待不確定的時間。解決這種情況的一種常見方法是老化,它逐漸增加了等待進程和線程的優先級,以確保它們最終都將執行。

下面是EDF算法搶佔式:
在這裏插入圖片描述
如果使用固定優先級(A優先級高):
在這裏插入圖片描述
(B優先級高):
在這裏插入圖片描述
結合兩者出現第三種方式----搶佔式EDF算法:
在這裏插入圖片描述
注意:當t=100時,B2和A5截止時間相同,但爲了減少因爲切換進程的系統開銷而選擇繼續原來的進程。

最低鬆弛度優先算法(LLF)


在這裏插入圖片描述

在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述

優先級倒置現象:

在這裏插入圖片描述
在這裏插入圖片描述

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