中断是什么
*中断是指计算机运行过程中,出现某些意外情况需主机干预时,机器能自动停止正在运行的程序并转入处理新情况的程序,处理完毕后又返回原被暂停的程序继续运行*
[中断](https://baike.baidu.com/item/%E4%B8%AD%E6%96%AD/3933007)是一种电信号,当设备有某种事件发生时,它就会产生中断,通过总线把电信号发送给[中断控制器](https://baike.baidu.com/item/%E4%B8%AD%E6%96%AD%E6%8E%A7%E5%88%B6%E5%99%A8/15732992)。
在计算机中中断又分为两种:1.硬中断 2.软中断
1. 硬中断
硬中断是什么:
由与系统相连的外设(比如网卡、硬盘)自动产生的。主要是用来通知操作系统系统外设状态的变化。比如当网卡收到数据包的时候,就会发出一个中断。我们通常所说的中断指的是硬中断(hardirq)。
硬中断的的分类:
可屏蔽中断 、非可屏蔽中断、处理器间中断、伪中断
2.软中断
软中断是什么:
为了满足实时系统的要求,中断处理应该是越快越好。linux为了实现这个特点,当中断发生的时候,硬中断处理那些短时间就可以完成的工作,而将那些处理事件比较长的工作,放到中断之后来完成,也就是软中断(softirq)来完成。
软中断和硬中断的区别
1、硬中断是由外部事件引起的因此具有随机性和突发性;软中断是执行中断指令产生的,无外面事件中断请求信号,因此软中断的发生不是随机的而是由程序安排好的。
2、硬中断的中断号是由中断控制器提供的(NMI硬中断号系统指定的为02h);软中断的中断号是由指令直接给出的,无需使用中断控制器。
3、硬中断的中断响应周期,CPU需要发中断回合信号(NMI不需要),软中断的中断响应周期,CPU不需要发中断回合信号。
4、硬中断是可屏蔽的(NMI硬中断不可屏蔽),软中断是不可屏蔽的。
实例:
*网卡接收到数据包后,会通过硬件中断的方式,通知内核有新的数据到了。这时,内核就应该调用中断处理程序来响应它。对上半部来说,既然是快速处理,其实就是要把网卡的数据读到内存中,然后更新一下硬件寄存器的状态(表示数据已经读好了),最后再发送一个软中断信号,通知下半部做进一步的处理。而下半部被软中断信号唤醒后,需要从内存中找到网络数据,再按照网络协议栈,对数据进行逐层解析和处理,直到把它送给应用程序。*
*所以,这两个阶段你也可以这样理解:*
*上半部直接处理硬件请求,也就是我们常说的硬中断,特点是快速执行;*
*而下半部则是由内核触发,也就是我们常说的软中断,特点是延迟执行。*
推荐:想要知道更多请访问https://www.cnblogs.com/yang-dan
推荐https://www.cnblogs.com/baozexu