我有一个基本上是 TIMER 的任务;所以它进入睡眠状态并且应该定期唤醒。所以计时器任务睡眠了 10 毫秒。但是正在发生的事情是它在唤醒方面不一致,并且不能依靠它来正确地及时唤醒。
事实上,在我的跑步中,睡眠时间有很大的不同。有时它会在觉醒时变化 1-2 毫秒,并且很少会完全恢复。这是因为内核调度程序将所有休眠和等待的任务放在一个队列中,然后当它轮询查看谁将被唤醒时,我认为这是轮询。所以有时任务会在调度程序再次轮询时过期。有时,当出现中断时,ISR 会获得控制权并延迟定时器的唤醒。
处理此类问题的最佳解决方案是什么?
(附加细节:任务是无线网络的 MAC 定时器;RTOS 是 u-velOSity 微内核)