vxWorks でプリエンプトされた場合、タイム スライスはどうなりますか?

StackOverflow https://stackoverflow.com/questions/89071

  •  01-07-2019
  •  | 
  •  

質問

Vxworks でラウンド ロビンを有効にしていて、タスクが優先度の高いタスクにプリエンプトされた場合、残りのタイム スライスはどうなりますか?

役に立ちましたか?

解決

タスクは実行を再開し、残りのタイム スライスを終了します。

タイム スライスの粒度は 1 クロック ティックであるため、1 タイム ティックごとに多少のジッターが発生することに注意してください。

例えば:
10 クロック ティック タイム スライスでラウンド ロビンが有効になっています。1 クロック ティックは 10 ミリ秒です。タイム スライスあたり 100 ミリ秒が予想されます。
5 ミリ秒 (最初のティックの中央) でプリエンプトされます。さらに 95 ミリ秒実行する必要がありますが、VxWorks はまだ 10 ティックあるとみなします。

タスクが 11 ミリ秒で CPU を回復した場合、さらに 99 ミリ秒かけて実行することになります。
タスクが 19 ミリ秒で CPU を取り戻すと、さらに 91 ミリ秒実行することになります。

プリエンプトされるたびに、タスクは絶対時間で +/- 1 ティック実行される可能性があります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top