中断机制的下半部实现机制:软中断、tasklet、工作队列。
软中断
软中断适用于像网络这样性能要求非常高的情况使用,可以再所有处理器上执行,两个类型相同的软中断有可能被同时执行。
软中断在编译期间必须进行静态注册。
软中断使用的比较少;
软中断对时间要求比较严格,对加锁要求高。
如果需要扩展到多处理器执行,采用软中断。
软中断适用于执行频率高和连续性要求高的情况下。
tasklet
tasklet通过软中断实现;对加锁要求不高;
tasklet可以通过代码动态注册,灵活性强;
两个类型不同的tasklet可以在不同的处理器上执行,但是类型相同的tasklet不能同时执行。
如果不需要扩展到多个处理器上执行,就用tasklet。
tasklet和软中断不能睡眠,这意味着不能使用信号量或者阻塞式函数。
工作队列
工作队列交由内核线程去执行,在进程上下文中;
工作队列允许重新调度甚至是睡眠;