一連のタスクが与えられた場合:
T1(20,100) T2(30,250) T3(100,400) (execution time, deadline=peroid)
ここで、i番目のタスクの新しい期限は、i番目のタスクの元の期間であり、把握したい要素であるDi = f * Pi
ため、期限を短縮したいと思います。タスクがレートモノトニックスケジューラを使用して期限を守り続けることの最小値はどれくらいですか?Di
Pi
f
f
一連のタスクが与えられた場合:
T1(20,100) T2(30,250) T3(100,400) (execution time, deadline=peroid)
ここで、i番目のタスクの新しい期限は、i番目のタスクの元の期間であり、把握したい要素であるDi = f * Pi
ため、期限を短縮したいと思います。タスクがレートモノトニックスケジューラを使用して期限を守り続けることの最小値はどれくらいですか?Di
Pi
f
f
このスキーマは、2000 時間単位ごとに繰り返されます (同期されます)。この期間中
合計は、2000 時間単位間隔あたり 1140 時間単位です。
f = 1140 / 2000 = 0.57
これは、実行時間の長いタスクを中断して再開できることを前提としており、その間に実行時間の短いタスクを実行できるようにします。そうしないと、T3 が開始されると、T1 が期限に間に合わせることができなくなります。
更新された締め切りは次のとおりです。
T1(20,57)
T2(30,142.5)
T3(100,228)
これらは 1851930 時間単位ごとに繰り返され、完了するまでに同じ時間が必要です。
ちょっとした単純化: factor を計算するとき、期間-時間は相殺されます。これは、係数を取得するために期間を実際に計算する必要がないことを意味します。
Period = 2000
Required time = (Period / 100) * 20 + (Period / 250) * 30 + (Period / 400) * 100
f = Required time / Period = 20 / 100 + 30 / 250 + 100 / 400 = 0.57
f = Sum(Duration[i] / Period[i])
期間を計算するには、次のようにします。
Period(T1,T2) = lcm(100, 250) = 500
Period(T1,T2,T3) = lcm(500, 400) = 2000
ここlcm(x,y)
で、 は最小公倍数です。