中断是系统用来响应硬件设备请求的一种机制,会打断进程的正常调度和执行,转而去执行内核中的中断处理程序。
比如你正在看书,你女朋友叫你出去逛街。你就需要先放下手里的事情,然后逛街。回来之后,在接着看书。
中断其实是一种异步的事件处理机制,可以提高系统的并发处理能力。
因为中断会打断正在运行的进程执行,所以需要非常快的执行。但是在实际中,可能A进程执行,执行一个中断,如果此时有别的中断,就不会被执行,而需要先等第一个中断执行完毕。而第二次的中断就可能丢失。
为了解决中断执行时间过程和可能丢失中断的问题,将中断分为两阶段。
比如我们常说的网络数据包,当服务端发送数据包到客户端,首先会通过硬中断的方式进行通知内核数据到了,然后内核调用中断处理程序响应。将网卡的数据读取到内存中,然后更新硬件寄存器的状态,发送一个软中断的信号。
下半部分就是将软中断信号唤醒后,从内存找到数据进行按照数据逐层解析,发送给应用程序。
上半部分处理硬件请求,也叫硬中断
下半部分处理软请求,也叫软中断
proc 是用户空间和内核空间通信的机制,可以通过
root@qxlxi:/# cat /proc/softirqs
CPU0 CPU1
HI: 7 3
TIMER: 4857682 4999161
NET_TX: 176194 61001
NET_RX: 216930 191267
BLOCK: 130746 129902
IRQ_POLL: 0 0
TASKLET: 4041 4238
SCHED: 4402511 4539135
HRTIMER: 0 0
RCU: 4878791 4871501
查看
root@qxlxi:/# ps aux | grep softirq
root 9 0.0 0.0 0 0 ? S Sep18 0:07 [ksoftirqd/0]
root 18 0.0 0.0 0 0 ? S Sep18 0:05 [ksoftirqd/1
本篇主要说了中断的类型,硬件中断和软件中断,分别以及查看对应的命令