软中断、tasklet和工作队列

中断机制的下半部实现机制:软中断、tasklet、工作队列。

软中断

软中断适用于像网络这样性能要求非常高的情况使用,可以再所有处理器上执行,两个类型相同的软中断有可能被同时执行。

软中断在编译期间必须进行静态注册。

软中断使用的比较少;

软中断对时间要求比较严格,对加锁要求高。

如果需要扩展到多处理器执行,采用软中断。

软中断适用于执行频率高和连续性要求高的情况下。

 

tasklet

tasklet通过软中断实现;对加锁要求不高;

tasklet可以通过代码动态注册,灵活性强;

两个类型不同的tasklet可以在不同的处理器上执行,但是类型相同的tasklet不能同时执行。

如果不需要扩展到多个处理器上执行,就用tasklet。

tasklet和软中断不能睡眠,这意味着不能使用信号量或者阻塞式函数。

 工作队列

工作队列交由内核线程去执行,在进程上下文中;

工作队列允许重新调度甚至是睡眠;

 

原文地址:https://www.cnblogs.com/ggzhangxiaochao/p/12896146.html