何時排程:程序狀態變化的時候
目標:
評價排程演算法指標:
公平性:
執行排程程式的情況:
排程中搶占的情況:
排程演算法有三類:
fcfs (先來先服務) (first come, first served)
spn(sjf)srt (短程序優先(短作業優先)剩餘時間優先) shortest process next(shortest job first) shortest remaining time
hrrn (最高響應比優先) highest response ratio next
round robin (輪循) 使用時間切片和搶占來輪流執行任務
multilevel feedback queues (多級反饋佇列) 優先順序佇列中的輪循
fair share scheduling (公平共享排程)
規則:
舉個栗子:
如果程序執行時間短的先到的話周轉時間小,反之則大。
優點:簡單
缺點:
規則:
當乙個程序執行時,來了乙個程序比當前最短的還短的情況進行分類:
舉個栗子:
優點:
缺點:
規則:
改進方式:
用r = (w + s) / s,代替原有的普通執行時間。其中w為等待時間;s為執行時間。並且r值越高表示等待的時間越長,就會優先的排程這種程序。
優點:
缺點:
規則:
舉個栗子:
其中時間片設定應滿足:維持上下文切換開銷處於1%以內,這樣的情況下99%的時間都是在程序的執行中
特點:
規則:
示意圖:
特點:
規則:
ps:在linux中使用的就是一種公平共享排程。
效能指標:
分類:
時間軸:
若任務為週期任務,其週期必須大於執行時間
硬時限:(對應於硬實時系統)
軟時限:(對應於軟實時系統)
排程演算法:
rm(rate monotonic)速率單調排程:任務週期確定優先順序
edf(earliest deadline first)最早期限排程:截止期限確定優先順序
規則:
舉個例子
有兩個程序 p1 和 p2。p1 和 p2 的週期分別為 50 和 100,即 ρ1 = 50 和 ρ2= 100。p1 和 p2 的處理時間分別為 t1 = 20 和 t2 = 35。每個程序的截止期限要求。
由週期比較可以看出p1的優先順序大於p2
所以甘特圖如下所示:
p1 開始,並在時間 20 完成 cpu 執行,從而滿足第乙個截止期限。
p2 在這點開始執行,並執行直到時間 50。此時,它被 p1 搶占,儘管它的 cpu 執行仍有 5ms 的時間。
p1 在時間 70 完成 cpu 執行,在這點排程器恢復 p2。
p1 在時間 75 完成 cpu 執行,也滿足第乙個截止期限。
系統一直空閒直到時間 100,這時,p1 再次被排程。
單調速率排程可認為是最優的,因為如果一組程序不能由此演算法排程,它不能由任何其他分配靜態優先順序的演算法來排程。對於cpu利用率比較高的程序,它們不能使用單調速率演算法來排程。
儘管是最優的,然而單調速率排程有乙個限制,cpu 的利用率是有限的,並不總是可能完全最大化 cpu 資源。排程 n 個程序的最壞情況下的 cpu 利用率為:
對於具有乙個程序的系統,cpu 利用率是 100%;但是當程序數量接近無窮時,它大約接近 69%。對於具有兩個程序的系統,cpu 利用率是 83%。圖 1 和圖 2 排程的兩個程序的組合利用率為 75%,因此單調速率排程演算法保證能夠排程它們。若兩個程序的組合利用率為 94%則會出現錯誤,因此,單調速率排程不能保證它們可以排程以便滿足它們的截止期限。例如以下例子:
失敗例子
假設程序 p1 具有週期 ρ1=50 和 cpu 執行 t1 = 25。程序 p2 的對應值是 ρ2=80 和 t2 = 35。單調速率排程將為程序 p1 分配較高的優先順序,因為它具有較短的週期。兩個程序的總 cpu 利用率為0.94。所以甘特圖如下所示:
p1 執行,直到在時間 25 完成 cpu 執行。
p2 開始執行,並執行直到時間 50,這時它被 p1 搶占;p2 在 cpu 執行中仍有 10ms 的剩餘。
程序 p1 執行直到時間 75,導致 p2 在時間 85 結束,因而超過了在時間 80 完成 cpu 執行的截止期限。
規則:
以rm的失敗例子進行舉例:
就可以看出p1&p2都能在期限內完成。
與單調速率排程不一樣,edf 排程不要求程序應是週期的,也不要求程序的 cpu 執行的長度是固定的。唯一的要求是,程序在變成可執行時,應宣布它的截止期限。
edf 排程具有吸引力的地方是,它是理論上最佳的。從理論上說,它可以排程程序,使得每個程序都可以滿足截止期限的要求並且 cpu 利用率將會是100%。然而,在實際中,由於程序的上下文切換和中斷處理的代價,這種級別的 cpu 利用率是不可能的。
未完待續
嵌入式作業系統概述
實時作業系統 rtos 設計成提供乙個對真實世界的事件的及時響應 timely response 出現在真實世界中的事件可能有乙個時間限制 deadline 在此期限之前,實時 嵌入式系統必須確保在有限時間內對此事件做出相應的響應。根據相應事件的時間限制,嵌入式實時作業系統可以分為兩類 1 硬實時嵌...
嵌入式作業系統簡介
嵌入式作業系統簡介 商用型系統 vxworks 半開源 wince 半開源 免費型 linux ucosii 只適用於控制,不適合遠端,不自帶網路協議棧 linux模仿unix unix是在於1969年在at t的貝爾實驗室開發 備註 丹尼斯.里奇 unix之父 c語言之父 gpl協議 gpl同其它...
嵌入式作業系統uCOSII
2.4 常用資料結構 2.4.1 程式控制塊 本質上是結構體 typedef struct tbctcb 2.4.2 控制塊的組織 鍊錶 typedef struct tcbtcb 位圖!3 ucossii中的任務 任務組成 任務程式 函式 任務堆疊和任務控制塊 具有私有空間的任務叫做程序,沒有私有...