最近在研究异步消息处理, 突然想起linux内核的中断处理, 里面由始至终都贯穿着”重要的事马上做, 不重要的事推后做”的异步处理思想....这是由内核的设计决定的, 中断服务程序没有自己的task结构(即操作系统教科书上说的进程控制块), 所以它不能被内核调度....通常说一个进程让出CPU, 在之后如果满足某种条件, 内核会通过它的task结构找到它, 并调度其运行.
这里可能存在两方面的问题:
1....连续的低优先的中断可能持续占有CPU, 而高优先的某些进程则无法获得CPU;
2....工作队列
linux基线版本的内核在解决上述问题上, 提供了workqueue机制.