# 第二批复习总结 · 答案解析 > ⚠️ 做完 `第二批复习总结.md` 的全部 26 题后再翻开本文件对照。 > 每道题给答案 + 一句话解析,解析都指向对应主题页。 --- ## 判断题(对/错 + 一句话理由) 1. **错**。vTaskDelay 是主动等延时 → **Blocked**(自动醒);Suspended 必须 vTaskResume 手动恢复。→ `24.任务状态机` 2. **对**。抢占后被踢回 **Ready 排队**,等调度器选中才回 Running(不插队,保调度一致性)。→ `24.任务状态机` 3. **错**。同优先级 tick 到点轮换是**时间片**;抢占特指**更高优先级**就绪插入。→ `25.抢占-vs-时间片` 4. **对**。8(等待)> 4(插队)> 2(持有)→ 三要素齐 → 反转。→ `26.优先级反转` 5. **错**。C(1) 比持有者 B(2) 还低,抢不了持有者 → 不构成反转。→ `26.优先级反转` 6. **错**。临界区关中断 → tick 进不来 → 延时不计时 → **卡死**。→ `27.临界区` 7. **错**。中断也碰的数据必须**关中断(临界区)**;互斥量挡不了 ISR。→ `27.临界区` 8. **错**。信号量只传"事件/计数信号",**不传数据**;传具体值用队列。→ `28.IPC选型` / `29.RTOS任务同步方式` 9. **错**。经典任务通知**一对一**;广播是新版(V11+)特性。→ `29.RTOS任务同步方式` 10. **错**。带超时 send 会阻塞 → ISR 禁用;用 `xQueueSendFromISR`。→ `30.ISR通信` 11. **错**。互斥量靠优先级继承、需要任务上下文,ISR 无身份 → 无 FromISR 版,禁止。→ `30.ISR通信` 12. **错**。开大保平安浪费 RAM;栈/堆共用内存此消彼长。正确 = 峰值×余量 + HighWaterMark 验证。→ `31.栈估算` 13. **错**。HighWaterMark 返回**历史最低剩余**,值**越大越安全**(剩余多);接近 0 才危险。→ `31.栈估算` 14. **对**。RTOS 任务跑在 PSP(任务自己的栈),中断异常帧压进当前任务栈——这就是估算要算中断嵌套的原因。→ `30.ISR通信` / `31.栈估算` ## 填空题 15. **Blocked**——死等/饥饿,永久阻塞,任务永远轮不到执行。→ `24.任务状态机` 16. **vTaskDelayUntil**(绝对延时,按固定周期醒)。→ `24.任务状态机` 17. **优先级继承**(互斥量默认)/ **优先级天花板**。→ `26.优先级反转` 18. **互斥量** / **信号量**(二值信号量做事件通知)。→ `28.IPC选型` 19. **FromISR**(如 xQueueSendFromISR)/ **pxHigherPriorityTaskWoken**。→ `30.ISR通信` 20. **最坏路径峰值(局部变量+调用帧+库函数+中断嵌套)**。→ `31.栈估算` 21. **队列**——有具体数据要传。→ `28.IPC选型` 22. **事件组**——OR 等待,多条件组合。→ `29.RTOS任务同步方式` ## 场景 / 代码判断 23. **优先级反转**。三要素:高等待(H 等资源)+ 低持有(L 持资源)+ 中插队(M 抢 L)。解决:持有者 L 用**互斥量**(优先级继承把 L 临时提到 H 水平,M 抢不了 L),别用二值信号量当锁。→ `26.优先级反转` 24. **带超时 10 tick 的 xQueueSend 会阻塞**——队列满就等,ISR 里阻塞 = 中断不返回 = 死锁/跑飞。应改 `xQueueSendFromISR(&q, &data, &pxHigherPriorityTaskWoken)`。→ `30.ISR通信` 25. **卡死**。taskENTER_CRITICAL 关中断 → tick 进不来 → vTaskDelay 的延时永远计不完,且没人唤醒。临界区里禁止一切阻塞 API。→ `27.临界区` 26. **要加大**。20/128 ≈ **16% < 20%** 余量线,贴着危险区;HighWaterMark 已提示剩余不足,加大到 256 words 更稳。→ `31.栈估算` --- _错题 > 3 道:回到对应主题页重学第 5 步变体验证。_