
2023年3月6日發(作者:跑步頻率)實時調度
百科名片
嵌入式系統在當今的生產和生活中得到了廣泛的應用,鑒于嵌入式實時系統的特點,要求任務調度等實時內核功能精簡和高效。綜合了EDF 和RM調度策略的CSD 調度策略,更加適合嵌入式系統的特點,滿足其內核的要求。任務調度策略是實時系統內核的關鍵部分,如何進行任務調度,使得各個任務能在其期限之內得以完成是實時操作系統的一個重要的研究領域。它的精簡和高效,對提高低處理能力,小內存系統整體性能具有重大的意義。
目錄
簡介
分類
單處理器實時調度
多處理器實時調度
分布式實時調度展開
編輯本段
簡介
POSIX 1003.b中定義:指系統能夠在限定的響應時間內提供所需水平的服務。而一個由Donald Gillies提出的更加為大家接受的定義是:一個實時系統是指計算的正確性不僅取決于程序的邏輯正確性,也取決于結果產生的時間,如果系統的時間約束條件得不到滿足,將會發生系統出錯。
編輯本段
分類
實時系統根據其對于實時性要求的不同,可以分為軟實時和硬實時兩種類型。
硬實時系統指系統要有確保的最壞情況下的服務時間,即對于事件的響應時間的截止期限是無論如何都必須得到滿足。比如航天中的宇宙飛船的控制等就是現實中這樣的系統。
其他的所有有實時特性的系統都可以稱之為軟實時系統。如果明確地來說,軟實時系統就是那些從統計的角度來說,一個任務(在下面的論述中,我們將對任務和進程不作區分)能夠得到有確保的處理時間,到達系統的事件也能夠在截止期限到來之前得到處理,但違反截止期限并不會帶來致命的錯誤,像實時多媒體系統就是一種軟實時系統。
根據建立調度表和可調度性分析是脫機還是聯機實現分為靜態調度和動態調度,靜態調度無論是單處理器調度還是分布式調度,一般是以RMS算法為基礎;而動態調度則以EDF、LLF為主。
按系統分類實時調度可以分為單處理器調度,集中式多處理器調度和分布式處理器調度。
按任務是否可搶占又能分為搶占式調度和不可搶占式調度。
編輯本段
單處理器實時調度
問題描述:假設一任務集S={t1,t2,t3,...,tn},周期分別是T1,T2,...,Tn,執行時間為c1,c2,...,cn,deadline為D1,D2,...,Dn,Di=Ti。任務ti可以被搶占。
CPU利用率用U=sum(ci/Ti)來表示。對于單處理器,U<=1是S可調度的前提條件,否則S不可調度。
RMS(Rate-Monotonic Scheduling)調度算法
任務按單調速率優先級分配(RMPA)的調度算法,稱為單調速率調度(RMS)。RMPA是指任務的優先級按任務周期T來分配。它根據任務的執行周期的長短來決
定調度優先級,那些具有小的執行周期的任務具有較高的優先級,周期長的任務優先級低。
不考慮n=1的情況。RMS是單處理器下的最優靜態調度算法。1973年Liu和Layland發表的這篇文章的前半部分首次提出了RM調度算法在靜態調度中的最優性. 它的一個特點是可通過對系統資源利用率的計算來進行任務可調度性分析, 算法簡單、有效, 便于實現。不僅如此, 他們還把系統的利用系數(utilization factor)和系統可調度性聯系起來, 推導出用RM調度所能達到的最小系統利用率公式. 同時, 這篇論文中透露出來的證明思想和方法也被人們所效仿. 下面就讓我們來看看這篇文章中關于RM調度算法的重要結論。
任何一個結論都有一個模型假設, 讓我們先列出這里的假設:
(A1) 所有的任務請求都是周期性的,必須在限定的時限內完成;
(A2) 任務的作業必須在該任務的下一個作業發生之前完成, 這樣避免了考慮隊列問題; 在這里, 我們對任務和作業不作特別的區分, 因為一個任務請求就是一個作業。
(A3) 任務之間都是獨立的,每個任務的請求不依賴于其他任務請求的開始或完成;
(A4) 每個任務的運行時間是不變的,這里任務的運行時間是指處理器在無中斷情況下用于處理該任務的時間;
(A5) 所有的非周期性任務都在特殊的情況下運行,比如系統初始化或系統非正常緊急處理程序。
(A6) 其它一些假設, 比如, 單處理器, 可搶占調度, 任務切換的時間忽略不計等等。
RMS算法
(1) 任務T i (P i, Ci, D i) 模型: 周期為P i,計算時間為Ci, 時限D i 為周期終點。任務在周期起點釋放, 高優先級任務可搶占低優先級任務的執行。
(2) 優先級分配方法: 靜態固定分配。優先級與周期成反比, 周期越短優先級越高。
(3) 可調度性分析: 如果任務集滿足下式, 則該任務集可調度。
定理1:n個獨立的周期任務可以被RMPA調度,如果U<=n(2^(1/n)-1)。
一個任務的響應時間(respon time)是指一個任務請求, 這個任務實際完成的時間跨度. 在靜態調度中, 任務的臨界時刻(critical instant)這個概念被首先提出來. 它被定義為一個特定的時刻, 如果在這個時刻有這個任務的請求, 那么這個任務就會需要最大的響應時間. 由此得出
定理1: 一個任務的臨界時間就是比這個任務優先級高的所有任務同時發出請求的時刻.
證明: 由于一個任務的響應時間是它自己的負載時間加上被其它優先級高的任務所打斷的時間. 由于自己的負載時間是固定的, 我們考慮在什么時候任一高優先級的任務會有最長的打斷時間. 顯然, 只有當這一高優先級的任務與該任務同時請求處理時, 才能
可能產生最大的打斷時間.
定理1的價值在于它找到了一個證明一個調度算法能否調度任一任務集充分必要條件, 那就是所有任務同時請求執行的時的情況下每個任務仍能滿足各自的期限, 那么這個任務集就可以被這個調度算法調度.
有了這個推論, 我們就可以證明RM調度的最優性了.
定理2: 如果一個任務集能夠被靜態調度, 那么RMS算法就能夠調度這個任務集. 從這個意義上說, RMS是最優的靜態調度算法.
這個定理的證明方法就是有名的交換法. 證明思路如下:
假設一個任務集S采用其他靜態優先級算法可以調度,那么總有這樣兩個優先級相鄰的任務i和j, 有Ti>Tj,而Pi≤Pj.把Ti和Tj的優先級Pi和Pj互換,明顯可以看出這時S仍然可以調度, 因為在所有任務同時請求的情況下, 交換這兩個任務不會影響其它任務的完成時間, 同時這兩個任務都可以在各自期限內完成. 按照這樣的方法,其他任何靜態優先級調度最終都可以轉換成RM調度.
RMS已被證明是靜態最優調度算法, 開銷小, 靈活性好, 是實時調度的基礎性理論。即使系統瞬時過載, 也完全可預測哪些任務丟失時限。缺點是處理機利用率較低, 最壞的情況下,當n→∞時, 不超過ln2 (≈ 70%)。另外, RMS是充分但非必要條件。而在一般情況下,對于隨機的任務集大約只有88%. 70%或者88%的處理器利用率對于許多實時應用來說是一個嚴重的限制,動態調度算法如最早截止期最先(earliest deadline first,EDF)或者最少空閑時間最先(least laxity first,LLF)已經被證明是最優的,并且能夠實現100% 的處理器利用率.
具有資源同步約束的RMS調度
當實時任務間共享資源時, 可能出現低優先級任務不可預測地阻塞高優先級任務執行的情況, 叫優先級倒置。這時RMS 算法不能保證任務集的調度, 必須使用有關協議控制優先級的倒置時間。常用的協議有優先級頂級協議和堆資源協議, 使用這些協議可使優先級的倒置時間最多為一個資源臨界段的執行時間, 并且不會發生死鎖。
基于RMS 的非周期任務的調度
實時系統中的非周期任務可采用延遲服務器算法或隨機服務器算法進行調度。它們的最大特點是可在周期任務的實時調度環境下處理隨機請求。兩者的基本思想是將非周期任務轉化成周期任務, 再利用RMS算法進行調度。前者用一個或幾個專用的周期任務執行所有非周期任務, 這種周期任務叫非周期任務服務器。根據周期大小,服務器有固定優先級, 服務器的執行時間被稱為預算, 它在每個服務器周期Ts 的起點補充。只要服務器有充足的預算, 就可在其周期內為非周期任務服務。該算法實現簡單, 但可調度性分析較難
, 有時會出現抖動, 可能發生一個非周期任務在相鄰兩個服務器周期中連續執行2倍預算的現象, 與RMS理論不符, 需要適當修改RMS算法。隨機服務器算法與延遲服務器算法相似, 但預算不是在每個周期起點補充, 而是在預算消耗Ts時間之后再補充。該算法與RMS分析算法一致, 但實現復雜。
EDF
最早截止時間優先算法(EDF)也稱為截止時間驅動調度算法(DDS),是一種動態調度算法。EDF指在調度時,任務的優先級根據任務的截止時間動態分配。截止時間越短,優先級越高。EDF有如下定理:
定理2:如果一個任務集按EDF算法調度,當且僅當U<=1。
EDF的特點
(1) 任務模型: 與RMS 調度相同。
(2) 優先級分配方法: 動態分配, 距要求時限所剩時間越短優先級越高。
(3) 可調度性分析: 如果任務集滿足下式, 則該任務集可調度。
EDF 調度算法已被證明是動態最優調度, 而且是充要條件。處理機利用率最大可達100% 。但瞬時過載時, 系統行為不可預測, 可能發生多米諾骨牌現象, 一個任務丟失時會引起一連串的任務接連丟失。另外, 它的在線調度開銷比RMS大。
LLF
最短空閑時間優先算法(LLF)也是一種動態調度算法。LLF指在調度時刻,任務的優先級根據任務的空閑時間動態分配。空閑時間越短,優先級越高。空閑時間=deadline-任務剩余執行時間。LLF可調度條件和EDF相同。
理論上,EDF和LLF算法都是單處理器下的最優調度算法。但是由于EDF和LLF在每個調度時刻都要計算任務的deadline或者空閑時間,并根據計算結果改變任務優先級,因此開銷大、不易實現,其應用受到一定限制。
編輯本段
多處理器實時調度
靜態調度
問題描述:一組具有優先級關系的任務在m個處理器上運行,任務優先級關系用“<”表示,即如果兩個任務(t1,t2)存在優先關系t1< t2,則t1必須在t2開始運行前完成。任務優先關系可用一個無環圖來表示,稱為計算圖G,如圖1.表示任務集S={t1,t2,t2,t4,t5}中任務存在優先關系<={(t1,t2),(t1,t3),(t1,t4),(t2,t6),(t3,t6),(t4,t5),(t5,t6)}。多處理其調度就是要找出長度最短的調度表。
靜態多處理器調度又可以有如下三種調度規范:
1)基本(或非搶占)調度BS(Basic Scheduling)。任務在執行過程中不能被打斷。
2)可搶占調度PS(Preemptable Scheduling),任務可被搶占,此處搶占不必基于優先級。
3)廣義調度GS(General Scheduling)。 GS是一個理論上的概念,允許一個處理器可在同一時刻執行多個任務。事實上每個處理器在每一時刻最多只能執行能夠一個任務。GS基于的前提是:在給定的時間段,處理器可以將其計算
能力的一部分分配給一個任一個任務。并且規定同一任務不可以同時在多于一個處理器上并行執行。
定義 CA(G,k)表示調度規范A(BS、PS或GS)下,k個處理其的計算圖G的最小計算時間。
定理3: 可搶占調度和廣義調度的最小計算時間等于對任一k個處理器的計算圖G,有
C_GS (G,k)=C_PS (G,k)
BS不能得到最短調度表,GS雖然能夠得到最短調度表,但只是理論結果。定理三可知,PS和GS具有相同的最小計算時間,而PS在實際中是可實現的。
PS的一般生成過程是這樣的:
1)更具任務優先級關系畫出計算圖G
2)按G生成GS調度表(為什么?)
3)采用某種方法將GS調度表換成PS調度表
動態調度
問題描述:到達時間不確定而計算時間c和截止時間D已知的n個任務,運行在m個處理器上,n不確定,動態調度的目標是使系統能夠對變化的環境做出迅速的反應。
動態調度的任務狀態可以用l-c空間表示。橫坐標表示任務的空閑時間l(t),縱坐標表示任務的剩余時間c(t)。任務空閑時間l(t)=D - c(t)。圖中虛線間隔表示一個時間單位,如t2的當前時刻剩余計算時間為3,空閑時間為2,因此deadline為3+2=5。
每隔一定時間,l-c空間將刷新一次。任務在l-c空間的位置變化具有不同含義:
1)任務執行:任務向下移動,c(t)變小
2)任務不執行:任務向左移動,l(t)變小
3)任務未到達:任務不動。有些任務未到達時已經確認,那么這些任務在l-c圖上預留位置,當其到達時被激活
4)新任務到達:根據任務的計算時間c和空閑時間l,設置其在l-c空間的位置
5)任務執行完畢:任務到達l軸,此時c(t)=0
6)任務運行超時失敗:任務落在c軸左邊,此時l(t)<0
任務的截止時間的屬性在l-c空間中由角度表示。相同截止時間的任務都位于125度叫的同一直線上,而截止時間沿45度叫遞增。t1和t3截止時間相等,t2比t1,t3長。
在l-c空間里,任務可以按EDF和LLF調度算法調度。但是多處理器下EDF和LLF不是最優算法。
定理4:在多處理器下,如果任務計算時間、截止時間或到達時間不能預先確定,則最優調度算法不存在。
定理4表明基于l-c空間的多處理器動態調度算法沒有最優解。由于該算法不能保證所有任務的截止時間,因此屬于軟實時調度。(軟硬實時調度:)
編輯本段
分布式實時調度
分布式實時調度算法可以分為兩類:
1)以RMS為基礎的廣義RMS調度
2)以風車調度Sr為基礎的DSr調度
GRMS
GRMS將RMS用于分布式實時系統,對RMS的一些基本概念如可調度性,可搶占星等進行擴展,同時引入一
些新的概念,如系統一致性。
DSR
定義:設?X={Xi}是一個分布式的任務集合,1≤i≤n,分布式系統中有m個節點,對于Xi∈X,Xi={Ti1,?Ti2,…,?Tim},Tij是Xi在Nj節點上的任務,Xi有距離約束ci。對于Tij?有執行時間eij。
定義lk=ck/2「lg(ck/cl), Bik=lk·2lg(ci/lk)」。
ΦNj(lk)=∑eij/Bik,(i=1..n)為調度任務集在節點Nj上的密度。
選擇一個使∑ΦNj(lk),j=1..m)最小值的lk作為系統的劃分基r*。?
算法前提: 所有的任務有相同的執行節點,每個任務在網絡節點上有同樣的距離約束。
RMS
百科名片
任務按單調速率優先級分配(RMPA)的調度算法,稱為單調速率調度(RMS)。RMPA是指任務的優先級按任務周期T來分配。它根據任務的執行周期的長短來決定調度優先級,那些具有小的執行周期的任務具有較高的優先級,周期長的任務優先級低。
目錄
RMS(Rate-Monotonic Scheduling)調度算法
有效值(root mean square)
Rights Management Services
Record Management System
Remote Monitoring System
Richard Matthew Stallman展開
編輯本段
RMS(Rate-Monotonic Scheduling)調度算法
簡介
不考慮n=1的情況。RMS是單處理器下的最優靜態調度算法。1973年Liu和Layland發表的這篇文章的前半部分首次提出了RM調度算法在靜態調度中的最優性.它的一個特點是可通過對系統資源利用率的計算來進行任務可調度性分析, 算法簡單、有效, 便于實現。不僅如此,他們還把系統的利用系數(utilization factor)和系統可調度性聯系起來, 推導出用RM調度所能達到的最小系統利用率公式. 同時,這篇論文中透露出來的證明思想和方法也被人們所效仿. 下面就讓我們來看看這篇文章中關于RM調度算法的重要結論。
任何一個結論都有一個模型假設, 讓我們先列出這里的假設:
(A1) 所有的任務請求都是周期性的,必須在限定的時限內完成;
(A2) 任務的作業必須在該任務的下一個作業發生之前完成, 這樣避免了考慮隊列問題; 在這里, 我們對任務和作業不作特別的區分, 因為一個任務請求就是一個作業。
(A3) 任務之間都是獨立的,每個任務的請求不依賴于其他任務請求的開始或完成;
(A4) 每個任務的運行時間是不變的,這里任務的運行時間是指處理器在無中斷情況下用于處理該任務的時間;
(A5) 所有的非周期性任務都在特殊的情況下運行,比如系統初始化或系統非正常緊急處理程序。
(A6) 其它一些假設, 比如, 單處理器, 可搶占調度, 任務切換的時間忽略不計等等。
RMS算法
(1) 任務T i (P i, Ci, D i) 模型: 周期為P i,計算時間為Ci, 時限D i 為周期終點。任務在周期起點釋放, 高優先級任務
可搶占低優先級任務的執行。
(2) 優先級分配方法: 靜態固定分配。優先級與周期成反比, 周期越短優先級越高。
(3) 可調度性分析: 如果任務集滿足下式, 則該任務集可調度。
定理1
n個獨立的周期任務可以被RMPA調度,如果U<=n(2^(1/n)-1)。
一個任務的響應時間(respon time)是指一個任務請求,這個任務實際完成的時間跨度. 在靜態調度中, 任務的臨界時刻(critical instant)這個概念被首先提出來.它被定義為一個特定的時刻, 如果在這個時刻有這個任務的請求, 那么這個任務就會需要最大的響應時間. 由此得出
定理1: 一個任務的臨界時間就是比這個任務優先級高的所有任務同時發出請求的時刻.
證明: 由于一個任務的響應時間是它自己的負載時間加上被其它優先級高的任務所打斷的時間.由于自己的負載時間是固定的, 我們考慮在什么時候任一高優先級的任務會有最長的打斷時間. 顯然,只有當這一高優先級的任務與該任務同時請求處理時, 才能可能產生最大的打斷時間.
定理1的價值在于它找到了一個證明一個調度算法能否調度任一任務集充分必要條件, 那就是所有任務同時請求執行的時的情況下每個任務仍能滿足各自的期限, 那么這個任務集就可以被這個調度算法調度.
有了這個推論, 我們就可以證明RM調度的最優性了.
定理2
如果一個任務集能夠被靜態調度, 那么RMS算法就能夠調度這個任務集. 從這個意義上說, RMS是最優的靜態調度算法.
這個定理的證明方法就是有名的交換法. 證明思路如下:
假設一個任務集S采用其他靜態優先級算法可以調度,那么總有這樣兩個優先級相鄰的任務i和j,有Ti>Tj,而Pi≤Pj.把Ti和Tj的優先級Pi和Pj互換,明顯可以看出這時S仍然可以調度, 因為在所有任務同時請求的情況下,交換這兩個任務不會影響其它任務的完成時間, 同時這兩個任務都可以在各自期限內完成.按照這樣的方法,其他任何靜態優先級調度最終都可以轉換成RM調度.
RMS已被證明是靜態最優調度算法, 開銷小, 靈活性好,是實時調度的基礎性理論。即使系統瞬時過載, 也完全可預測哪些任務丟失時限。缺點是處理機利用率較低, 最壞的情況下,當n→∞時, 不超過ln2(≈ 70%)。另外, RMS是充分但非必要條件。而在一般情況下,對于隨機的任務集大約只有88%.70%或者88%的處理器利用率對于許多實時應用來說是一個嚴重的限制,動態調度算法如最早截止期最先(earliest deadlinefirst,EDF)或者最少空閑時間最先(least laxity first,LLF)已經被證明是最優的,并且能夠實現100%的處理器利用率.
具有資源同步約束的RMS調度
當實時任務
間共享資源時, 可能出現低優先級任務不可預測地阻塞高優先級任務執行的情況,叫優先級倒置。這時RMS 算法不能保證任務集的調度, 必須使用有關協議控制優先級的倒置時間。常用的協議有優先級頂級協議和堆資源協議,使用這些協議可使優先級的倒置時間最多為一個資源臨界段的執行時間, 并且不會發生死鎖。
基于RMS 的非周期任務的調度
實時系統中的非周期任務可采用延遲服務器算法或隨機服務器算法進行調度。它們的最大特點是可在周期任務的實時調度環境下處理隨機請求。兩者的基本思想是將非周期任務轉化成周期任務,再利用RMS算法進行調度。前者用一個或幾個專用的周期任務執行所有非周期任務,這種周期任務叫非周期任務服務器。根據周期大小,服務器有固定優先級, 服務器的執行時間被稱為預算, 它在每個服務器周期Ts的起點補充。只要服務器有充足的預算, 就可在其周期內為非周期任務服務。該算法實現簡單, 但可調度性分析較難, 有時會出現抖動,可能發生一個非周期任務在相鄰兩個服務器周期中連續執行2倍預算的現象, 與RMS理論不符,需要適當修改RMS算法。隨機服務器算法與延遲服務器算法相似, 但預算不是在每個周期起點補充,而是在預算消耗Ts時間之后再補充。該算法與RMS分析算法一致, 但實現復雜。人物如份額。
編輯本段
有效值(root mean square)
RMS值實際就是有效值,就是一組統計數據的平方的平均值的平方根。
RMS=(X1平方+X2平方+......+Xn平方)/n 的1/2次方。
在直流(DC)電路中,電壓或電流的定義很簡單,但在交流(AC)電路中,其定義就較為復雜,有多種定義方式。均方根(rms)指的是定義AC波的有效電壓或電流的一種最普遍的數學方法。
要得出rms值需要對表示AC波形的函數執行三個數學操作:
(1)計算波形函數(一般是正弦波)的平方值。
(2)對第一步得到的函數求時間平均值。
(3)求第二步得到的函數的平方根。
在一個阻抗由純電阻組成的電路中,AC波的rms值通常稱作有效值或DC等價值。比如,一個100V rms的AC源連接著一個電阻器,并且其電流產生50W熱量,那么對于100V連接著這個電阻器的電源來說也將產生50W的熱量。
對正弦波來說,rms值是峰值的0.707倍,或者是峰-峰值的0.354倍。家用電壓是以rms來表示的。所謂的“117V”的交流電,其峰值(pk)約為165V,峰-峰值(pk-pk)約為330V。
編輯本段
Rights Management Services
Microsoft Windows Rights Management 服務 (RMS),是一種與應用程序協作來保護數字內容(不論其何去何從)的安全技術,專為那些需要保護敏
都享負盛名!
斯托曼是一名堅定的自由軟件運動倡導者,與其他提倡開放源代碼的人不同,斯托曼并不是從軟件質量的角度而是從道德的角度來看待自由軟件。他認為使用專利軟件是非常不道德的事,只有附帶了源代碼的程序才是符合其道德標準的。對此許多人表示異議,并也因此有了自由軟件運動與開源軟件運動之分
代表作
— 創立自由軟件 GNU
— Emacs 文字編輯器
— GCC編譯器
— GDB調試器
斯托曼還曾獲得過多項榮譽
1990年度麥克阿瑟獎(MacArthur Fellowship)
1991年度美國計算機協會(Association for Computing Machinery)頒發的Grace Hopper Award以表彰他所開發的的Emacs文字編輯器
1996年獲頒瑞典皇家技術學院榮譽博士學位
1998年度電子前線基金會(Electronic Frontier Foundation)先鋒獎(Pioneer Award)
1999年Yuri Rubinsky紀念獎
2001年獲頒格拉斯哥大學榮譽博士學位
2001年武田研究獎勵賞(武田研究奨勵賞)
2002年成為美國國家工程院院士
2003年獲頒布魯塞爾大學榮譽博士學位
Richard Stallman與中國“龍芯”
其他
有開源社區精神領袖之稱的Richard Stallman在多個場合呼吁開源社區大力支持基于龍芯電腦的軟件開發,主要原因是在OLPC項目使用微軟的操作系統,走商業化道路后,龍芯是目前唯一堅持開源的電腦CPU。
RMS(記錄管理系統)是MIDP的一個子系統.為開發者提供了數據持久性存儲的解決方案,應用程序的數據可以在MIDlet多次調用之后依然保持不變,即使重新啟動設備或者更換電池也不會造成數據丟失。
擴展閱讀:
1
/
2
/view/
開放分類:
windows,電路,有效值