中断是指一个正在执行的程序,因为遇到某些特殊事件而暂停一段时间,转去执行其他的程序,处理完后再返回原来的程序继续执行。那么,什么时候进入中断呢?
硬件中断是指由于外部设备的请求而导致的CPU暂停当前程序的执行,并切换到相应的中断服务程序去执行。硬件中断的触发条件多种多样,如时钟输入、I/O行为、电源故障、总线控制等。
在处理器所处于的系统中,硬件中断是不可避免的,会接收来自各种设备发出的中断请求,操作系统会将它们各自分配到相应的中断服务程序上进行处理,处理完成后再回到原程序。
软件中断由程序内部所调用的软中断指令引发,是指在当前程序执行到指定指令时,通过中断服务例程产生处理机的控制转移,进而使处理机执行相应的中断服务子程序的程序段。
与硬件中断不同的是,软件中断直接由程序发起,在程序的运行过程中靠软件产生一个“中断请求”,然后系统响应并调用相应的中断服务程序。
异常中断是由于程序执行过程中发生非法操作,例如访问不存在的内存、算术溢出等,导致当前程序断续的中断方式。异常中断是由CPU内部的错误控制电路或操作系统的特定服务程序响应的,并执行相应的故障处理程序。
异常中断与硬件中断、软件中断不同,其原因是由“紧急情况”导致的,如非法操作、硬件故障、硬件异常等。
信号是一种软件中断。当进程收到信号时,它将中断当前程序的执行,并开始执行一个预定义的信号处理程序。如果当前没有定义信号处理函数,则按默认方式处理(如终止)。
通常,信号是由其他进程发送给进程的。它们可以表示各种事件,例如内核中断,用户操作,或其他进程状态的改变。