中断是大家用的最多的功能,不管是单片机还是 Linux 系统,都需要用到中断,对它的深入理解是非常必要的。
为什么需要中断?
答案:处理器的速度比外设快很多,内核必须要处理其他任务,只有当外设准备好了,CPU才转过来处理外设的事务。
一般通讯方式为:轮询(polling)、中断(interrupt),除了网络传输适合用轮询外,一般其他情况都是用中断。
中断分类
中断是指CPU正常运行期间,由于内外部事件或程序预先安排的事件,引起的CPU暂时停止正在运行的程序,转而为该内部或外部预先安排的事件服务的程序中去,服务完毕后再返回去继续执行被暂时中断的程序。
常说的中断其实是第一种,异步中断。陷阱就是系统调用,从用户态陷入到内核态,比如调用open、write等系统调用,也算中断。这两种很正常,所以会返回到下一条指令。
故障就是遇到了内存缺页等情况,会返回到当前指令继续执行,看看内核是否会修复完毕,如果修复不了就挂掉了。终止就是系统直接挂掉了。
中断子系统硬件架构
一个完整的设备中,与中断相关的硬件可以划分