操作系统--中断

735 阅读2分钟

什么是中断?

在计算机中,中断是系统用来响应硬件设备请求的一种机制,当操作系统接受到硬件的中断请求后,会打断正在执行的进程,调用内核中的中断处理程序来响应请求。中断是异步的事件处理机制,它可以提高系统的并发处理能力。

异步:在多道程序环境下,允许多个程序并发执行,但由于资源有限、进程的执行并不是一贯到底的,而是走走停停、以不可预知的速度向前推进

由于中断请求会打断其他进程,所以中断处理程序需要尽可能快地执行。有时,中断处理程序在响应中断时,可能会临时关闭中断,这意味着,如果当前的中断处理程序没有执行完之前,系统中的其他中断请求是无法响应的,这可能造成中断的丢失。

什么是软中断和硬中断?

在Linux系统中,为了解决中断处理程序执行时间过长和中断丢失的问题,将中断处理程序分为两个阶段:

  • 上半部分用来快速处理中断,此时一半会暂时关闭中断请求。
  • 下半部分用来延迟处理上半部分未完成的工作,一般以内核线程的方式进行。 举个例子:在网卡接收到网络包时,会通过硬件中断通知内核收到了新数据,此时内核调用中断处理程序将中断分为两个部分,上半部分大致就是将数据读入到内存,更新寄存器之类的,执行完这些操作后,内核会触发软中断,把一些复杂耗时的事情交给软中断处理程序去做。
  • 上半部分直接处理硬件请求,是硬中断,负责耗时短的工作,快速执行。
  • 下半部分由内核触发,是软中断,负责上半部分未完成的工作,延迟执行。

什么是外中断和内中断?

中断.png

什么是同步中断和异步中断?

  • 同步中断是在指令执行时由CPU主动产生的,受到CPU的控制。
  • 异步中断是CPU被动接收到的,由外设发出的电信号引起,其发生时间不可预测。 一般来说同步中断又称为异常,异步中断称为中断。 异常可以分为陷入(trap)、故障(fault)和终止(abort)。