在计算机的运行过程中,外部中断是一种很常见的事件,它可以打破 CPU 正常的执行流程,插入一段特殊的处理流程,以响应外部设备的请求。
外部中断是指由 CPU 外部的硬件或其他系统触发的中断事件,例如:输入/输出(I/O)、内存访问错误、时钟、电源等。当这些事件发生时,系统会切换到特殊的操作状态,以便去响应事件。外部中断的作用是保证系统的正常运行,当系统需要进行一些预定的操作,或者需要允许用户交互时,就需要响应外部中断。当然,在一些特定的应用场景下,需求量较大的外部中断,反而会对系统的效率产生影响。
外部中断一般是由外设向 CPU 发送信号,以请求 CPU 去处理某一事件。CPU 接收到信号后,会中断正在执行的指令,进入中断服务程序。在这个程序中,会关掉中断信号,保存当前的 CPU 状态,将控制权转移给中断程序,开始执行中断任务。中断完成后,CPU 通过上下文切换,回到原来的程序继续执行。
外部中断和软中断都是用来中断 CPU 正在执行的指令,但是它们的触发方式和处理方式有所不同。
外部中断通常由硬件设备产生,与 CPU 无关,可用于外部设备的数据传输和请求处理等。在外部中断发生时,CPU 会立即中断当前任务,执行只能响应唯一事件的中断程序。中断程序结束后,CPU 会恢复先前的任务。
软中断则是通过特殊的指令来触发的中断事件,它由操作系统内核产生,用于实现操作系统的各种功能服务,如网络传输、定时器服务、系统调用等。软中断是通过系统调用执行的,系统调用是一种以特殊方式进入系统的控制台,将控制权托管给操作系统内核,并执行系统调用代码中的指令。执行结束后,系统会返回原来的程序进行继续执行。