「タスク期間」が正確に何を意味するのかについて少し混乱しています
たとえば、タスクがあるとします。
Task(){
while(1)
{
//do something
//sleep 6 time units
}
}
時間 0 にリリースされ、合計実行時間が 4 時間単位 (「何かをする」部分) であり、この実行の期限が時間 7 であると仮定します。
このタスクが実行サイクル中にプリエンプトされないと仮定すると、その期間は 4 + 6 = 10 になり、次回は時間 10 で解放されるため、T = 10 になります。
ここで、このタスクが時間 3 で別のタスクによってプリエンプトされ、時間 5 で戻ってきた場合、残りの部分 (1 時間単位) を実行するのに十分な時間 (時間 7 まで) があるとします。
したがって、時間 6 で終了するため、今回の期間は 6 + 6 = 12 となり、次回は時間 12 で解放されるため、T = 12 になります。
では、タスク期間とは何ですか?RMスケジューリングでは、タスクの優先度はタスク期間に基づいて割り当てられるため、タスク期間のどの値が考慮されますか??
スケジュール チャートでは、周期的なタスクは常に一定の期間として表示されます。たとえば、期間が 5 の場合、タスクを 0、5、10、15、20 などでリリースする必要がある場合、0 でリリースする場合は、それまで終了する必要があります。 5 など
2 で終了した場合、次のリリースが 5 であることをどのように保証できますか?
または、15 でリリースされ、16 から 18 の間に実行されると仮定すると、次のリリースが 20 であることをどのように保証できますか?
この例では、締め切りは明らかにこのいわゆる「タスク期間」によって定義されます。つまり、5 の倍数です。なぜなら、タスクは次に予定されているリリースよりも遅く終了することはできず、タスク期間は必要なリリース時間によって定義されるからです。これらのリリース時間が 5 の倍数として保持される方法がわかりません
最初の例で見たように、同じタスクの次のリリースは状況によって異なります (10 と 12) が、実行が 7 時までに終了する限り問題ありません。