软中断这个东西苦恼了自己好久,最近感觉有点悟,特意记录一下。
首先,软中断是跟硬中断相对应的,linux当中为了解决硬中断处理过程太长导致硬中断丢失(硬中断处理过程中会禁用中断),linux就将硬中断的处理过程分为两个部分:
1. 上半部分:中断禁止模式下执行,主要执行跟硬件相关或者时间敏感的代码
2. 下半部分:延迟处理上半部分剩下的工作,通常以内核线程方式运行(通常是[ksoftirq/cpu_num])
软中断除了处理硬中断的剩余部分之外,还会处理其他相关的操作,这个可以通过命令:cat /proc/sorftirqs 去查看当前机器上软中断相关的统计(TIMER,NET_TX, NET_RX, TASKLET, SCHED,HRTIMER, RCU等等)
其重要调用方式就是在优先级较高的进程中设置相关二进制位,然后返回,之后软中断执行之前会检测相关的掩码,从而执行对应的处理程序
阅读(1045) | 评论(0) | 转发(0) |