# Scheduling Algorithms for Multiprogramming in a Hard-Real-Time Environment
Author
C. L. Liu, Project MAC, Massachusetts Institute of Technology
Hames W. Layland, Jet Propulsion Laboratory, California Institute of Technology
Article URL
https://www.cs.ru.nl/~hooman/DES/liu-layland.pdf
# Introduction and Background
電腦在工業製程的控制與監測上的應用正快速增加,而且未來只會更普遍。在這類系統裡,電腦常常不是只做一般運算,而是必須負責一些有嚴格時間限制的控制與監控工作。有些應用環境中,電腦同時要處理兩類工作,一類是時間關鍵的控制與監測任務,另一類則是不具時間關鍵性的批次工作;但也有另一類系統,完全沒有非即時性的工作存在,整台電腦都專門用來執行時間關鍵任務。作者把這種後者稱為 pure process control ,本文的分析就是以這種環境作為主要研究對象。
本文將探討兩種適用於這類系統的排程演算法,而且兩者都有兩個共同特徵:第一,它們都是 priority-driven,也就是由優先權決定哪個 task 先執行;第二,它們都是 preemptive,也就是只要有更高優先權的 task 到來,正在執行的較低優先權 task 就會立刻被中斷。這兩種演算法中的第一種採用固定優先權指派,作者指出它可以讓處理器使用率達到大約 70% 甚至更高;第二種則採用動態優先權指派,能進一步達到處理器的完全利用。此外,作者也提到,文中還會討論這兩種方法的混合形式。換句話說,Introduction 的重點是在告訴讀者:這篇論文要處理的是純 hard real-time 控制系統中的 task scheduling 問題,並且要比較固定優先權與動態優先權兩種排程思路。
程序控制電腦會執行一個或多個控制與監測功能,例如天線追蹤太空船便是一個典型例子。每一個功能背後都不是單一動作,而是由一組或多組 task 所組成。有些 task 會因為外部設備事件而被觸發,有些則是因為其他 task 中發生的事件而被觸發。不過不管來源是什麼,task 都有一個共同特性,就是不能在觸發事件發生之前先執行,而且每個 task 都必須在某個固定時間限制內完成。作者強調,這種必須保證在期限內完成服務的環境,就是 hard-real-time;它和 soft-real-time 的差異在於,soft real-time 只要求整體反應時間的統計表現可接受,但 hard real-time 則要求每個任務都必須得到明確保證。
hard real-time 系統中的任務具有明確的截止時間,不能只用傳統 multiprogramming 或 time-sharing 的觀點來看待;而既有 real-time 相關文獻又不是假設過於理想化,就是只談管理或框架而缺乏具體演算法,所以需要一套更系統化的理論,來分析在這種環境下 task 是否能被安全排程,以及哪種優先權指派方式才是最合理的。
# Environment
Purpose
為對Hard-Real-Time Scheduling做數學分析,需先為其建立模型。
Basic Assumption
週期性
所有 hard deadline task 的 request 都是 periodic 。
相鄰兩次 request 的時間間隔固定不變。
也就是每個 task 都有固定週期。
時限性
每個 task 必須在它的 下一次 request 發生前完成 。
也就是 deadline 等於該 task 的 request period。
這裡只考慮 run-ability constraint,不考慮更複雜的 deadline 型態。
獨立性
某個 task 的 request 不依賴其他 task 的初始化或完成。
也就是 task 之間沒有直接的觸發或完成相依關係。
時間不變性
每個 task 的 run-time 對自己而言是固定值,不隨時間改變。
這裡的 run-time 指的是:
在不被中斷 情況下
處理器執行完這個 task 所需的時間
非特殊性
系統中的 non-periodic tasks 被視為特殊用途。
例如:
它們執行時會暫時排擠 periodic tasks。
但它們自己不具有 hard critical deadlines 。
Mathematic Modeling
在上述定義下,每個任務皆可被兩個數字所描述:
request period: T i T_i T i
run-time: C i C_i C i
也就是說,一個周期性任務可被表示為:
τ i = ( T i , C i ) \tau_i=(T_i,C_i) τ i = ( T i , C i )
Request Rate
Request Rate指的是任務被請求的頻率,也是請求週期的倒數:
r e q u e s t r a t e = 1 T i request\space rate=\frac{1}{T_i} r e q u es t r a t e = T i 1
Definition of Scheduling Algorithm
“A scheduling algorithm is a set of rules that determine the task to be executed at a particular
moment.”
The feature of Scheduling Alorithm in which this paper study
Preemptive:若有更高優先權的 task request 到達
正在執行的 task 會立刻被中斷
新到的高優先權 task 馬上開始執行
Priority driven:哪個 task 先執行,由其優先權決定
Three types of priority-based scheduling
Static Scheduling
若 task 的 priorities 一次決定後就固定不變,稱為 static scheduling 。
這也叫做 fixed priority scheduling 。
Dynamic Scheduling
若 task 的 priority 可能會隨著不同 request 改變,稱為 dynamic scheduling 。
Mixed Scheduling
若有些 task 的 priority 固定,但其他 task 的 priority 會變動,稱為 mixed scheduling algorithm 。
# A Fixed Priority Scheduling Algorithm
Purpose:推導能使靜態排程最佳化的優先權分配規則
Noun Explanation
Deadline:某任務請求的deadline指的是該任務的下次週期性請求的起始時間點。
Overflow:如果某任務在超過deadline之後仍未被完成,如果deadline時間點為t時,則我們會說在時間t發生overflow。
Feasible:若一個排程演算法是feasible的,則該演算法不會導致任何overflow發生。
Response Time:某指定任務從被請求當下到該請求被回應後的結束時間點,兩者之間的時間跨度稱為response time。
Critical Instant:某任務中具有最大response time的request,該request被送出的當下時間點被稱為critical instant。
Critical Time Zone:某任務的critical instant到處理完該任務請求之回應的結束時間點,兩者之間的時間區段被稱為Critical time zone。
# Theorem 1
Description
“A critical instant for any task occurs whenever the task is requested simultaneously
with requests for al l higher priority tasks.”
“Critical Instant發生在某任務與比該任務具有更高優先權之任務,兩者同時被請求。”
Proof
假設 τ 1 , τ 2 , ⋯ , τ m \tau_1,\tau_2,\cdots,\tau_m τ 1 , τ 2 , ⋯ , τ m 表示一組以優先權排列順序的任務,且 p r i ( τ m ) < p r i ( τ i ) pri(\tau_m)<pri(\tau_i) p r i ( τ m ) < p r i ( τ i ) ,考慮 τ m \tau_m τ m 某次請求發生於 t 1 t_1 t 1 ,以及 τ i \tau_i τ i 在區間 [ t 1 , t 1 + T m ] [t_1,t_1+T_m] [ t 1 , t 1 + T m ] 內的多次請求。
由於 τ i \tau_i τ i 具有較高優先權,因此每次request都能搶佔 τ m \tau_m τ m ,並延後其完成時間。若
若將τ i \tau_i τ i 的第一次 request 時刻 t 2 t_2 t 2 向前移動,則 τ m \tau_m τ m 的完成時間不會提早,只會維持不變或進一步延後,因此當 t 2 = t 1 t_2 = t_1 t 2 = t 1 時,τ i \tau_i τ i 對 τ m \tau_m τ m 的干擾最大。對所有高優先權 tasks 重複同樣推理,即可得知某 task 的 critical instant 發生在它與所有高優先權 tasks 同時被 request 的時刻。
使用歸納法,對於所有 τ i w h e r e i = 2 , ⋯ , m − 1 \tau_i\space where \space i=2,\cdots,m-1 τ i w h er e i = 2 , ⋯ , m − 1 重複同上推理,可證本定理成立。
# Theorem 2
Description
“If a feasible priority assignment exists for some task set, the rate-monotonic priority
is feasible for that task set.”
“如果對於某個任務集存在可行的優先權分配方案,則速率單調優先權對於該任務集也是可行的。”
Proof
考慮普遍的排程案例,在此假設有兩任務 τ 1 , τ 2 \tau_1, \tau_2 τ 1 , τ 2 、完成各任務所需時間為 C 1 , C 2 C_1,C_2 C 1 , C 2 。另 T 1 , T 2 T_1, T_2 T 1 , T 2 為兩任務各自的週期,且 T 1 < T 2 T_1<T_2 T 1 < T 2 。先考慮第一個情況 p r i ( τ 1 ) > p r i ( τ 2 ) pri(\tau_1)>pri(\tau_2) p r i ( τ 1 ) > p r i ( τ 2 ) ,根據Theorem 1,要使排程feasible,必須滿足以下不等式:
根據上圖可以發現:
τ 1 \tau_1 τ 1 在τ 2 \tau_2 τ 2 單次週期結束前完成最大數量的任務之所需消耗時間:⌊ T 2 T 1 ⌋ C 1 \left\lfloor\frac{T_2}{T_1}\right\rfloor C_1 ⌊ T 1 T 2 ⌋ C 1
τ 2 \tau_2 τ 2 在單次周期內完成任務所需時間:C 2 C_2 C 2
因此τ 2 \tau_2 τ 2 完成單次任務所需最大時間 T 2 T_2 T 2 滿足以下不等式(1):
T 2 ≥ ⌊ T 2 T 1 ⌋ C 1 + C 2 T_2\geq \left\lfloor\frac{T_2}{T_1}\right\rfloor C_1 +C_2 T 2 ≥ ⌊ T 1 T 2 ⌋ C 1 + C 2
考慮第二種情況 p r i ( τ 1 ) < p r i ( τ 2 ) pri(\tau_1)<pri(\tau_2) p r i ( τ 1 ) < p r i ( τ 2 ) :
根據上圖可以發現:
τ 1 \tau_1 τ 1 完成單次任務所需時間:C 1 C_1 C 1
τ 2 \tau_2 τ 2 搶佔τ 1 \tau_1 τ 1 後優先完成任務所需時間:C 2 C_2 C 2
因此τ 1 \tau_1 τ 1 完成單次任務所需最大時間 T 1 T_1 T 1 滿足以下不等式(2):
T 1 ≥ C 1 + C 2 T_1\geq C_1+C_2 T 1 ≥ C 1 + C 2
對不等式(2)等號兩邊同乘 ⌊ T 2 T 1 ⌋ \left\lfloor\frac{T_2}{T_1}\right\rfloor ⌊ T 1 T 2 ⌋ ,可得:
⌊ T 2 T 1 ⌋ T 1 ≥ ⌊ T 2 T 1 ⌋ C 1 + ⌊ T 2 T 1 ⌋ C 2 \left\lfloor\frac{T_2}{T_1}\right\rfloor T_1\geq \left\lfloor\frac{T_2}{T_1}\right\rfloor C_1+ \left\lfloor\frac{T_2}{T_1}\right\rfloor C_2 ⌊ T 1 T 2 ⌋ T 1 ≥ ⌊ T 1 T 2 ⌋ C 1 + ⌊ T 1 T 2 ⌋ C 2
考慮題目條件 T 2 > T 1 T_2>T_1 T 2 > T 1 ,因此:
T 2 ≥ ⌊ T 2 T 1 ⌋ T 1 ≥ ⌊ T 2 T 1 ⌋ C 1 + ⌊ T 2 T 1 ⌋ C 2 ≥ ⌊ T 2 T 1 ⌋ C 1 + C 2 T_2\geq \left\lfloor\frac{T_2}{T_1}\right\rfloor T_1\geq \left\lfloor\frac{T_2}{T_1}\right\rfloor C_1+ \left\lfloor\frac{T_2}{T_1}\right\rfloor C_2 \geq \left\lfloor\frac{T_2}{T_1}\right\rfloor C_1+ C_2 T 2 ≥ ⌊ T 1 T 2 ⌋ T 1 ≥ ⌊ T 1 T 2 ⌋ C 1 + ⌊ T 1 T 2 ⌋ C 2 ≥ ⌊ T 1 T 2 ⌋ C 1 + C 2
上述數學式可簡化為:
T 2 ≥ ⌊ T 2 T 1 ⌋ C 1 + C 2 T_2 \geq \left\lfloor\frac{T_2}{T_1}\right\rfloor C_1+ C_2 T 2 ≥ ⌊ T 1 T 2 ⌋ C 1 + C 2
由於不等式(2)可推導出不等式(1),這表示兩任務不管誰優先權高,若滿足上述條件,皆可使排程可行。這代表周期較高的任務不一定要被配為最高優先權;週期低的任務也可以是最高優先權。以上優先權分配法被稱為 rate-monotonic priority assignment ,此分配法可以解決其他固定優先權分配法不能排程的任務集。所以,要證明定理2,僅需以下幾段話就能滿足:
假設 τ 1 , τ 2 , ⋯ , τ m \tau_1,\tau_2,\cdots,\tau_m τ 1 , τ 2 , ⋯ , τ m 為某特定固定優先權分配法排程可行、大小為m的任務集。根據優先權排序,對於排序中兩相鄰優先權對應的任務 τ i , τ j \tau_i,\tau_j τ i , τ j 。在rate-monotonic優先權分配法中,若 T i > T j T_i>T_j T i > T j ,則就算對調兩任務的優先權,排程仍維持可行。根據上述方式,讓rate-monotonic優先權分配法對任務集中依優先權排序,將兩兩成對的兩任務交換優先權,皆滿足排程可行,因此定理2得證。
# Achievable Processor Ultilization
# Basic Concept
對於單一任務,假設其完成時間為C、週期為T,則該任務在處理器中的使用率為 C T \frac{C}{T} T C 。若有一由m個任務所組成的任務集,該任務集的使用率為:
U = ∑ i = 1 m C i T i U=\sum^m_{i=1}{\frac{C_i}{T_i}} U = i = 1 ∑ m T i C i
若要透過直接調整 C i , T i C_i,T_i C i , T i 以提高使用率,則必須先確保調整後的所有任務在critical instant時仍需於deadline前完成。
若要精確地找出使用率最大能調到多少,則必須先定義fully utilize:當某任務集在某優先權分配下,是可行的,且若當增加該任務集中任一任務之完成時間,該優先權分配會變為不可行時,則此任務集會被稱為Fully Utilize。
為了找出最大使用率,且在該使用率下能保證該任務集之優先權分配是可行的,我們必須找出least upper bound:
對於 rate-monotonic priority assignment:考慮任務集中所有任務之所有可能的請求周期與完成時間,使用rate-monotonic priority assignment所得的使用率之最大下界,亦即所有可能的最大使用率之最小下界。
對於 given fixed priority assignment:所有使得處理器能fully ultilize的所有任務集之所有使用率的最小值。
若使用率在 least upper bound 之內 ⇒ 保證可行 ; 若使用率在 least upper bound 之上 ⇒ 不保證所有任務集可行。
# Theorem 3
Definition
“For a set of two tasks with mixed priority assignment, the least upper bound to the processor utilization factor is U = 2 ( 2 1 2 − 1 ) U=2(2^{\frac{1}{2}}-1) U = 2 ( 2 2 1 − 1 ) ”
Proof
令 τ 1 , τ 2 \tau_1,\tau_2 τ 1 , τ 2 為兩個周期分別為 T 1 , T 2 T_1,T_2 T 1 , T 2 、執行時間為 C 1 , C 2 C_1,C_2 C 1 , C 2 的任務。假設 T 2 > T 1 T_2>T_1 T 2 > T 1 ,根據 rate-monotonic priority assignment, p r i ( τ 1 ) > p r i ( τ 2 ) pri(\tau_1)>pri(\tau_2) p r i ( τ 1 ) > p r i ( τ 2 ) 。在 critical time zone 內調整 C 2 C_2 C 2 使 fully ultilize 所有處理器可處理時間,則會有兩個case發生:
在case 1 中,以時間點 T 2 T_2 T 2 為界線,若 τ 1 \tau_1 τ 1 在 critical time zome 中最後一個週期之請求有辦法完成,如圖任務一處理時間為 0 < C 1 < T 2 − ⌊ T 2 T 1 ⌋ T 1 0 \lt C_1 \lt T_2-\left\lfloor\frac{T_2}{T_1} \right\rfloor T_1 0 < C 1 < T 2 − ⌊ T 1 T 2 ⌋ T 1 ,亦即 τ 1 \tau_1 τ 1 在辦法在第二個 τ 2 \tau_2 τ 2 到來前完成的話,則任務二最大可執行時間為:
C 2 = T 2 − ⌈ T 2 T 1 ⌉ C 1 C_2 = T_2- \left\lceil\frac{T_2}{T_1} \right\rceil C_1 C 2 = T 2 − ⌈ T 1 T 2 ⌉ C 1
此時的利用率為:
U = C 1 T 1 + C 2 T 2 = C 1 T 1 + T 2 − ⌊ T 2 T 1 ⌋ C 1 T 2 U=\frac{C_1}{T_1}+\frac{C_2}{T_2}
=
\frac{C_1}{T_1}+\frac{T_2-\left\lfloor \frac{T_2}{T_1} \right\rfloor C_1}{T_2} U = T 1 C 1 + T 2 C 2 = T 1 C 1 + T 2 T 2 − ⌊ T 1 T 2 ⌋ C 1
∴ U = 1 + C 1 ( 1 T 1 − 1 T 2 ⌈ T 2 T 1 ⌉ ) \therefore U=1+C_1(\frac{1}{T_1}-\frac{1}{T_2}\left\lceil \frac{T_2}{T_1}\right\rceil) ∴ U = 1 + C 1 ( T 1 1 − T 2 1 ⌈ T 1 T 2 ⌉ )
在case 2中,若 τ 1 \tau_1 τ 1 無法完成在 crtical ttime zone 中的最後一個週期之請求,如圖上灰色區塊的任務一執行時間 C 2 ≥ T 2 − ⌊ T 2 T 1 ⌋ C_2\geq T_2-\left\lfloor \frac{T_2}{T_1} \right\rfloor C 2 ≥ T 2 − ⌊ T 1 T 2 ⌋ ,亦即第 ⌈ T 2 T 1 ⌉ \left\lceil\frac{T_2}{T_1}\right\rceil ⌈ T 1 T 2 ⌉ 個 τ 1 \tau_1 τ 1 請求與第二個 τ 2 \tau_2 τ 2 的請求重疊,則任務二最大可執行時間為:
C 2 = ⌊ T 2 T 1 ⌋ T 1 − ⌊ T 2 T 1 ⌋ C 1 C_2=\left\lfloor\frac{T_2}{T_1}\right\rfloor T_1-\left\lfloor\frac{T_2}{T_1}\right\rfloor C_1 C 2 = ⌊ T 1 T 2 ⌋ T 1 − ⌊ T 1 T 2 ⌋ C 1
此時的利用率為:
U = C 1 T 1 + ⌊ T 2 T 1 ⌋ T 1 − ⌊ T 2 T 1 ⌋ C 1 T 2 U=\frac{C_1}{T_1}+\frac{\left\lfloor\frac{T_2}{T_1}\right\rfloor T_1-\left\lfloor\frac{T_2}{T_1}\right\rfloor C_1}{T_2} U = T 1 C 1 + T 2 ⌊ T 1 T 2 ⌋ T 1 − ⌊ T 1 T 2 ⌋ C 1
∴ U = T 1 T 2 ⌊ T 2 T 1 ⌋ + C 1 ( 1 T 1 − 1 T 2 ⌊ T 2 T 1 ⌋ ) \therefore U=\frac{T_1}{T_2}\left\lfloor\frac{T_2}{T_1}\right\rfloor
+
C_1(\frac{1}{T_1}-\frac{1}{T_2}
\left\lfloor\frac{T_2}{T_1}\right\rfloor
) ∴ U = T 2 T 1 ⌊ T 1 T 2 ⌋ + C 1 ( T 1 1 − T 2 1 ⌊ T 1 T 2 ⌋ )
可以從下圖觀察到,利用率的極小值發生在以上兩個 case 的交界處:
也就是當:
C 1 = T 2 − ⌊ T 2 T 1 ⌋ T 1 ⟹ C 2 = T 2 − ⌈ T 2 T 1 ⌉ C 1 C_1=T_2-\left\lfloor\frac{T_2}{T_1}\right\rfloor T_1 \implies
C_2 = T_2- \left\lceil\frac{T_2}{T_1} \right\rceil C_1
C 1 = T 2 − ⌊ T 1 T 2 ⌋ T 1 ⟹ C 2 = T 2 − ⌈ T 1 T 2 ⌉ C 1
此時利用率為:
U = 1 T 1 ( T 2 − ⌊ T 2 T 1 ⌋ T 1 ) + 1 T 2 ( T 2 − ⌈ T 2 T 1 ⌉ C 1 ) U=\frac{1}{T_1}(T_2-\left\lfloor\frac{T_2}{T_1}\right\rfloor T_1)
+
\frac{1}{T_2}(T_2- \left\lceil\frac{T_2}{T_1} \right\rceil C_1) U = T 1 1 ( T 2 − ⌊ T 1 T 2 ⌋ T 1 ) + T 2 1 ( T 2 − ⌈ T 1 T 2 ⌉ C 1 )
= T 2 T 1 − ⌊ T 2 T 1 ⌋ + 1 − 1 T 2 ⌈ T 2 T 1 ⌉ ( T 2 − T 1 ⌊ T 2 T 1 ⌋ ) =\frac{T_2}{T_1}-\left\lfloor\frac{T_2}{T_1}\right\rfloor + 1 -
\frac{1}{T_2}\left\lceil\frac{T_2}{T_1}\right\rceil(T_2-T_1\left\lfloor\frac{T_2}{T_1}\right\rfloor) = T 1 T 2 − ⌊ T 1 T 2 ⌋ + 1 − T 2 1 ⌈ T 1 T 2 ⌉ ( T 2 − T 1 ⌊ T 1 T 2 ⌋ )
= 1 − ( T 2 T 1 + ⌊ T 2 T 1 ⌋ + ⌈ T 2 T 1 ⌉ − T 1 T 2 ⌊ T 2 T 1 ⌋ ⌈ T 2 T 1 ⌉ ) =1-(\frac{T_2}{T_1}+\left\lfloor\frac{T_2}{T_1}\right\rfloor+\left\lceil\frac{T_2}{T_1}\right\rceil
-
\frac{T_1}{T_2}\left\lfloor\frac{T_2}{T_1}\right\rfloor\left\lceil\frac{T_2}{T_1}\right\rceil) = 1 − ( T 1 T 2 + ⌊ T 1 T 2 ⌋ + ⌈ T 1 T 2 ⌉ − T 2 T 1 ⌊ T 1 T 2 ⌋ ⌈ T 1 T 2 ⌉ )
= 1 − T 1 T 2 ( T 2 2 T 1 2 + T 2 T 1 ⌊ T 2 T 1 ⌋ + T 2 T 1 ⌈ T 2 T 1 ⌉ − ⌊ T 2 T 1 ⌋ ⌈ T 2 T 1 ⌉ ) =1-\frac{T_1}{T_2}(\frac{T^2_2}{T^2_1}+\frac{T_2}{T_1}\left\lfloor\frac{T_2}{T_1}\right\rfloor+\frac{T_2}{T_1}\left\lceil\frac{T_2}{T_1}\right\rceil
-
\left\lfloor\frac{T_2}{T_1}\right\rfloor\left\lceil\frac{T_2}{T_1}\right\rceil) = 1 − T 2 T 1 ( T 1 2 T 2 2 + T 1 T 2 ⌊ T 1 T 2 ⌋ + T 1 T 2 ⌈ T 1 T 2 ⌉ − ⌊ T 1 T 2 ⌋ ⌈ T 1 T 2 ⌉ )
= 1 − T 1 T 2 ( ⌈ T 2 T 1 ⌉ − T 2 T 1 ) ( T 2 T 1 − ⌊ T 2 T 1 ⌋ ) =1-\frac{T_1}{T_2}
(\left\lceil\frac{T_2}{T_1}\right\rceil-\frac{T_2}{T_1})(\frac{T_2}{T_1}-\left\lfloor\frac{T_2}{T_1}\right\rfloor) = 1 − T 2 T 1 ( ⌈ T 1 T 2 ⌉ − T 1 T 2 ) ( T 1 T 2 − ⌊ T 1 T 2 ⌋ )
設 I = ⌊ T 2 T 1 ⌋ , f = { T 2 T 1 } I=\left\lfloor\frac{T_2}{T_1}\right\rfloor,f=\{\frac{T_2}{T_1}\} I = ⌊ T 1 T 2 ⌋ , f = { T 1 T 2 } ,則利用率可簡化為:
U = 1 − 1 I + f ( 1 − f ) ( f ) U=1-\frac{1}{I+f}(1-f)(f) U = 1 − I + f 1 ( 1 − f ) ( f )
因設定 T 2 ≥ T 1 T_2 \geq T_1 T 2 ≥ T 1 ,所以 1 ≤ I < ∞ 1 \leq I \lt \infin 1 ≤ I < ∞ ,且 0 ≤ f < 1 0 \leq f \lt 1 0 ≤ f < 1 。因為利用率 U U U 對 I I I 是 monotonic increasing ,所以最小的 U U U 必發生在 I = 1 I=1 I = 1 時。若要考慮 U U U 對 f f f 的最小化,則使:
d U d f = d d f ( 1 − f 1 − f 1 + f ) = 0 \frac{dU}{df}=\frac{d}{df}(1-f\frac{1-f}{1+f})=0 df d U = df d ( 1 − f 1 + f 1 − f ) = 0
⟹ − ( 1 − 2 f ) ( 1 + f ) − ( f − f 2 ) ( 1 + f ) 2 = 0 \implies -\frac{
(1-2f)(1+f)-(f-f^2)
}{(1+f)^2} = 0 ⟹ − ( 1 + f ) 2 ( 1 − 2 f ) ( 1 + f ) − ( f − f 2 ) = 0
⟹ 1 + f − 2 f − 2 f 2 − f + f 2 = 0 \implies 1+f-2f-2f^2-f+f^2=0 ⟹ 1 + f − 2 f − 2 f 2 − f + f 2 = 0
⟹ f 2 + 2 f − 1 = 0 \implies f^2+2f-1=0 ⟹ f 2 + 2 f − 1 = 0
f = − 2 ± 2 2 − 4 ∗ 1 ∗ ( − 1 ) 2 ∗ 1 = − 1 ± 2 f=\frac{-2\pm\sqrt{2^2-4*1*(-1)}}{2*1}=-1\pm\sqrt{2} f = 2 ∗ 1 − 2 ± 2 2 − 4 ∗ 1 ∗ ( − 1 ) = − 1 ± 2
因 f ≥ 0 f \geq 0 f ≥ 0 ,所以在
f = 2 − 1 = 2 1 2 − 1 f=\sqrt{2}-1=2^{\frac{1}{2}}-1 f = 2 − 1 = 2 2 1 − 1
時,存在 least upper bound:
U = 1 − ( 2 − 1 ) ( 1 − ( 2 − 1 ) ) 1 + ( 2 − 1 ) = 2 ( 2 − 1 ) ≃ 0.83 U=1-\frac{
(\sqrt{2}-1)(1-(\sqrt{2}-1))
}{
1+(\sqrt{2}-1)
}=2(\sqrt{2}-1)
\simeq
0.83 U = 1 − 1 + ( 2 − 1 ) ( 2 − 1 ) ( 1 − ( 2 − 1 )) = 2 ( 2 − 1 ) ≃ 0.83
# Theorem 4
Description
For a set of m tasks with fixed priority order, and the restriction that the ratio between any two request periods is less than 2, the least upper bound to the processor utilization factor is U = m ( 2 1 m − 1 ) U=m(2^{\frac{1}{m}}-1) U = m ( 2 m 1 − 1 )
Proof
從Theorem 3證明過程中大概可以猜出,若將任務集之任務量擴展至m個,利用率 U U U 可能會在 C 1 = T 2 − T 1 C_1=T_2-T_1 C 1 = T 2 − T 1 時有最小值。本定理首先透過反證法排除 C 1 < T 2 − T 1 C_1\lt T_2-T_1 C 1 < T 2 − T 1 與 C 1 > T 2 − T 1 C_1\gt T_2-T_1 C 1 > T 2 − T 1 的情況,以證明 C 1 C_1 C 1 只有收斂至 C 1 = T 2 − T 1 C_1=T_2-T_1 C 1 = T 2 − T 1 時, U U U 才會為所有可能中的最小值;最後帶入條件找出最小值。
令 τ 1 , τ 2 , ⋯ , τ m \tau_1,\tau_2,\cdots,\tau_m τ 1 , τ 2 , ⋯ , τ m 為某一任務集,且各任務的執行時間 C 1 , C 2 , ⋯ , C m C_1,C_2,\cdots,C_m C 1 , C 2 , ⋯ , C m 滿足處理器被 fully utilize 且使利用率 U U U 為最小值。假設 T m > T m − 1 > ⋯ > T 2 > T 1 T_m\gt T_{m-1}\gt\cdots\gt T_2 \gt T_1 T m > T m − 1 > ⋯ > T 2 > T 1 ,則我們希望以下條件成立:
C 1 = T 2 − T 1 C_1=T_2-T_1 C 1 = T 2 − T 1
首先,考慮存在一變化值 Δ > 0 \Delta\gt0 Δ > 0 使得 C 1 = T 2 − T 1 + Δ C_1=T_2-T_1+\Delta C 1 = T 2 − T 1 + Δ ,亦即將任務一執行時間增長,這時處理器被 fully ultlize 且存在最小利用率為 U + Δ U_{+\Delta} U + Δ 。可以找出一個重新排程後的時程,使得處理器可以被 fully utlize 且仍然 feasible,如下圖所示:
可以看到,只需改變任務一及任務二的執行時間,使任務一執行時間減少 Δ \Delta Δ 、任務二執行時間增加Δ \Delta Δ ,如下所示:
L e t C 1 ′ = T 2 − T 1 , C 2 ′ = C 2 + Δ , C i ′ = C i f o r i = 3 , ⋯ , m Let\space C_1^{'}=T_2-T_1,C_2^{'}=C_2+\Delta,C_i^{'}=C_i\space for\space i=3,\cdots,m L e t C 1 ′ = T 2 − T 1 , C 2 ′ = C 2 + Δ , C i ′ = C i f or i = 3 , ⋯ , m
則 C 1 ′ , C 2 ′ , ⋯ , C m − 1 ′ , C m ′ C_1^{'},C_2^{'},\cdots,C_{m-1}^{'},C_m^{'} C 1 ′ , C 2 ′ , ⋯ , C m − 1 ′ , C m ′ 仍能使處理器被 fully ultilize,此時的利用率 U ′ U^{'} U ′ 與 U + Δ U_{+\Delta} U + Δ 之關係為:
U + Δ − U ′ U_{+\Delta}-U{'} U + Δ − U ′
= ( C 1 T 1 + C 2 T 2 + C 3 T 3 + ⋯ + C m T m ) − ( T 2 − T 1 T 1 + C 2 + Δ T 2 + C 3 T 3 + ⋯ + C n T n ) =(\frac{C_1}{T_1}+\frac{C_2}{T_2}+\frac{C_3}{T_3}+\cdots+\frac{C_m}{T_m})-(
\frac{T_2-T_1}{T_1}+
\frac{C_2+\Delta}{T_2}+
\frac{C_3}{T_3}+\cdots+\frac{C_n}{T_n}
) = ( T 1 C 1 + T 2 C 2 + T 3 C 3 + ⋯ + T m C m ) − ( T 1 T 2 − T 1 + T 2 C 2 + Δ + T 3 C 3 + ⋯ + T n C n )
= C 1 − ( C 1 − Δ ) T 1 + C 2 − ( C 2 + Δ ) T 2 =\frac{C_1-(C_1-\Delta)}{T_1}+\frac{C_2-(C_2+\Delta)}{T_2} = T 1 C 1 − ( C 1 − Δ ) + T 2 C 2 − ( C 2 + Δ )
= Δ T 1 − Δ T 2 > 0 =\frac{\Delta}{T_1}-\frac{\Delta}{T_2} \gt0 = T 1 Δ − T 2 Δ > 0
⟹ U + Δ > U ′ \implies U_{+\Delta} > U^{'} ⟹ U + Δ > U ′
因存在一新利用率,使得與原本假設的「 U + Δ U_{+\Delta} U + Δ 為所有可能的最小利用率」矛盾,因此「 C 1 > T 2 − T 1 C_1>T_2-T_1 C 1 > T 2 − T 1 時有最小利用率」不成立。
再來考慮存在一變化值 Δ > 0 \Delta\gt0 Δ > 0 使得 C 1 = T 2 − T 1 − Δ C_1=T_2-T_1-\Delta C 1 = T 2 − T 1 − Δ ,亦即將任務一執行時間減少,這時處理器被 fully ultlize 且存在最小利用率為 U − Δ U_{-\Delta} U − Δ 。可以找出一個重新排程後的時程,使得處理器可以被 fully utlize 且仍然 feasible,如下圖所示:
可以看到,只需改變任務一及任務二的執行時間,使任務一執行時間增加 Δ \Delta Δ 、任務二執行時間減少2 Δ 2\Delta 2Δ ,如下所示:
L e t C 1 ′ ′ = T 2 − T 1 , C 2 ′ ′ = C 2 − 2 Δ , C i ′ = C i f o r i = 3 , ⋯ , m Let\space C_1^{''}=T_2-T_1,C_2^{''}=C_2-2\Delta,C_i^{'}=C_i\space for\space i=3,\cdots,m L e t C 1 ′′ = T 2 − T 1 , C 2 ′′ = C 2 − 2Δ , C i ′ = C i f or i = 3 , ⋯ , m
則 C 1 ′ ′ , C 2 ′ ′ , ⋯ , C m − 1 ′ ′ , C m ′ ′ C_1^{''},C_2^{''},\cdots,C_{m-1}^{''},C_m^{''} C 1 ′′ , C 2 ′′ , ⋯ , C m − 1 ′′ , C m ′′ 仍能使處理器被 fully ultilize,此時的利用率 U ′ U^{'} U ′ 與 U − Δ U_{-\Delta} U − Δ 之關係為:
U − Δ − U ′ ′ U_{-\Delta}-U{''} U − Δ − U ′′
= ( C 1 T 1 + C 2 T 2 + C 3 T 3 + ⋯ + C m T m ) − ( T 2 − T 1 T 1 + C 2 − 2 Δ T 2 + C 3 T 3 + ⋯ + C n T n ) =(\frac{C_1}{T_1}+\frac{C_2}{T_2}+\frac{C_3}{T_3}+\cdots+\frac{C_m}{T_m})-(
\frac{T_2-T_1}{T_1}+
\frac{C_2-2\Delta}{T_2}+
\frac{C_3}{T_3}+\cdots+\frac{C_n}{T_n}
) = ( T 1 C 1 + T 2 C 2 + T 3 C 3 + ⋯ + T m C m ) − ( T 1 T 2 − T 1 + T 2 C 2 − 2Δ + T 3 C 3 + ⋯ + T n C n )
= C 1 − ( C 1 + Δ ) T 1 + C 2 − ( C 2 − 2 Δ ) T 2 =\frac{C_1-(C_1+\Delta)}{T_1}+\frac{C_2-(C_2-2\Delta)}{T_2} = T 1 C 1 − ( C 1 + Δ ) + T 2 C 2 − ( C 2 − 2Δ )
= 2 Δ T 2 − Δ T 1 > 0 w h e n T 2 T 1 < 0 =\frac{2\Delta}{T_2}-\frac{\Delta}{T_1} >0\space when\space \frac{T_2}{T_1}\lt0 = T 2 2Δ − T 1 Δ > 0 w h e n T 1 T 2 < 0
⟹ U − Δ > U ′ ′ \implies U_{-\Delta} > U^{''} ⟹ U − Δ > U ′′
因存在一新利用率,使得與原本假設的「 U − Δ U_{-\Delta} U − Δ 為所有可能的最小利用率」矛盾,因此「 C 1 < T 2 − T 1 C_1\lt T_2-T_1 C 1 < T 2 − T 1 時有最小利用」不成立,但前提是 T 2 T 1 < 0 \frac{T_2}{T_1}\lt0 T 1 T 2 < 0 ,此前提已在題目假設成立。
上述透過反證法可得出利用率僅在 C 1 = T 2 − T 1 C_1=T_2-T_1 C 1 = T 2 − T 1 時有最小利用率,同理,在
C 2 = T 3 − T 2 , C 3 = T 4 − T 3 , ⋯ C_2=T_3-T_2,C_3=T_4-T_3,\cdots C 2 = T 3 − T 2 , C 3 = T 4 − T 3 , ⋯
時,此假設也成立。利用歸納法,可以推出廣義形式:
C i = T i + 1 − T i f o r i = 1 , 2 , ⋯ , m − 1 C_i=T_{i+1}-T_i\space for\space i=1,2,\cdots,m-1 C i = T i + 1 − T i f or i = 1 , 2 , ⋯ , m − 1
因為 T m + 1 T_{m+1} T m + 1 未被定義,所以 C m C_m C m 不可直接透過此式得出,不過根據下圖就可推敲出 C m C_m C m 的樣貌:
可以看出,若要使處理器被 fully ultilize 的話, C m C_m C m 必為:
C m = T m − 2 × ( C 1 + C 2 + ⋯ + C m − 1 ) C_m=T_m-2\times(C_1+C_2+\cdots+C_{m-1}) C m = T m − 2 × ( C 1 + C 2 + ⋯ + C m − 1 )
又因:
C 1 + C 2 , ⋯ + C m − 1 = ( − T 1 + T 2 ) + ( − T 2 + T 3 ) + ⋯ + ( − T m − 1 + T m ) = − T 1 + T m \begin{aligned}
C_1+C_2,\cdots +C_{m-1}&=(-T_1+T_2)+(-T_2+T_3)+\cdots+(-T_{m-1}+T_m)\\&=-T_1+T_m
\end{aligned} C 1 + C 2 , ⋯ + C m − 1 = ( − T 1 + T 2 ) + ( − T 2 + T 3 ) + ⋯ + ( − T m − 1 + T m ) = − T 1 + T m
所以 C m C_m C m 也可表達為:
C m = T m − 2 ( − T 1 + T m ) = 2 T 1 − T m C_m=T_m-2(-T_1+T_m)=2T_1-T_m C m = T m − 2 ( − T 1 + T m ) = 2 T 1 − T m
接下來在推導利用率時,會常有類似 T i + 1 T i \frac{T_{i+1}}{T_i} T i T i + 1 之數項出現,為了簡化數學式且將變數統一表達,在此定義:
g i = T m − T i T i = T m T i − 1 , i = 1 , 2 , ⋯ , m g_i=\frac{T_m-T_i}{T_i}=\frac{T_m}{T_i}-1,\space\space\space i=1,2,\cdots,m g i = T i T m − T i = T i T m − 1 , i = 1 , 2 , ⋯ , m
⟹ T i = T m 1 + g i o r g i T i = T m − T i o r T i = T m − g i T i \implies T_i=\frac{T_m}{1+g_i}\space \space \space or\space\space\space g_iT_i=T_m-T_i\space \space \space or\space\space\space T_i=T_m-g_iT_i ⟹ T i = 1 + g i T m or g i T i = T m − T i or T i = T m − g i T i
因此:
C i = T i + 1 − T i = T m − g i + 1 T i + 1 − ( T m − g i T i ) = g i T i − g i + 1 T i + 1 , i = 1 , 2 , ⋯ , m − 1 \begin{aligned}
C_i&=T_{i+1}-T_i\\&=T_m-g_{i+1}T_{i+1}-(T_m-g_iT_i)\\&=g_iT_i-g_{i+1}T_{i+1},\space\space\space i=1,2,\cdots,m-1
\end{aligned} C i = T i + 1 − T i = T m − g i + 1 T i + 1 − ( T m − g i T i ) = g i T i − g i + 1 T i + 1 , i = 1 , 2 , ⋯ , m − 1
C m = 2 T 1 − T m = 2 ( T m − g 1 T 1 ) − T m = T m − 2 g 1 T 1 \begin{aligned}
C_m&=2T_1-T_m\\&=2(T_m-g_1T_1)-T_m\\&=T_m-2g_1T_1
\end{aligned} C m = 2 T 1 − T m = 2 ( T m − g 1 T 1 ) − T m = T m − 2 g 1 T 1
在算出利用率前,要先確定以下數學式:
T 1 = T m 1 + g 1 ⟹ T 1 T m = 1 1 + g 1 T_1=\frac{T_m}{1+g_1}\implies\frac{T_1}{T_m}=\frac{1}{1+g_1} T 1 = 1 + g 1 T m ⟹ T m T 1 = 1 + g 1 1
T i + 1 T i = T m 1 + g i + 1 T m 1 + g i = 1 + g i 1 + g i + 1 \frac{T_{i+1}}{T_i}=\frac{
\frac{T_m}{1+g_{i+1}}
}{
\frac{T_m}{1+g_i}
}
=\frac{1+g_i}{1+g_{i+1}} T i T i + 1 = 1 + g i T m 1 + g i + 1 T m = 1 + g i + 1 1 + g i
g m = T m − T m T m = 0 , g 0 ≜ 1 g_m=\frac{T_m-T_m}{T_m}=0,\space \space g_0\triangleq1 g m = T m T m − T m = 0 , g 0 ≜ 1
最後算出利用率:
U = ∑ i = 1 m C i T i = T m − 2 g 1 T 1 T m + ∑ i = 1 m − 1 g i T i − g i + 1 T i + 1 T i = 1 − 2 g 1 T 1 T m + ∑ i = 1 m − 1 ( g i − g i + 1 T i + 1 T i ) = 1 − 2 g 1 1 + g 1 + ∑ i = 1 m − 1 ( g i − g i + 1 1 + g i 1 + g i + 1 ) = 1 − 2 g 1 1 + g 1 + g 1 + ∑ i = 2 m g i − ∑ i = 2 m g i 1 + g i − 1 1 + g i = 1 + g 1 ( g 1 − 1 ) 1 + g 1 + ∑ i = 2 m − 1 g i ( 1 − 1 + g i − 1 1 + g i ) = 1 + g 1 ( g 1 − 1 ) 1 + g 1 + ∑ i = 2 m − 1 g i g i − g i − 1 1 + g i = 1 + ∑ i = 1 m − 1 g i g i − g i − 1 1 + g i \begin{aligned}
U=\sum^m_{i=1}{\frac{C_i}{T_i}}
&=\frac{T_m-2g_1T_1}{T_m}+\sum^{m-1}_{i=1}{\frac{g_iT_i-g_{i+1}T_{i+1}}{T_i}}
\\&=1-2g_1\frac{T_1}{T_m}+\sum^{m-1}_{i=1}(g_i-g_{i+1}\frac{T_{i+1}}{T_i})
\\&=1-\frac{2g_1}{1+g_1}+\sum^{m-1}_{i=1}(g_i-g_{i+1}\frac{1+g_i}{1+g_{i+1}})
\\&=1-\frac{2g_1}{1+g_1}+g_1+\sum^{m}_{i=2}g_i-\sum^{m}_{i=2}g_i\frac{1+g_{i-1}}{1+g_i}
\\&=1+\frac{g_1(g_1-1)}{1+g_1}+\sum^{m-1}_{i=2}g_i(1-\frac{1+g_{i-1}}{1+g_i})
\\&=1+\frac{g_1(g_1-1)}{1+g_1}+\sum^{m-1}_{i=2}g_i\frac{g_i-g_{i-1}}{1+g_i}
\\&=1+\sum^{m-1}_{i=1}g_i\frac{g_i-g_{i-1}}{1+g_i}
\end{aligned} U = i = 1 ∑ m T i C i = T m T m − 2 g 1 T 1 + i = 1 ∑ m − 1 T i g i T i − g i + 1 T i + 1 = 1 − 2 g 1 T m T 1 + i = 1 ∑ m − 1 ( g i − g i + 1 T i T i + 1 ) = 1 − 1 + g 1 2 g 1 + i = 1 ∑ m − 1 ( g i − g i + 1 1 + g i + 1 1 + g i ) = 1 − 1 + g 1 2 g 1 + g 1 + i = 2 ∑ m g i − i = 2 ∑ m g i 1 + g i 1 + g i − 1 = 1 + 1 + g 1 g 1 ( g 1 − 1 ) + i = 2 ∑ m − 1 g i ( 1 − 1 + g i 1 + g i − 1 ) = 1 + 1 + g 1 g 1 ( g 1 − 1 ) + i = 2 ∑ m − 1 g i 1 + g i g i − g i − 1 = 1 + i = 1 ∑ m − 1 g i 1 + g i g i − g i − 1
U U U 為以 g j w h e r e j = 1 , 2 , ⋯ , m − 1 g_j\space where\space j=1,2,\cdots,m-1 g j w h er e j = 1 , 2 , ⋯ , m − 1 為變數的多變數函數,若要求 U U U 的極小值,須令 ∂ U ∂ g j = 0 \frac{\partial U}{\partial g_j}=0 ∂ g j ∂ U = 0 ,並找出 g j g_j g j 。在 U U U 的總和項中,只有兩項與 g j g_j g j 有關:
∑ i = 1 m − 1 g i g i − g i − 1 1 + g i = ⋯ + g j g j − g j − 1 1 + g j + g j + 1 g j + 1 − g j 1 + g j + 1 + ⋯ \sum^{m-1}_{i=1}g_i\frac{g_i-g_{i-1}}{1+g_i}=\cdots
+
g_j\frac{g_j-g_{j-1}}{1+g_j}
+
g_{j+1}\frac{g_{j+1}-g_j}{1+g_{j+1}}+\cdots i = 1 ∑ m − 1 g i 1 + g i g i − g i − 1 = ⋯ + g j 1 + g j g j − g j − 1 + g j + 1 1 + g j + 1 g j + 1 − g j + ⋯
這兩項對 g j g_j g j 的導數為:
∂ ∂ g j ( g j g j − g j − 1 1 + g j ) = ( 2 g j − g j − 1 ) ( 1 + g j ) − ( g j 2 − g j g j − 1 ) ( 1 + g j ) 2 = g j 2 + 2 g j − g j − 1 ( 1 + g j ) 2 \begin{aligned}\frac{\partial}{\partial g_j}(g_j\frac{g_j-g_{j-1}}{1+g_j})
&=
\frac{
(2g_j-g_{j-1})(1+g_j)
-
(g_j^2-g_jg_{j-1})
}{(1+g_j)^2}
\\&=\frac{g_j^2+2g_j-g_{j-1}}{(1+g_j)^2}
\end{aligned} ∂ g j ∂ ( g j 1 + g j g j − g j − 1 ) = ( 1 + g j ) 2 ( 2 g j − g j − 1 ) ( 1 + g j ) − ( g j 2 − g j g j − 1 ) = ( 1 + g j ) 2 g j 2 + 2 g j − g j − 1
∂ ∂ g j ( g j + 1 g j + 1 − g j 1 + g j + 1 ) = − g j + 1 1 + g j + 1 \frac{\partial}{\partial g_j}(g_{j+1}\frac{g_{j+1}-g_j}{1+g_{j+1}})=-\frac{g_{j+1}}{1+g_{j+1}} ∂ g j ∂ ( g j + 1 1 + g j + 1 g j + 1 − g j ) = − 1 + g j + 1 g j + 1
結合以上結果,對利用率取偏微:
∂ U ∂ g j = ∂ ∂ g j ( 1 − ∑ i = 1 m − 1 g i g i − g i − 1 1 + g i ) = − [ g j 2 + 2 g j − g j − 1 ( 1 + g j ) 2 + ( − g j + 1 1 + g j + 1 ) ] = 0 \begin{aligned}
\frac{\partial U}{\partial g_j}
&=\frac{\partial}{\partial g_j}(1-\sum^{m-1}_{i=1}g_i\frac{g_i-g_{i-1}}{1+g_i})
\\&=-[\frac{g_j^2+2g_j-g_{j-1}}{(1+g_j)^2}+(-\frac{g_{j+1}}{1+g_{j+1}})]=0
\end{aligned} ∂ g j ∂ U = ∂ g j ∂ ( 1 − i = 1 ∑ m − 1 g i 1 + g i g i − g i − 1 ) = − [ ( 1 + g j ) 2 g j 2 + 2 g j − g j − 1 + ( − 1 + g j + 1 g j + 1 )] = 0
化簡:
⟹ ( g j + 1 ) 2 − ( g j − 1 + 1 ) ( g j + 1 ) 2 = g j + 1 g j + 1 + 1 ⟹ 1 − g j − 1 + 1 ( g j + 1 ) 2 = 1 − 1 g j + 1 + 1 ⟹ g j − 1 + 1 ( g j + 1 ) 2 = 1 g j + 1 + 1 \begin{aligned}\implies
&\frac{(g_j+1)^2-(g_{j-1}+1)}{(g_j+1)^2}=\frac{g_{j+1}}{g_{j+1}+1}
\\\implies&1-\frac{g_{j-1}+1}{(g_j+1)^2}=1-\frac{1}{g_{j+1}+1}
\\\implies&\frac{g_{j-1}+1}{(g_j+1)^2}=\frac{1}{g_{j+1}+1}
\end{aligned} ⟹ ⟹ ⟹ ( g j + 1 ) 2 ( g j + 1 ) 2 − ( g j − 1 + 1 ) = g j + 1 + 1 g j + 1 1 − ( g j + 1 ) 2 g j − 1 + 1 = 1 − g j + 1 + 1 1 ( g j + 1 ) 2 g j − 1 + 1 = g j + 1 + 1 1
令 h i = g i + 1 h_i=g_i+1 h i = g i + 1 ,則:
h j 2 = h j − 1 h j + 1 h_j^2=h_{j-1}h_{j+1} h j 2 = h j − 1 h j + 1
可以發現 h i h_i h i 是等比級數的中間項,若 r r r 為此等比級數的公比、 A A A 為常數,則可將 h i h_i h i 表示為:
h i = A r i ⟹ g i = A r i − 1 h_i=Ar^i\implies g_i=Ar^i-1 h i = A r i ⟹ g i = A r i − 1
考慮 g m = 0 g_m=0 g m = 0 的情況,找出 A A A :
g m = 0 ⟹ A r m − 1 = 0 ⟹ A = r − m ⟹ g i = r − m r i − 1 \begin{aligned}
g_m=0\implies& Ar^m-1=0
\\\implies& A=r^{-m}
\\\implies& g_i=r^{-m}r^i-1
\end{aligned} g m = 0 ⟹ ⟹ ⟹ A r m − 1 = 0 A = r − m g i = r − m r i − 1
令 s = r − m s=r^{-m} s = r − m ,以簡化數學式:
s = r − m ⟹ r = s − 1 m ⟹ g i = s ⋅ s − i m − 1 = s m − i m − 1 \begin{aligned}
s=r^{-m}\implies&r=s^{-\frac{1}{m}}
\\\implies&g_i=s\cdot s^{-\frac{i}{m}}-1=s^{\frac{m-i}{m}}-1
\end{aligned} s = r − m ⟹ ⟹ r = s − m 1 g i = s ⋅ s − m i − 1 = s m m − i − 1
考慮 g 0 = 1 g_0=1 g 0 = 1 ,找出 s s s :
g 0 = 1 ⟹ s m − 0 m − 1 = 1 ⟹ s = 2 ⟹ g i = 2 m − i m − 1 \begin{aligned}
g_0=1\implies&s^{\frac{m-0}{m}}-1=1
\\\implies&s=2
\\\implies&g_i=2^{\frac{m-i}{m}}-1
\end{aligned} g 0 = 1 ⟹ ⟹ ⟹ s m m − 0 − 1 = 1 s = 2 g i = 2 m m − i − 1
因此,在 g i = 2 m − i m − 1 g_i=2^{\frac{m-i}{m}}-1 g i = 2 m m − i − 1 時,可以保證 U U U 為最小值。把 g i g_i g i 代入 U U U ,但先從 U U U 的這項拆開計算:
g i − g i − 1 = 2 m − i m − 1 − ( 2 m − i − 1 m − 1 ) = 2 m − i m − 2 m − i m 2 − 1 m = 2 m − i m ( 1 − 2 − 1 m ) \begin{aligned}
g_i-g_{i-1}&=2^{\frac{m-i}{m}}-1-(2^{\frac{m-i-1}{m}}-1)
\\&=2^{\frac{m-i}{m}}-2^{\frac{m-i}{m}}2^{\frac{-1}{m}}
\\&=2^{\frac{m-i}{m}}(1-2^{\frac{-1}{m}})
\end{aligned} g i − g i − 1 = 2 m m − i − 1 − ( 2 m m − i − 1 − 1 ) = 2 m m − i − 2 m m − i 2 m − 1 = 2 m m − i ( 1 − 2 m − 1 )
所以:
U = 1 + ∑ i = 1 m − 1 g i 2 m − i m ( 1 − 2 − 1 m ) 2 m − i m = 1 + ( 1 − 2 − 1 m ) ∑ i = 1 m − 1 g i \begin{aligned}
U&=1+\sum^{m-1}_{i=1}{g_i\frac{2^{\frac{m-i}{m}}(1-2^{\frac{-1}{m}})}{2^{\frac{m-i}{m}}}}
\\&=1+(1-2^{\frac{-1}{m}})\sum^{m-1}_{i=1}{g_i}
\end{aligned} U = 1 + i = 1 ∑ m − 1 g i 2 m m − i 2 m m − i ( 1 − 2 m − 1 ) = 1 + ( 1 − 2 m − 1 ) i = 1 ∑ m − 1 g i
找出 ∑ i = 1 m − 1 g i \sum^{m-1}_{i=1}{g_i} ∑ i = 1 m − 1 g i :
∑ i = 1 m − 1 g i = ∑ i = 1 m − 1 ( 2 m − i m − 1 ) = ∑ i = 1 m − 1 2 ∗ 2 − i m − ∑ i = 1 m − 1 1 = 2 ∑ i = 1 m − 1 2 − i m − ( m − 1 ) \begin{aligned}
\sum^{m-1}_{i=1}{g_i}&=\sum^{m-1}_{i=1}{(2^{\frac{m-i}{m}}-1)}
\\&=\sum^{m-1}_{i=1}{2*2^{\frac{-i}{m}}}-\sum^{m-1}_{i=1}{1}
\\&=2\sum^{m-1}_{i=1}{2^{\frac{-i}{m}}}-(m-1)
\end{aligned} i = 1 ∑ m − 1 g i = i = 1 ∑ m − 1 ( 2 m m − i − 1 ) = i = 1 ∑ m − 1 2 ∗ 2 m − i − i = 1 ∑ m − 1 1 = 2 i = 1 ∑ m − 1 2 m − i − ( m − 1 )
找出 ∑ i = 1 m − 1 2 − i m \sum^{m-1}_{i=1}{2^{\frac{-i}{m}}} ∑ i = 1 m − 1 2 m − i :
S ≜ 2 − 1 m + 2 − 2 m + ⋯ + 2 − m − 2 m + 2 − m − 1 m ⟹ 2 1 m S = 1 + 2 − 1 m + 2 − 2 m + ⋯ + 2 − m − 2 m ⟹ ( 1 − 2 − 1 m ) S = 2 − m − 1 m − 1 = 2 1 m − 2 2 ⟹ S = 2 1 m − 2 2 ( 1 − 2 − 1 m ) \begin{aligned}
S&\triangleq2^{\frac{-1}{m}}+2^{\frac{-2}{m}}+\cdots+2^{-\frac{m-2}{m}}+2^{-\frac{m-1}{m}}
\\\implies& 2^{\frac{1}{m}}S=1+2^{\frac{-1}{m}}+2^{\frac{-2}{m}}+\cdots+2^{-\frac{m-2}{m}}
\\\implies& (1-2^{\frac{-1}{m}})S=2^{-\frac{m-1}{m}}-1=\frac{2^{\frac{1}{m}}-2}{2}
\\\implies& S=\frac{2^{\frac{1}{m}}-2}{2(1-2^{\frac{-1}{m}})}
\end{aligned} S ⟹ ⟹ ⟹ ≜ 2 m − 1 + 2 m − 2 + ⋯ + 2 − m m − 2 + 2 − m m − 1 2 m 1 S = 1 + 2 m − 1 + 2 m − 2 + ⋯ + 2 − m m − 2 ( 1 − 2 m − 1 ) S = 2 − m m − 1 − 1 = 2 2 m 1 − 2 S = 2 ( 1 − 2 m − 1 ) 2 m 1 − 2
代回利用率:
U = 1 + ( 1 − 2 − 1 m ) [ 2 × 2 1 m − 2 2 ( 1 − 2 − 1 m ) − ( m − 1 ) ] = 1 + 2 1 m − 2 − ( 1 − 2 − 1 m ) ( m − 1 ) = 2 1 m − 1 − ( m − 1 − m 2 1 m + 2 1 m ) = m 2 1 m − m = m ( 2 1 m − 1 ) \begin{aligned}
U&=1+(1-2^{\frac{-1}{m}})[2\times \frac{2^{\frac{1}{m}}-2}{2(1-2^{\frac{-1}{m}})}-(m-1)]
\\&=1+2^{\frac{1}{m}}-2-(1-2^{\frac{-1}{m}})(m-1)
\\&=2^{\frac{1}{m}}-1-(m-1-m2^{\frac{1}{m}}+2^{\frac{1}{m}})
\\&=m2^{\frac{1}{m}}-m
\\&=m(2^{\frac{1}{m}}-1)
\end{aligned} U = 1 + ( 1 − 2 m − 1 ) [ 2 × 2 ( 1 − 2 m − 1 ) 2 m 1 − 2 − ( m − 1 )] = 1 + 2 m 1 − 2 − ( 1 − 2 m − 1 ) ( m − 1 ) = 2 m 1 − 1 − ( m − 1 − m 2 m 1 + 2 m 1 ) = m 2 m 1 − m = m ( 2 m 1 − 1 )
證畢。
# Theorem 5
Theorem 4是先從「滿足於 T i + 1 T i < 2 \frac{T_{i+1}}{T_i}<2 T i T i + 1 < 2 的所有任務集」的條件下求出 bound,是 restricted case;Theorem 5 則是想證明在所有 fixed-priority tasks set的集合的條件下求出的 bound 與 Theorem 4 求出的 bound 相等,是 general case。
Definition
For a set of m tasks with mixed priority order, the least upper bound to processor utilization is U = m ( 2 1 m − 1 ) U=m(2^{\frac{1}{m}}-1) U = m ( 2 m 1 − 1 )
Proof
令 τ 1 , τ 2 , ⋯ , τ i , ⋯ , τ m \tau_1,\tau_2,\cdots,\tau_i,\cdots,\tau_m τ 1 , τ 2 , ⋯ , τ i , ⋯ , τ m 為使處理器被 fully ultilize 的任務集、 U U U 為對應的利用率,且對於某些 i i i 使得 ⌊ T i T m ⌋ > 1 \left\lfloor\frac{T_i}{T_m}\right\rfloor\gt1 ⌊ T m T i ⌋ > 1 。為了更加明確,將 T m T_m T m 表達為 T m = q T i + r , q > 1 a n d r ≥ 0 T_m=qT_i+r,q>1\space and\space r \geq 0 T m = q T i + r , q > 1 an d r ≥ 0 。如下圖,此時可以重新分配 T i , C i , C m T_i,C_i,C_m T i , C i , C m 至 T i ′ , C i ′ , C m ′ T_i^{'},C_i^{'},C_m^{'} T i ′ , C i ′ , C m ′ 使得處理器仍能被 fully ultilize。
新的排程 τ 1 ′ , τ 2 ′ , ⋯ , τ i ′ , ⋯ , τ m ′ \tau^{'}_1,\tau^{'}_2,\cdots,\tau^{'}_i,\cdots,\tau^{'}_m τ 1 ′ , τ 2 ′ , ⋯ , τ i ′ , ⋯ , τ m ′ 之利用率為 U ′ U^{'} U ′ ,此時 T i ′ , C i ′ T_i^{'},C_i^{'} T i ′ , C i ′ 為:
T i ′ = q T i , C i ′ = C i T^{'}_i=qT_i,\space\space C^{'}_i=C_i T i ′ = q T i , C i ′ = C i
則 C m ′ C_m^{'} C m ′ 最大可擴展至:
C m ′ = C i ( q − 1 ) + C m C_m^{'}=C_i(q-1)+C_m C m ′ = C i ( q − 1 ) + C m
U ′ U^{'} U ′ 的最大預估上界:
U ′ ≤ U + ( q − 1 ) C i T m + C i T i ′ − C i T i = U + ( q − 1 ) C i q T i + r + C i q T i − C i T i = U + ( q − 1 ) C i q T i + r − ( q − 1 ) C i q T i = U + C i ( q − 1 ) ( 1 q T i + r − 1 q T i ) \begin{aligned}
U^{'}\leq&U+\frac{(q-1)C_i}{T_m}+\frac{C_i}{T^{'}_i}-\frac{C_i}{T_i}
\\=&U+\frac{(q-1)C_i}{qT_i+r}+\frac{C_i}{qT_i}-\frac{C_i}{T_i}
\\=&U+\frac{(q-1)C_i}{qT_i+r}-\frac{(q-1)C_i}{qT_i}
\\=&U+C_i(q-1)(\frac{1}{qT_i+r}-\frac{1}{qT_i})
\end{aligned} U ′ ≤ = = = U + T m ( q − 1 ) C i + T i ′ C i − T i C i U + q T i + r ( q − 1 ) C i + q T i C i − T i C i U + q T i + r ( q − 1 ) C i − q T i ( q − 1 ) C i U + C i ( q − 1 ) ( q T i + r 1 − q T i 1 )
因為:
q > 1 ⟹ q − 1 > 0 q T i + r > q T i ⟹ 1 q T i + r − 1 q T i ≤ 0 \begin{aligned}
q>1\implies& q-1>0
\\qT_i+r>qT_i\implies&\frac{1}{qT_i+r}-\frac{1}{qT_i}\le0
\end{aligned} q > 1 ⟹ q T i + r > q T i ⟹ q − 1 > 0 q T i + r 1 − q T i 1 ≤ 0
所以:
U ′ ≤ U U^{'}\leq U U ′ ≤ U
證畢。
# Relaxing the Ultilization Bound
前面章節提到,在固定優先權分配下,若任務量極大時,理論利用率最多只能為 ln 2 ≃ 0.693 \ln2\simeq0.693 ln 2 ≃ 0.693 ;但在實際情況需要考量到切換任務時的 costs,可用的空間又會變得更少。因此,必須尋找其他替代方案,使最壞利用率上升。
Method 1:調整每個任務的週期,使得 { T m T i } = 0 f o r i = 1 , 2 , ⋯ , m − 1 \{\frac{T_m}{T_i}\}=0\space for \space i=1,2,\cdots,m-1 { T i T m } = 0 f or i = 1 , 2 , ⋯ , m − 1 。
Pros:若 task 的週期關係夠理想,固定優先權系統可能可以把 ultilization bound 拉到 1。
Cons:現實中這情況不一定總是做得到。
Method 2:將 τ m \tau_m τ m 與其他較低優先權的任務放入緩衝,並 Relax 它們的 hard dealines,不再要求所以任務都依定嚴格遵守 hard real-time。對部分低優先權任務,可以允許他們延遲一點,只要有 buffer 暫存資料即可。
如果整個 task set 的週期行為是有限且規律的,而且被 buffer 的 tasks 依照某種合理方式執行,例如 first come first served (FCFS) 在本文的假設下,就可以算出最大延遲時間與需要多大的 buffer。
*Method 3:不要把 priority 固定死,而是讓 task 的優先權可以動態改變。
接下來要介紹的一種 dynamic priority assignment method ,如果某一組 task 可以被「某種 priority assignment」排得動,那它也一定可以被這個方法排得動。
對 schedulability 來說,這是最佳的。
用這種最佳的動態優先權方法時,processor utilization 的保證上界可以到 100%
# The Deadline Driven Scheduling Algorithm
# Basic Concept
此章節要研究 Dynami scheduling algorithm 其中的一種演算法叫做 deadline driven scheduling algorithm,簡稱 EDF ( Earliest-Deadline-First )。此演算法會根據各任務的 deadline 來分配優先權,且最大優先權會分配給目前 deadline 最先發生的請求;最小優先權會分配給目前 dealine 最後發生的請求。本章節目的為建立必要滿足條件使得 deadline driven scheduling algorithm 可行。
# Theorem 6
Description
When the deadline driven scheduling algorithm is used to schedule a set of tasks on a processor, there is no processor idle time prior to an overflow.
意旨就算deadline driven scheduling algorithm發生overflow,在這之前仍沒有idle time。
Proof
假設在 overflow 發生之前必存在 processor idle time。
如下圖所示,令整體系統起點為 t = 0 t=0 t = 0 時,且 t 3 t_3 t 3 為 overflow發生點、 t 1 , t 2 t_1,t_2 t 1 , t 2 為 idle period 的起點與終點,並規定在 t 2 t_2 t 2 與 t 3 t_3 t 3 之間無任何 idle time。在 idle period [ t 1 , t 2 ] [t_1,t_2] [ t 1 , t 2 ] 之後各任務的第一個請求分別以 a , b , ⋯ , m a,b,\cdots,m a , b , ⋯ , m 來表示。
往前平移 a , b , ⋯ , m a,b,\cdots,m a , b , ⋯ , m 使它們的發生點貼合於 t = t 2 t=t_2 t = t 2 上,此時新系統起點會落在 t = t 2 t=t_2 t = t 2 。既然舊系統在 t 3 t_3 t 3 已經 overflow,表示處理器到 t 3 t_3 t 3 前的累積需求超過了可提供服務。那新系統因為所有任務皆被提前挪動了,代表新系統在 t 3 t_3 t 3 前的需求只會更多或與舊系統相等,不可能更少,所以 overflow 一定發生在 t ≤ t 3 t\leq t_3 t ≤ t 3 。而新系統在 t 2 ≤ t ≤ t 3 t_2\leq t\leq t_3 t 2 ≤ t ≤ t 3 之間又假設無任何 idle time,因此與「在 overflow 發生之前必存在 processor idle time」的假設發生矛盾。所以「就算deadline driven scheduling algorithm發生overflow,在這之前仍沒有idle time」之命題成立。
# Theorem 7
Description
For a given set of m tasks, the deadline driven scheduling algorithm is feasible if and only if:
∑ i = 1 m C i T i ≤ 1 \sum^{m}_{i=1}{\frac{C_i}{T_i}}\leq1 i = 1 ∑ m T i C i ≤ 1
Proof
令「對於一組由m個任務組成的集合,deadline driven scheduling algorithm是可行的」為命題 P P P 、「 ∑ i = 1 m C i T i ≤ 1 \sum^{m}_{i=1}{\frac{C_i}{T_i}}\leq1 ∑ i = 1 m T i C i ≤ 1 」為命題 Q Q Q 。
首先證明必要性,亦即 P → Q P\rightarrow Q P → Q ,考慮 ¬ Q → ¬ P \neg{Q}\rightarrow\neg{P} ¬ Q → ¬ P :
從 t = 0 t=0 t = 0 到 t = T 1 T 2 ⋯ T m t=T_1T_2\cdots T_m t = T 1 T 2 ⋯ T m 之間,對於執行所有任務的時間需求為:
T 1 T 2 ⋯ T m T 1 C 1 + T 1 T 2 ⋯ T m T 2 C 2 + ⋯ + T 1 T 2 ⋯ T m T m C m = ( T 2 T 3 ⋯ T m ) C 1 + ( T 1 T 3 ⋯ T m ) C 2 + ⋯ + ( T 1 T 2 ⋯ T m − 1 ) C m \frac{T_1T_2\cdots T_m}{T_1}C_1+
\frac{T_1T_2\cdots T_m}{T_2}C_2+\cdots+\frac{T_1T_2\cdots T_m}{T_m}C_m
\\=(T_2T_3\cdots T_m)C_1+(T_1T_3\cdots T_m)C_2+\cdots+
(T_1T_2\cdots T_{m-1})C_m T 1 T 1 T 2 ⋯ T m C 1 + T 2 T 1 T 2 ⋯ T m C 2 + ⋯ + T m T 1 T 2 ⋯ T m C m = ( T 2 T 3 ⋯ T m ) C 1 + ( T 1 T 3 ⋯ T m ) C 2 + ⋯ + ( T 1 T 2 ⋯ T m − 1 ) C m
假設此需求大於處理器可供時間:
( T 2 T 3 ⋯ T m ) C 1 + ( T 1 T 3 ⋯ T m ) C 2 + ⋯ + ( T 1 T 2 ⋯ T m − 1 ) C m > T 1 T 2 ⋯ T m ⟹ C 1 T 1 + C 2 T 2 + ⋯ + C m T m > 1 (T_2T_3\cdots T_m)C_1+(T_1T_3\cdots T_m)C_2+\cdots+
(T_1T_2\cdots T_{m-1})C_m>T_1T_2\cdots T_m
\\\implies\frac{C_1}{T_1}+\frac{C_2}{T_2}+\cdots+\frac{C_m}{T_m}\gt1 ( T 2 T 3 ⋯ T m ) C 1 + ( T 1 T 3 ⋯ T m ) C 2 + ⋯ + ( T 1 T 2 ⋯ T m − 1 ) C m > T 1 T 2 ⋯ T m ⟹ T 1 C 1 + T 2 C 2 + ⋯ + T m C m > 1
表示當 ∑ i = 1 m C i T i > 1 \sum^{m}_{i=1}{\frac{C_i}{T_i}}\gt1 ∑ i = 1 m T i C i > 1 時,需求大於處理器可供時間,則 scheduling algorithm 不可行,因此證畢 ¬ Q → ¬ P \neg{Q}\rightarrow\neg{P} ¬ Q → ¬ P , P → Q P\rightarrow Q P → Q 成立。
最後證明充分性,首先假設 ¬ ( Q → P ) \neg(Q\rightarrow P) ¬ ( Q → P ) 成立,並找出所有與假設矛盾的案例,使得 Q → P Q\rightarrow P Q → P 成立。因此,假設在:
C 1 T 1 + C 2 T 2 + ⋯ + C m T m ≤ 1 \frac{C_1}{T_1}+\frac{C_2}{T_2}+\cdots+\frac{C_m}{T_m}\leq1 T 1 C 1 + T 2 C 2 + ⋯ + T m C m ≤ 1
的前提下, scheduling algorithm 是不可行的。也就是說有 overflow 發生在 0 ≤ t ≤ T 1 T 2 ⋯ T m 0\leq t \leq T_1T_2\cdots T_m 0 ≤ t ≤ T 1 T 2 ⋯ T m ,且根據定理六可以得出存在一個時間 t = T ( 0 ≤ T ≤ T 1 T 2 ⋯ T m ) t=T(0\leq T \leq T_1T_2\cdots T_m) t = T ( 0 ≤ T ≤ T 1 T 2 ⋯ T m ) ,使得在 t = 0 t=0 t = 0 到 t = T t=T t = T 之間有 overflow 且不具有 idle time。
假設 a 1 , a 2 , ⋯ , b 1 , b 2 , ⋯ a_1,a_2,\cdots,b_1,b_2,\cdots a 1 , a 2 , ⋯ , b 1 , b 2 , ⋯ 為 m m m 個任務在 T T T 之前的請求時間,且 a 1 , a 2 , ⋯ a_1,a_2,\cdots a 1 , a 2 , ⋯ 之請求時間的deadline在 T T T 上、b 1 , b 2 , ⋯ b_1,b_2,\cdots b 1 , b 2 , ⋯ 之請求時間的deadline在 T T T 之後。 a 1 , a 2 , ⋯ a_1,a_2,\cdots a 1 , a 2 , ⋯ 不會使排程演算法發生 overflow;但 b 1 , b 2 , ⋯ b_1,b_2,\cdots b 1 , b 2 , ⋯ 有可能會使排程演算法發生 overflow,所以對於 b 1 , b 2 , ⋯ b_1,b_2,\cdots b 1 , b 2 , ⋯ ,有兩種可能情況會發生。
Case 1:在 T T T 之前,沒有一個請求 b 1 , b 2 , ⋯ b_1,b_2,\cdots b 1 , b 2 , ⋯ 已被執行完成。
在這個案例中,從 0 到 T T T 之間執行所有請求的時間需求為:
⌊ T T 1 ⌋ C 1 + ⌊ T T 2 ⌋ C 2 + ⋯ + ⌊ T T m ⌋ C m \left\lfloor\frac{T}{T_1}\right\rfloor C_1+
\left\lfloor\frac{T}{T_2}\right\rfloor C_2+\cdots+
\left\lfloor\frac{T}{T_m}\right\rfloor C_m ⌊ T 1 T ⌋ C 1 + ⌊ T 2 T ⌋ C 2 + ⋯ + ⌊ T m T ⌋ C m
因為沒有 processor idle period,且 scheduling algorithm 是不可行的,所以:
⌊ T T 1 ⌋ C 1 + ⌊ T T 2 ⌋ C 2 + ⋯ + ⌊ T T m ⌋ C m > T \left\lfloor\frac{T}{T_1}\right\rfloor C_1+
\left\lfloor\frac{T}{T_2}\right\rfloor C_2+\cdots+
\left\lfloor\frac{T}{T_m}\right\rfloor C_m
\gt T ⌊ T 1 T ⌋ C 1 + ⌊ T 2 T ⌋ C 2 + ⋯ + ⌊ T m T ⌋ C m > T
然後,因為 x ≥ ⌊ x ⌋ ∀ x x\geq\left\lfloor{x}\right\rfloor\forall{x} x ≥ ⌊ x ⌋ ∀ x ,所以:
T T 1 C 1 + T T 2 C 2 + ⋯ + T T m C m > T ⟹ C 1 T 1 + C 2 T 2 + ⋯ + C m T m > 1 ⟹ ∑ i = 1 m C i T i > 1 \begin{aligned}
\frac{T}{T_1}C_1&+\frac{T}{T_2}C_2+\cdots+\frac{T}{T_m}C_m\gt{T}
\\\implies&\frac{C_1}{T_1}+\frac{C_2}{T_2}+\cdots+\frac{C_m}{T_m}\gt{1}
\\\implies&\sum^{m}_{i=1}{\frac{C_i}{T_i}}\gt{1}
\end{aligned} T 1 T C 1 ⟹ ⟹ + T 2 T C 2 + ⋯ + T m T C m > T T 1 C 1 + T 2 C 2 + ⋯ + T m C m > 1 i = 1 ∑ m T i C i > 1
此推論結果為 ¬ Q \neg Q ¬ Q ,與假設的 Q ∧ ¬ P Q\land\neg{P} Q ∧ ¬ P 矛盾。
Case 2:在 T T T 之前,有部分請求 b 1 , b 2 , ⋯ b_1,b_2,\cdots b 1 , b 2 , ⋯ 已被執行完成。
因為在時間 T T T 發生 overflow,所以存在一個時間點 T ′ T^{'} T ′ 使得沒有任何請求b 1 , b 2 , ⋯ b_1,b_2,\cdots b 1 , b 2 , ⋯ 在 T ′ ≤ t ≤ T T^{'}\leq t\leq T T ′ ≤ t ≤ T 之間被執行完成,而且會有一個或以上的請求 b i b_i b i 的 deadline 發生在時間點 T T T 或 T T T 之前,且這些任務在 T ′ T^{'} T ′ 之前會被完成。因此,在 T ′ ≤ t ≤ T T^{'}\leq t\leq T T ′ ≤ t ≤ T 內執行請求的處理時間需求小於等於:
⌊ T − T ′ T 1 ⌋ C 1 + ⌊ T − T ′ T 2 ⌋ C 2 + ⋯ + ⌊ T − T ′ T m ⌋ C m \left\lfloor\frac{T-T^{'}}{T_1}\right\rfloor{C_1}+\left\lfloor\frac{T-T^{'}}{T_2}\right\rfloor{C_2}+\cdots+\left\lfloor\frac{T-T^{'}}{T_m}\right\rfloor{C_m} ⌊ T 1 T − T ′ ⌋ C 1 + ⌊ T 2 T − T ′ ⌋ C 2 + ⋯ + ⌊ T m T − T ′ ⌋ C m
有 overflow 發生於 T T T 代表:
⌊ T − T ′ T 1 ⌋ C 1 + ⌊ T − T ′ T 2 ⌋ C 2 + ⋯ + ⌊ T − T ′ T m ⌋ C m > T − T ′ ⟹ T − T ′ T 1 C 1 + T − T ′ T 2 C 2 + ⋯ + T − T ′ T m C m > T − T ′ ⟹ C 1 T 1 + C 2 T 2 + ⋯ + C m T m > 1 ⟹ ∑ i = 1 m C i T i > 1 \begin{aligned}
\left\lfloor\frac{T-T^{'}}{T_1}\right\rfloor&{C_1}+\left\lfloor\frac{T-T^{'}}{T_2}\right\rfloor{C_2}+\cdots+\left\lfloor\frac{T-T^{'}}{T_m}\right\rfloor{C_m}\gt{T-T^{'}}
\\\implies&\frac{T-T^{'}}{T_1}C_1+\frac{T-T^{'}}{T_2}C_2+\cdots+\frac{T-T^{'}}{T_m}C_m\gt T-T^{'}
\\\implies&\frac{C_1}{T_1}+\frac{C_2}{T_2}+\cdots+\frac{C_m}{T_m}\gt1
\\\implies&\sum^m_{i=1}{\frac{C_i}{T_i}}\gt1
\end{aligned} ⌊ T 1 T − T ′ ⌋ ⟹ ⟹ ⟹ C 1 + ⌊ T 2 T − T ′ ⌋ C 2 + ⋯ + ⌊ T m T − T ′ ⌋ C m > T − T ′ T 1 T − T ′ C 1 + T 2 T − T ′ C 2 + ⋯ + T m T − T ′ C m > T − T ′ T 1 C 1 + T 2 C 2 + ⋯ + T m C m > 1 i = 1 ∑ m T i C i > 1
此推論結果為 ¬ Q \neg Q ¬ Q ,與假設的 Q ∧ ¬ P Q\land\neg{P} Q ∧ ¬ P 矛盾。
因為所有案例的結果皆與假設的 ¬ ( Q → P ) \neg(Q\rightarrow P) ¬ ( Q → P ) 矛盾,因此 Q → P Q\rightarrow P Q → P 成立,充分性證畢。且:
∵ ( P → Q ) ∧ ( Q → P ) ∴ P ↔ Q \because (P\rightarrow Q)\land (Q\rightarrow P)\therefore P\leftrightarrow Q ∵ ( P → Q ) ∧ ( Q → P ) ∴ P ↔ Q
得,定理七證畢。
ℹ️
因為 deadline driven scheduling algorithm 是最優的,所以任一可以被任何演算法排程可行的任務集,皆可被 deadline driven scheduling algorithm 排程可行。
# A Mixed Scheduling Algorithm
本章節研究的排程演算法類別為 rate-monotonic scheduling algorithm 與 deadlin driven scheduling algorithm 的組合,此類別被稱為 mixed scheduling algorithm。
此類別存在的意義:
因為硬體中斷的需求無法相容動態排程 ⇒ 只能使用 fixed priority scheduler
對於較慢步驟的任務,使用 deadline driven 的軟體實作代價比起固定排程有更少顯著的上升 ⇒ 建議使用 deadline driven scheduler
為方便之後的推導,在此令任務 1 , 2 , ⋯ , k 1,2,\cdots,k 1 , 2 , ⋯ , k 表示為前 k 個具有最短周期的任務,這些任務將用 fixed priority scheduling algorithm 排程;剩下的任務,如果處理器沒被任務 1 , 2 , ⋯ , k 1,2,\cdots,k 1 , 2 , ⋯ , k 占用的話,任務 k + 1 , k + 2 , ⋯ , m k+1,k+2,\cdots,m k + 1 , k + 2 , ⋯ , m 會使用 deadline driven scheduling algorithm 來排程。
接下來,定義 availability function 為在時間從 0 0 0 到 t t t 時,對於一任務集,所有處理器可以被使用的時間的加總,表示為 a ( t ) a(t) a ( t ) 。而 a k ( t ) a_k(t) a k ( t ) 被定義為對於任務 k + 1 , k + 2 , ⋯ , m k+1,k+2,\cdots,m k + 1 , k + 2 , ⋯ , m 的 availability function。因為時間不為負,所以累加時間只會越長越大或不再增長 ⇒ a ( t ) a(t) a ( t ) 為 nondecreasing function。
令 W k ( t ) W_k(t) W k ( t ) 為前 k 個 fixed-priority tasks 在 [ 0 , t ] [0,t] [ 0 , t ] 內的累積處理器需求,則 a k ( t ) a_k(t) a k ( t ) 可表達為 a k ( t ) = t − W k ( t ) a_k(t)=t-W_k(t) a k ( t ) = t − W k ( t ) 。所以
a k ( t + T ) − a k ( t ) = ( t + T ) − W k ( t + T ) − ( t − W k ( t ) ) = T − [ W k ( t + T ) − W k ( t ) ] \begin{aligned}
a_k&(t+T)-a_k(t)
\\=&(t+T)-W_k(t+T)-(t-W_k(t))
\\=&T-[W_k(t+T)-W_k(t)]
\end{aligned} a k = = ( t + T ) − a k ( t ) ( t + T ) − W k ( t + T ) − ( t − W k ( t )) T − [ W k ( t + T ) − W k ( t )]
又
a k ( T ) = T − W k ( T ) a_k(T)=T-W_k(T) a k ( T ) = T − W k ( T )
根據 critical time zone argument,對 fixed-priority 任務集合而言,最壞情況的處理器需求發生在所有相關高優先權 requests 同時出現的 critical instant,因此從 0 開始的長度 T 區間所包含的高優先權工作量,不小於任何平移後同長度區間中的高優先權工作量。故有
W k ( T ) > W k ( t + T ) − W k ( t ) ⟹ − W k ( T ) ≤ − [ W k ( t + T ) − W k ( t ) ] ⟹ T − W k ( T ) ≤ T − [ W k ( t + T ) − W k ( t ) ] \begin{aligned}
&W_k(T)\gt W_k(t+T)-W_k(t)
\\\implies&-W_k(T)\leq -[W_k(t+T)-W_k(t)]
\\\implies&T-W_k(T)\leq T-[W_k(t+T)-W_k(t)]
\end{aligned} ⟹ ⟹ W k ( T ) > W k ( t + T ) − W k ( t ) − W k ( T ) ≤ − [ W k ( t + T ) − W k ( t )] T − W k ( T ) ≤ T − [ W k ( t + T ) − W k ( t )]
得
a k ( T ) ≤ a k ( t + T ) − a k ( t ) a_k(T)\leq a_k(t+T)-a_k(t) a k ( T ) ≤ a k ( t + T ) − a k ( t )
若對於任務 k + 1 , k + 2 , ⋯ , m k+1,k+2,\cdots,m k + 1 , k + 2 , ⋯ , m 的 availability function 具有 a k ( T ) ≤ a k ( t + T ) − a k ( t ) a_k(T)\leq a_k(t+T)-a_k(t) a k ( T ) ≤ a k ( t + T ) − a k ( t ) 的性質,則對於所有任務的 availability function 同樣具有 a ( T ) ≤ a ( t + T ) − a ( t ) a(T)\leq a(t+T)-a(t) a ( T ) ≤ a ( t + T ) − a ( t ) 性質,又因 a ( t ) a(t) a ( t ) 為 nondecreasing function,故 a ( t ) a(t) a ( t ) 為 sublinear 。
# Theorem 8
Description
If a set of tasks are scheduled by the deadline driven scheduling algorithm on a processor whose availability function is sublinear, then there is no processor idle period to an overflow.
Proof
與 Theorem 6 類似。
# Theorem 9
Description
A necessary and sufficient condition for the feasibility of the deadline driven scheduling algorithm with respect to a processor with availability function a k ( t ) a_k(t) a k ( t ) is
⌊ t T k + 1 ⌋ C k + 1 + ⌊ t T k + 2 ⌋ C k + 2 + ⋯ + ⌊ t T m ⌋ C m ≤ a k ( t ) \left\lfloor\frac{t}{T_{k+1}}\right\rfloor{C_{k+1}}+\left\lfloor\frac{t}{T_{k+2}}\right\rfloor{C_{k+2}}+\cdots+\left\lfloor\frac{t}{T_{m}}\right\rfloor{C_{m}}\leq{a_k(t)} ⌊ T k + 1 t ⌋ C k + 1 + ⌊ T k + 2 t ⌋ C k + 2 + ⋯ + ⌊ T m t ⌋ C m ≤ a k ( t )
for all t’s which are multiples of T k + 1 , o r T k + 2 , ⋯ , o r T m T_{k+1},\space or\space T_{k+2},\cdots,\space or\space T_m T k + 1 , or T k + 2 , ⋯ , or T m .
Proof
本證明與 Theorem 7 的證明十分相似,首先證明滿足必要性。假設對於任何時間點,處理請求的總時間需求超過所有處理器可供的運行時間:
⌊ t T k + 1 ⌋ C k + 1 + ⌊ t T k + 2 ⌋ C k + 2 + ⋯ + ⌊ t T m ⌋ C m > a k ( t ) \left\lfloor\frac{t}{T_{k+1}}\right\rfloor{C_{k+1}}+\left\lfloor\frac{t}{T_{k+2}}\right\rfloor{C_{k+2}}+\cdots+\left\lfloor\frac{t}{T_{m}}\right\rfloor{C_{m}}\gt{a_k(t)} ⌊ T k + 1 t ⌋ C k + 1 + ⌊ T k + 2 t ⌋ C k + 2 + ⋯ + ⌊ T m t ⌋ C m > a k ( t )
可以發現這會導致排程不可行。因此,若處理請求的總時間需求為所有處理器可供的運行時間或時間以內,則:
⌊ t T k + 1 ⌋ C k + 1 + ⌊ t T k + 2 ⌋ C k + 2 + ⋯ + ⌊ t T m ⌋ C m ≤ a k ( t ) \left\lfloor\frac{t}{T_{k+1}}\right\rfloor{C_{k+1}}+\left\lfloor\frac{t}{T_{k+2}}\right\rfloor{C_{k+2}}+\cdots+\left\lfloor\frac{t}{T_{m}}\right\rfloor{C_{m}}\leq{a_k(t)} ⌊ T k + 1 t ⌋ C k + 1 + ⌊ T k + 2 t ⌋ C k + 2 + ⋯ + ⌊ T m t ⌋ C m ≤ a k ( t )
會使排程保證可行,必要性證畢。
再來證明充足性。對於 case 1,假設排程滿足定理,但在時間點 T T T 發生 overflow,則:
⌊ T T k + 1 ⌋ C k + 1 + ⌊ T T k + 2 ⌋ C k + 2 + ⋯ + ⌊ T T m ⌋ C m > a k ( T ) \left\lfloor\frac{T}{T_{k+1}}\right\rfloor{C_{k+1}}+\left\lfloor\frac{T}{T_{k+2}}\right\rfloor{C_{k+2}}+\cdots+\left\lfloor\frac{T}{T_{m}}\right\rfloor{C_{m}}\gt{a_k(T)} ⌊ T k + 1 T ⌋ C k + 1 + ⌊ T k + 2 T ⌋ C k + 2 + ⋯ + ⌊ T m T ⌋ C m > a k ( T )
此與假設矛盾,且 T T T 為 T k + 1 , o r T k + 2 , ⋯ , o r T m T_{k+1},\space or\space T_{k+2},\cdots,\space or\space T_m T k + 1 , or T k + 2 , ⋯ , or T m 其中之一的倍數。
對於 case 2,假設排程滿足定理,但在時間點 T T T 發生 overflow,則:
⌊ T − T ′ T k + 1 ⌋ C k + 1 + ⌊ T − T ′ T k + 2 ⌋ C k + 2 + ⋯ + ⌊ T − T ′ T m ⌋ C m > a k ( T − T ′ ) \left\lfloor\frac{T-T'}{T_{k+1}}\right\rfloor{C_{k+1}}+\left\lfloor\frac{T-T'}{T_{k+2}}\right\rfloor{C_{k+2}}+\cdots+\left\lfloor\frac{T-T'}{T_{m}}\right\rfloor{C_{m}}\gt{a_k(T-T')} ⌊ T k + 1 T − T ′ ⌋ C k + 1 + ⌊ T k + 2 T − T ′ ⌋ C k + 2 + ⋯ + ⌊ T m T − T ′ ⌋ C m > a k ( T − T ′ )
為滿足定理要求「for all t’s which are multiples of T k + 1 , o r T k + 2 , ⋯ , o r T m T_{k+1},\space or\space T_{k+2},\cdots,\space or\space T_m T k + 1 , or T k + 2 , ⋯ , or T m 」,令 ϵ \epsilon ϵ 為最小正數使得 T − T ′ − ϵ T-T'-\epsilon T − T ′ − ϵ 為 T k + 1 , o r T k + 2 , ⋯ , o r T m T_{k+1},\space or\space T_{k+2},\cdots,\space or\space T_m T k + 1 , or T k + 2 , ⋯ , or T m 的倍數,所以:
⌊ T − T ′ − ϵ T k + j ⌋ = ⌊ T − T ′ T k + j ⌋ f o r e a c h j = 1 , 2 , ⋯ , m − k \left\lfloor\frac{T-T'-\epsilon}{T_{k+j}}\right\rfloor=\left\lfloor\frac{T-T'}{T_{k+j}}\right\rfloor\space for\space each\space j=1,2,\cdots,m-k ⌊ T k + j T − T ′ − ϵ ⌋ = ⌊ T k + j T − T ′ ⌋ f or e a c h j = 1 , 2 , ⋯ , m − k
因此:
⌊ T − T ′ − ϵ T k + 1 ⌋ C k + 1 + ⌊ T − T ′ − ϵ T k + 2 ⌋ C k + 2 + ⋯ + ⌊ T − T ′ − ϵ T m ⌋ C m > a k ( T − T ′ ) ≥ a k ( T − T ′ − ϵ ) \begin{aligned}
&\left\lfloor\frac{T-T'-\epsilon}{T_{k+1}}\right\rfloor{C_{k+1}}+\left\lfloor\frac{T-T'-\epsilon}{T_{k+2}}\right\rfloor{C_{k+2}}+\cdots+\left\lfloor\frac{T-T'-\epsilon}{T_{m}}\right\rfloor{C_{m}}
\\&\gt{a_k(T-T')}
\\&\geq{a_k(T-T'-\epsilon)}
\end{aligned} ⌊ T k + 1 T − T ′ − ϵ ⌋ C k + 1 + ⌊ T k + 2 T − T ′ − ϵ ⌋ C k + 2 + ⋯ + ⌊ T m T − T ′ − ϵ ⌋ C m > a k ( T − T ′ ) ≥ a k ( T − T ′ − ϵ )
此與假設矛盾。
對於所有可能的 case 都與假設矛盾,因此充分性證畢。
ℹ️
Theorem 9 很完整但難用,所以作者對「3 個 task、其中 1 個固定優先權、2 個 deadline-driven」的特例,另外給了兩組比較容易檢查的充分條件。這些條件成立時 mixed scheduling 一定可行,但它們比 Theorem 9 保守,因此可保證的 utilization 比較低。
mixed scheduling 的 utilization bound 雖然還不到純 deadline-driven scheduling 的 100%,但已經明顯比固定優先權 RM 排程寬鬆許多 。作者最後也坦白說,對 mixed scheduling 而言,還沒有找到像 RM 或 EDF 那樣漂亮的 closed-form least upper bound;不過從這個例子可以看出,它的限制遠比 fixed-priority scheduling 小,因此在實務上是一種很有吸引力的折衷方案。
# Conclusion
前面的分析是建立在五個假設之上,其中最重要、但也最容易被質疑的,是 (A1) 任務請求具有週期性 與 (A4) 任務執行時間固定 。如果這兩個假設不成立,那麼前面用來分析最壞情況的 critical time zone 就必須重新定義,不再只是簡單地由週期與固定 execution time 來描述,而必須改成在任務 request 與 deadline 之間,考慮所有高優先權任務可能造成的最大干擾量。若系統缺乏對 request pattern 與 run-time 的精確資訊,就只能用較保守的方式來估計,例如把 period 當成最短 request interval、把 run-time 當成最大 execution time。作者認為,在這種情況下,前面許多分析結果將不再能直接成立,而且由於任務的不規則性,processor utilization bound 可能會被大幅壓低。如果實際 deadline 比前面假設得更緊,則固定優先權的排序規則也應改成依據 request 與 deadline 之間最短間隔來決定,而不是單純依週期長短。不過若只有少數高優先權任務的 deadline 較緊,對整體 utilization 的影響不會太大。整體而言,作者認為週期性請求與固定執行時間雖然是理想化假設,但它們的分析價值很大,應該被視為 real-time system 設計上的重要目標。
本文探討的是 hard-real-time multiprogramming 在 process control 與 monitoring 環境中的排程問題。在這個架構下,作者得到三個最主要的結論:
對於 固定優先權排程 ,若優先權按照 request rate 單調分配,也就是較短週期任務給較高優先權,則此規則在所有 fixed-priority scheduling algorithms 中是最佳的;然而這類方法對大 task sets 的 processor utilization least upper bound 只有大約 70% 。
對於 動態 deadline-driven scheduling ,作者證明它在可行性上是全域最佳的,而且可以達到 100% processor utilization 。
作者也討論了將這兩種方法結合的 mixed scheduling algorithm ,指出這種混合方式大致能保有 deadline-driven scheduling 的大部分好處,同時又較容易在現有電腦系統中實作。