中断类型
扫描二维码
随时随地手机看文章
中断
这里简要的介绍下中断的分类。
内核与硬件通信的方式:轮询和中断。轮询速度太慢,中断被大量采用。
从不同的角度来说,中断可以有三种分类方法。
中断可以分为同步中断(synchronous)和异步中断(asynchronous)。
中断可分为硬中断和软中断。
中断可分为可屏蔽中断(Maskable interrupt)和非屏蔽中断(Nomaskable interrupt)。
同步中断是在指令执行时由CPU主动产生的,受到CPU控制,其执行点是可控的。
异步中断是CPU被动接收到的,由外设发出的电信号引起,其发生时间不可预测。
一般来说,同步中断又称为异常(exception),异步中断称为中断(interrupt)。
中断可分为可屏蔽中断(Maskable Interrupt)和非可屏蔽中断(Nomaskable Interrupt)。
异常可分为故障(fault)、陷阱(trap)和终止(abort)三类。
中断类别及行为可以区分如下:
类别 原因 异步/同步 返回行为
中断 来自IO设备的信号 异步 总是返回到下一条指令
陷阱 有意的异常 同步 总是返回到下一条指令
故障 潜在可恢复的错误 同步 返回到当前的指令
终止 不可恢复的错误 同步 不会返回
中断发生之后,需要中断处理程序对中断进行处理。
那么什么是中断处理程序呢?
中断处理程序是一个函数,有时也称为中断服务例程。在Linux中,中断处理程序独立于任何进程,在一个单独的中断上下文执行,其目的是为了及时响应。
中断处理程序分为两个部分:中断上半部(top half)和中断下半部(bottom half)。
中断上半部只做比较紧急的事情,在接收到一个中断时立即执行,并且不可被中断。
中断下半部处理又耗时又不紧急的工作,但是可以被中断
• 硬中断
○ 硬中断由硬件产生。每个设备或者设备集都有自己的IRQ(中断请求)。
* 硬件中断又可以分为内中断和外中断。
○ 处理中断的驱动是需要运行在CPU上的。在多核处理机上,一个中断只能中断一颗CPU。
○ 硬中断可以直接中断CPU。硬中断可以中断软中断。
○ 对于时钟中断,内核调度代码会将当前正在运行的进程挂起,从而让其他的进程运行。他的存在是为了让调度器可以调度多任务。
• 软中断
○ 软中断是当前进程产生的。
○ 通常,软中断是一些对IO的请求。
○ 软中断仅与内核联系。
软中断不会直接中断CPU。
• 【软中断与硬中断】
• 【Linux内核软中断】
*【中断上半部和中断下半部】
*【同步中断和异步中断】