實時調度


一、實時系統:

  • 指系統能夠在限定的響應時間內提供所需水平的服務。
  • 指計算的正確性不僅取決於程序的邏輯正確性,也取決於結果產生的時間,如果系統的時間約束條件得不到滿足,將會發生系統出錯

實時任務:具有明確時間約束的計算任務,有軟/硬,隨機/周期性之分。

  • 硬實時任務:必須滿足任務對截止時間的要求
  • 軟實時任務:聯系着一個截止時間,但不嚴格,可偶爾錯過,不會對系統造成大的影響。(實時系統的任務往往帶有某種程度的緊迫性,因而實時系統的調度有某些特殊要求。)

為此引入適合的實時調度算法。

 

二、實現實時調度的基本條件

1.提供必要的信息

為了實現實時調度,系統應向調度程序提供有關任務的下述信息:

  • 就緒時間。該任務成為就緒狀態的時間。
  • 開始截止時間、完成截止時間。開始截止時間:某個任務必須在某個時間之前開始執行。完成截止時間:某個任務必須在某個時間之前執行完成。
  • 處理時間。從開始執行到完成所需時間。
  • 資源要求。任務執行時所需的一組資源。
  • 優先級。根據任務性質賦予不同優先級。

2.系統處理能力足夠強

處理能力不足可能會出現某些實時任務不能得到及時處理,導致難以預料的后果。
如:

  • 系統中有M個周期性的硬實時任務,處理時間為Ci,周期時間表示為Pi,
    單機系統中必須滿足條件
    在這里插入圖片描述
3. 提高系統處理能力的方法:
  • 增強單機系統的處理能力
  • 采用多處理機系統(此情況下需滿足∑( Ci / Pi )≤N,N為處理機數)

 

三、實時調度算法的分類

根據實時任務的性質
  • 硬實時調度算法
  • 軟實時調度算法
根據調度時間不同
  • 靜態調度算法
  • 動態調度算法。
按調度方式
  • 非搶占調度算法
  • 搶占調度算法
多處理機環境下
  • 集中式調度
  • 分布式調度

1.非搶占調度算法

該算法較簡單,用於一些小型實時系統或要求不太嚴格的實時系統中,又可分為:

  • 非搶占式輪轉調度算法。常用於工業生產的群控系統中,要求不太嚴格。
  • 非搶占式優先調度算法。要求相對嚴格,根據任務的優先級安排等待位置。可用於有一定要求的實時控制系統中。(精心設置可獲得百ms級的響應時間)

較嚴格的實時系統中(t約為數十ms),選擇采用搶占式優先權調度算法。根據搶占發生時間可分為:

  • 基於時鍾:某高優先級任務到達后並不立即搶占,而等下一個時鍾中斷時搶占。
  • 立即搶占:一旦出現外部中斷,只要當前任務未處於臨界區,就立即搶占處理機。

 

四、常用的幾種實時調度算法

1.最早截止時間優先EDF(Earliest Deadline First)

根據任務的開始截止時間來確定任務的優先級。截止時間越早,其優先級越高。(開始截至時間為t:在t時刻之前該任務必須開始執行)

  • 系統保持一個實時任務就緒隊列
  • 隊列按各任務截止時間的早晚排序
  • 調度程序總是選擇就緒隊列中的第一個任務,分配處理機使之投入運行。

新任務產生時,是否等當前程序執行完:

  • 搶占式/非搶占式

可能會使作業錯過,但可適用於軟實時系統

EDF在非搶占式調度方式的應用

1.首先任務 1 先到達並且執行任務
2.在任務 1 執行的過程中,任務 2,3 到達。也就是任務 1 執行完時,有任務 2,3 等待被執行
3.比較任務 2,3 的截止時間,也就是最上面的開始截止時間,可得到,任務 3 先執行
4.同樣的分析方式,可以得出任務 4 先於任務 2 執行
所以執行順序是 1,3,4,2

EDF在搶占式調度方式的應用

我們通過一個例子來講解

 

 

 

首先,該圖的二,三行是為了說明常用的優先級調度不能適用於實時系統,這里不細說,可以不用管,我們直接觀察第一行和最后一行。

1.在 t = 0 時,A1 和 B1 同時到達。此時比較二者的截止時間(最后期限),可以看出 A1 的截止時間早,所以 A1 先運行。

2.A1 執行 10ms 后因為 A2 還沒有到,所以不存在比較,直接切換 B1 執行。

3.當 B1 執行了 10ms 后,A2 到達,比較二者的截止時間,A2 先於 B1。所以A2 搶占處理機,B1 中斷。

此后的調度方式按照上面的分析即可完成
EDF在搶占式和非搶占式的區別就是,搶占式就是,當新任務A來到的時候,如果A的截止時間比正在執行的任務B的截止時間提前,那么就中斷B,搶奪處理機控制權,轉而運行A。

2.最低松弛度優先LLF(Least Laxity First)

根據任務緊急(或松弛)的程度,來確定任務的優先級。任務的緊急程度越高(松弛度值越小),優先級就越高。
松弛度= 截止完成時間 – 還需執行時間 - 當前時間
可理解為當前時刻到開始截止時刻間的差距,隨着時間的推進,這個差值逐漸變小,任務越來越緊迫。

舉兩個例子。

例1.

比如此時時間軸為 0ms,任務 A 和 B 同時到達,需要確定先執行哪個任務。

任務 A 需要在 200ms 這個時刻(或之前)完成,而 A 本身要運行 100ms。所以 A 的松弛度就是 200 - 100 - 0 = 100ms。

此時還有一個任務 B ,必須在 400ms 時刻(或者之前)完成,本身需要運行 150ms,所以松弛度為 400 - 150 - 0 = 250

所以,松弛度低(任務越緊急)先執行。

例2.

假如一個實時系統中有兩個周期性實時任務 A 和 B,任務 A 每 20ms 運行一次,一次運行 10ms 。

任務 B 每 50ms 運行一次,一次運行 25ms。

通過觀察下圖,

可畫出 A 和 B 在 LLF 算法下的調度時間軸圖。

進程切換發生的時機:
  • 進程執行完
  • 進程I/O阻塞
  • 新進程出現時可能的搶占
  • 某進程松弛度為0時發生搶占
    有的時刻,其他並發的實時任務下一周期未到來,會出現只有一個任務的情況。

 

五、多處理機系統中的調度

提高計算機系統性能的途徑:

  • 提高計算機元器件速度
  • 改進計算機系統體系結構
    20世紀70年代出現多處理器系統MPS(MultiProcessor System)。90年代中后期,功能較強的主機或服務器都采用了MPS。

1.多處理器系統的類型

不同角度分類

(1)緊密耦合MPS和松弛耦合MPS
  • 緊密耦合(Tightly Coupted)
    高速總線或高速交叉開關來實現多個處理器之間的互連。
    共享主存儲器系統和I/O設備。系統中所有進程和資源由OS統一控制管理。
  • 松散耦合(Loosely Coupted)
    通過通道或通信線路來實現多台計算機之間互連。
    每台計算機都有自己的存儲器和I/O設備,可以獨立工作。
(2)對稱MPS和非對稱MPS
  • 對稱多處理系統SMPS(Symmetric MultiProcessor System)平等型:在系統中所包含的各處理器單元在功能上和結構上都相同。當前的絕大多數MPS屬於此類。
  • 非對稱多處理器系統。主從型:系統中有多種類型的處理單元,它們的功能和結構各不相同,其中只有一個主處理器,其余為從處理器。

2.進程分配方式

在多處理器系統中,進程的調度與系統結構有關。

  • 同構性系統中,所有處理器都相同,可將進程分配到任一處理器上運行;
  • 非對稱MPS,對任一進程而言,都只能將其分配到某一適合於其運行的處理機上去執行。下面分別介紹對稱MPS和非對稱MPS中的進程分配方式。
(1)對稱MPS中的進程分配方式

①靜態分配(Static Assignment)方式:

  • 進程從開始至完成被固定分配到一個處理器上。
  • 優點是進程調度開銷小,缺點是各處理器可能出現忙閑不均。

②動態分配(Dynamic Assignment)方式:

  • 系統中僅設置一個公共的就緒隊列,分配進程總是給空閑處理器。某一進程的執行可能曾在不同的處理器上。
  • 優點是消除忙閑不均現象。但松散耦合系統增大調度開銷。
(1)非對稱MPS中的進程分配方式

OS的核心部分駐留在一台主機上,而從機上只是用戶程序,進程調度只由主機執行。主機中保持有一個就緒隊列。
每當從機空閑時向主機發一索求進程信號,然后等待主機分配進程。
優點是系統處理比較簡單,缺點是處理靠一台主機導致不可靠。(克服缺點的方法是利用多台而非一台管理系統)

3.進程(線程)調度方式

MPS已廣為流行多年,存在着多種調度方式,許多都是以線程作為基本調度單位的,比較有代表的如下:

  • 自調度(Self-Scheduling)方式
  • 成組調度(Gang Scheduling)方式
  • 專用處理器(Dedicated Processor Assignment)分配方式

(1)自調度(Self-Scheduling)方式

  • 最簡單的一種調度方式。
  • 系統中設置一個公共的進程或線程就緒隊列,所有的處理器空閑時,都可自己到該隊列中取得一進程(線程)來運行。
  • 調度算法:可采用FCFS、FPF和搶占式最高優先權優先調度算法等。經實驗證明FCFS算法在多處理器環境下簡單開銷小,目前成為較好的調度算法。
特點:
  • 優點:
    1)易將單機環境下的調度機制移植到MPS中;
    2)不會發生處理器忙閑不均的現象,有利於提高處理器的利用率。
  • 缺點:
    1)瓶頸問題。多處理器互斥訪問唯一就緒隊列。
    2)低效性。高速緩存的使用效率很低。
    3)線程切換頻繁。相關的其他線程未必會同時獲得處理器導致切換頻繁。

(2)成組調度(Gang Scheduling)方式

為解決自調度方式中線程頻繁切換的問題
將進程的一組線程分配到一組處理器上去執行。分配處理器時間的方式:

  • 面向所有應用程序平均分配處理器時間
  • 面向所有線程平均分配處理器時間

優點:

  • 相互合作的進程或線程能並行執行,可有效的減少阻塞,減少切換使系統性能得到改善;
  • 每次調度都可以解決一組線程的處理器分配問題,故可顯著減少調度頻率,減少了調度開銷。

(3)專用處理器(Dedicated Processor Assignment)方式

在一個應用程序的執行期間,專為該應用程序分配一組處理器,每一個線程一個處理器。
這種方式很浪費。但仍有利用市場,適用於並發程度相當高的多處理機環境:

  • 對系統的性能和效率來講,單個處理器的利用率已不太重要。
  • “專用”完全避免了切換,從而大大加速了程序運行。
  • 同時加工的應用程序,線程總和不應超過系統處理機的數目。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM