基本的にタイマーであるタスクがあります。したがって、スリープ状態になり、定期的にウェイクアップすることになっています..したがって、タイマータスクはたとえば10ミリ秒スリープします。しかし、起こっていることは、覚醒に一貫性がなく、時間内に正しく目覚めることに依存できないということです.
実際、私のランニングでは、睡眠時間に大きな違いがあります。時々、覚醒時に 1 ~ 2 ミリ秒変化することがあり、まったく元に戻らないことはほとんどありません。これは、カーネル スケジューラがすべてのスリープ状態と待機状態のタスクをキューに入れ、ポーリングして誰を目覚めさせるかを確認するときに、ラウンド ロビンだと思うからです。そのため、スケジューラが再度ポーリングするまでにタスクが期限切れになることがあります。割り込みが発生すると、ISR が制御を取得し、タイマーの起動を遅らせることがあります。
この種の問題を処理するための最良の解決策は何ですか?
(追加の詳細: タスクはワイヤレス ネットワークの MAC タイマーです。RTOS は u-velOSity マイクロカーネルです)