Idle Hook 能做什么?为什么不能在里面无条件喂狗?
Idle 任务在没有其他就绪任务时运行,可用于低优先级清理、空闲计数和进入低功耗,但 Hook 不能阻塞。无条件喂狗只能证明 Idle 得到调度,未必证明所有关键任务健康。
Question Bank
按知识、方向与难度筛选;每道题都有分层回答和工程追问。
Idle 任务在没有其他就绪任务时运行,可用于低优先级清理、空闲计数和进入低功耗,但 Hook 不能阻塞。无条件喂狗只能证明 Idle 得到调度,未必证明所有关键任务健康。
更高 Tick 提高基于 Tick 的延时分辨率,却增加中断和调度开销,仍不能保证更低业务延迟。Tickless Idle 在预期空闲期停止周期 Tick,用低功耗定时源一次唤醒并补偿经过的 Tick。
必须保存足以让任务恢复后像从未离开一样继续执行的寄存器状态,包括栈指针、被调用者保存寄存器和必要控制状态;异常硬件可能自动保存一部分,端口汇编保存剩余部分。FPU 状态可按需处理。
优先级应由响应时间、截止期、周期和阻塞分析决定,而不是职位或模块名称。先识别硬实时链路和中断到任务路径,估算 WCET 与共享资源阻塞,再用压力测试和 Trace 验证。
固定优先级 Rate Monotonic 通常让周期越短优先级越高,实现简单、可分析;EDF 动态让截止期最近任务优先,在理想单核模型下利用率上限更高,但实现、过载行为和资源共享分析更复杂。