软中断、tasklet和工作队列详解
引言
软中断、tasklet和工作队列并不是Linux内核中一直存在的机制,而是由更早版本的内核中的“下半部”(bottom half)演变而来。
上半部指的是中断处理程序,下半部则指的是一些虽然与中断有相关性但是可以延后执行的任务。举个例子:在网络传输中,网卡接收到数据包这个事件不一定需要马上被处理,适合用下半部去实现;但是用户敲击键盘这样的事件就必须马上被响应,应该用中断实现。
两者的主要区别在于:中断不能被相同类型的中断打断,而下半部依然可以被中断打断;中断对于时间非常敏感,而下半部基本上都是一些可以延迟的工作。由于二者的这种区别,所以对于一个工作是放在上半部还是放在下半部去执行,可以参考下面4条:
如果一个任务对时间非常敏感,将其放在中断处理程序中执行。
如果一个任务和硬件相关,将其放在中断处理程序中执行。
如果一个任务要保证不被其他中断(特别是相同的中断)打断,将其放在中断处理程序中执行。
其他所有任务,考虑放在下半部去执行。
有写内核任务需要延后执行,因此才有的下半部,进而实现了三种实现下半部的方法。这就是本文要讨论的软中断、Tasklet和工作队列。
软中断
软 ...
HPC基础:MPI+OPENMP
高性能计算的编程基础,基于C++语言,入门HPC的第一站。
中位数问题(对顶堆的应用)
关于新建可以get中位数的数据结构,和滑动窗口中的中位数问题,均用两个堆实现。
编译原理
计算机专业课《编译原理》笔记。主讲教师:姚卫红。
计算机网络
计算机专业课《计算机网络》笔记。主讲教师:申彦明。
离散数学
计算机专业课《离散数学》笔记。主讲教师:李丽双、徐喜荣。
操作系统(二)
计算机专业课《操作系统》笔记,包括第四~六章。主讲教师:杨志豪.
操作系统(一)
计算机专业课《操作系统》笔记,包括第一~三章。主讲教师:杨志豪。
计算机组成原理
计算机专业课《计算机组成原理》复习笔记。主讲教师:王健、徐博。
数据结构与算法
计算机专业课《数据结构与算法》笔记。主讲教师:林晓惠。