1. 概念

1.1 中断

  • 中断是系统用来响应硬件设备请求的一种机制,它会打断进程的正常调度和执行,然后调用内核中的中断处理程序来响应设备的请求
  • 中断其实是一种异步的事件处理机制,可以提高系统的并发能力
  • 由于中断程序会打断其他进程的运行,为了减少对正常进程运行调度影响,中断处理程序就需要尽可能快运行

1.2 软中断

为了解决中断处理程序执行过长和中断丢失问题,linux将中断处理分成两个阶段(上半部分和下半部分)

  • 上半部用来快速处理中断,它在中断禁止模式下运行,主要处理跟硬件紧密相关的或时间敏感的工作。
  • 下半部用来延迟处理上半部未完成的工作,通常以内核线程的方式运行。

1.3查看软中断和内核线程

proc文件系统,它是一种内核空间和用户空间进行通信的机制,可以用来查看内核的数据结构,或者用来动态修改内核的配置

/proc/softirqs 提供了软中断的运行情况 /proc/interrupts 提供了硬中断的运行情况

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
$ cat /proc/softirqs
                    CPU0       CPU1       CPU2       CPU3
          HI:          0          0          0          0
       TIMER:    1748723    1460716    1566804    1649506
      NET_TX:       1977        391        387        501
      NET_RX:     412145     238491     268325     313933
       BLOCK:        796       1240       1371        940
    IRQ_POLL:          0          0          0          0
     TASKLET:          1          0          0          0
       SCHED:     685748     613832     744893     749230
     HRTIMER:          0          0          0          0
         RCU:     686491     776842     774345     982495