一、實時系統:
- 指系統能夠在限定的響應時間內提供所需水平的服務。
- 指計算的正確性不僅取決於程序的邏輯正確性,也取決於結果產生的時間,如果系統的時間約束條件得不到滿足,將會發生系統出錯。
實時任務:具有明確時間約束的計算任務,有軟/硬,隨機/周期性之分。
- 硬實時任務:必須滿足任務對截止時間的要求
- 軟實時任務:聯系着一個截止時間,但不嚴格,可偶爾錯過,不會對系統造成大的影響。(實時系統的任務往往帶有某種程度的緊迫性,因而實時系統的調度有某些特殊要求。)
為此引入適合的實時調度算法。
二、實現實時調度的基本條件
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)方式
在一個應用程序的執行期間,專為該應用程序分配一組處理器,每一個線程一個處理器。
這種方式很浪費。但仍有利用市場,適用於並發程度相當高的多處理機環境:
- 對系統的性能和效率來講,單個處理器的利用率已不太重要。
- “專用”完全避免了切換,從而大大加速了程序運行。
- 同時加工的應用程序,線程總和不應超過系統處理機的數目。