假设我有两个任务,“A”和“B”,在 SMP 支持的 VxWorks 上执行不同的优先级。“A”和“B”都向 I/O 设备(例如磁盘或 NIC)发出命令,并且都阻塞等待结果。也就是说,“A”和“B”同时被阻塞。一段时间后,I/O 设备引发中断并调用 ISR。然后 ISR 将延迟的工作(也称为“下半部分”)分派给工作任务。问题:worker-task 的优先级是多少?
VxWorks Device Driver Developer's Guide 有点含糊。似乎工作任务的优先级是先验设置的。没有自动继承机制可以根据阻塞等待结果的任务(“A”和“B”)的优先级来增加工作任务的优先级。这类似于 PREEMPT_RT Linux 中线程中断优先级的工作方式。但是,QNX Neutrino 和 LynxOS 都会以被阻塞任务的最高优先级调度工作任务——例如。优先级(工人)= max_priority(A,B)。
谁能澄清一下?