FromISR API 中的 xHigherPriorityTaskWoken 为什么要初始化并用于请求切换?
FromISR API 在解除更高优先级任务阻塞时会把该标志置为 pdTRUE;ISR 结束前应通过端口宏请求上下文切换,让更高优先级任务立即运行。标志应先初始化为 pdFALSE,并可被多个 API 累积置真。
Question Bank
按知识、方向与难度筛选;每道题都有分层回答和工程追问。
FromISR API 在解除更高优先级任务阻塞时会把该标志置为 pdTRUE;ISR 结束前应通过端口宏请求上下文切换,让更高优先级任务立即运行。标志应先初始化为 pdFALSE,并可被多个 API 累积置真。
进入操作时记录绝对截止时间,每个子步骤只等待“截止时间减当前时间”的剩余预算;若每步都重新等待完整 timeout,总耗时可变成步骤数倍。计算还要使用可回绕的单调时钟方法。
优先级继承只在高优先级任务阻塞于互斥锁时临时提升持锁者,缩短特定反转;它不能修复循环等待、长时间关中断、信号量误用,也可能在嵌套锁和多个等待者下产生复杂的继承链。
普通队列保存每个事件,消费者落后时会积压过期样本;若业务只关心最新状态,可使用长度为 1 的覆盖队列、受保护快照或双缓冲,并单独计数被覆盖次数。事件和状态不能混用。
外设中断一旦启用就可能立刻触发,因此它依赖的队列、任务句柄和缓冲必须先有效;调度器启动前可调用的 RTOS API 又受内核规定限制。常见顺序是建资源与任务、清 pending、配置优先级、最后启用源。
没有统一答案:控制环可能必须报告 Deadline miss 并进入安全策略,界面刷新可跳过旧帧,批处理可有界补跑。系统要检测超期、限制积压,并明确下一次释放时间,而不是让延迟无限累积。
外部强删任务无法自动理解它持有的互斥锁、DMA、堆对象或外设事务,容易留下永久占用。优先使用协作式停止:发取消请求、退出新工作、取消或等待在途操作、释放资源、回报完成,再由所有者回收。
递归互斥锁允许同一任务重复获取,并要求对应次数释放,适合不可避免的同线程嵌套调用。它不允许其他任务越权释放,也不能解决锁顺序环路;滥用会隐藏层次不清和过大的临界区。