vxWorks でプリエンプトされた場合、タイム スライスはどうなりますか?
-
01-07-2019 - |
質問
Vxworks でラウンド ロビンを有効にしていて、タスクが優先度の高いタスクにプリエンプトされた場合、残りのタイム スライスはどうなりますか?
解決
タスクは実行を再開し、残りのタイム スライスを終了します。
タイム スライスの粒度は 1 クロック ティックであるため、1 タイム ティックごとに多少のジッターが発生することに注意してください。
例えば:
10 クロック ティック タイム スライスでラウンド ロビンが有効になっています。1 クロック ティックは 10 ミリ秒です。タイム スライスあたり 100 ミリ秒が予想されます。
5 ミリ秒 (最初のティックの中央) でプリエンプトされます。さらに 95 ミリ秒実行する必要がありますが、VxWorks はまだ 10 ティックあるとみなします。
タスクが 11 ミリ秒で CPU を回復した場合、さらに 99 ミリ秒かけて実行することになります。
タスクが 19 ミリ秒で CPU を取り戻すと、さらに 91 ミリ秒実行することになります。
プリエンプトされるたびに、タスクは絶対時間で +/- 1 ティック実行される可能性があります。
所属していません StackOverflow