中断的分类和区别

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/imilano/article/details/83690133

中断

这里简要的介绍下中断的分类。

  1. 内核与硬件通信的方式:轮询和中断。轮询速度太慢,中断被大量采用。
  2. 从不同的角度来说,中断可以有三种分类方法。
    1. 中断可以分为同步中断(synchronous)和异步中断(asynchronous)。
    2. 中断可分为硬中断和软中断。
    3. 中断可分为可屏蔽中断(Maskable interrupt)和非屏蔽中断(Nomaskable interrupt)。
  3. 同步中断是在指令执行时由CPU主动产生的,受到CPU控制,其执行点是可控的。
  4. 异步中断是CPU被动接收到的,由外设发出的电信号引起,其发生时间不可预测。
  5. 一般来说,同步中断又称为异常(exception),异步中断称为中断(interrupt)。
  6. 中断可分为可屏蔽中断(Maskable Interrupt)和非可屏蔽中断(Nomaskable Interrupt)。
  7. 异常可分为故障(fault)、陷阱(trap)和终止(abort)三类。
  8. 中断类别及行为可以区分如下:
    类别 原因 异步/同步 返回行为
    中断 来自IO设备的信号 异步 总是返回到下一条指令
    陷阱 有意的异常 同步 总是返回到下一条指令
    故障 潜在可恢复的错误 同步 返回到当前的指令
    终止 不可恢复的错误 同步 不会返回
  9. 中断发生之后,需要中断处理程序对中断进行处理。
  10. 那么什么是中断处理程序呢?
  11. 中断处理程序是一个函数,有时也称为中断服务例程。在Linux中,中断处理程序独立于任何进程,在一个单独的中断上下文执行,其目的是为了及时响应。
  12. 中断处理程序分为两个部分:中断上半部(top half)和中断下半部(bottom half)。
  13. 中断上半部只做比较紧急的事情,在接收到一个中断时立即执行,并且不可被中断。
  14. 中断下半部处理又耗时又不紧急的工作,但是可以被中断

• 硬中断
○ 硬中断由硬件产生。每个设备或者设备集都有自己的IRQ(中断请求)。
* 硬件中断又可以分为内中断和外中断。
○ 处理中断的驱动是需要运行在CPU上的。在多核处理机上,一个中断只能中断一颗CPU。
○ 硬中断可以直接中断CPU。硬中断可以中断软中断。
○ 对于时钟中断,内核调度代码会将当前正在运行的进程挂起,从而让其他的进程运行。他的存在是为了让调度器可以调度多任务。
• 软中断
○ 软中断是当前进程产生的。
○ 通常,软中断是一些对IO的请求。
○ 软中断仅与内核联系。
软中断不会直接中断CPU。

【软中断与硬中断】
【Linux内核软中断】
*【中断上半部和中断下半部】
*【同步中断和异步中断】

猜你喜欢

转载自blog.csdn.net/imilano/article/details/83690133