Rate Monotonic 和 EDF 调度各自适合什么实时任务?
固定优先级 Rate Monotonic 通常让周期越短优先级越高,实现简单、可分析;EDF 动态让截止期最近任务优先,在理想单核模型下利用率上限更高,但实现、过载行为和资源共享分析更复杂。
Question Bank
按知识、方向与难度筛选;每道题都有分层回答和工程追问。
固定优先级 Rate Monotonic 通常让周期越短优先级越高,实现简单、可分析;EDF 动态让截止期最近任务优先,在理想单核模型下利用率上限更高,但实现、过载行为和资源共享分析更复杂。
多核任务可真正并行,关本核中断不能保护另一核访问;内核和应用需要跨核原子、Spinlock、IPI 和 Cache 一致性。任务迁移还会影响 Cache 热度、外设亲和性和时延可预测性。
Stream Buffer 传递无边界字节流,接收端自行分帧;Message Buffer 在内部保存每条消息长度,接收时保持消息边界。它们通常针对单写者单读者优化,多写/多读需额外串行化。
事件位只表示某条件当前已发生/成立,多次 Set 同一位会合并成一个状态;等待可选择任一或全部并在返回时清除。若必须知道发生次数或每次携带的数据,应使用计数信号量或队列。
总延迟包括硬件同步与 NVIC 响应、被更高优先级 ISR 阻塞、当前临界区、中断处理、唤醒调度、任务排队以及业务执行时间。每段都应有测量点和最坏边界。
关中断临界区阻止一定优先级范围内的 ISR,保护任务与 ISR 共享状态但直接增加中断延迟;暂停调度只阻止任务切换,中断仍会运行,不能保护会被 ISR 修改的数据。两者都应短且不可阻塞。
删除任务只回收内核已知的任务控制块和栈,不会自动归还应用持有的互斥锁、内存、驱动请求或注册回调。应先发停止请求,让任务自行退出并确认 in-flight 工作完成,再由明确所有者清理。
运行时间统计给出各任务累计执行占比,Trace 能还原切换、ISR、阻塞和唤醒时间线。要用独立高分辨率计数器、足够缓冲和明确采样窗口,并同时观察队列水位、截止期违约与最长连续占用。