中断调用是计算机系统中一种重要的机制,它可以打破CPU对指令的执行顺序,暂时中止当前的程序,转而去执行外部设备(如输入输出设备)的服务程序,待外部设备服务程序执行完毕后再返回到原程序,继续执行未完成的任务。
中断调用是一种异步事件,和CPU执行指令的同步事件有所区别。当CPU接收到中断信号时,会暂停正在执行的程序,并将CPU的状态保存,然后跳转到中断处理程序。当中断处理程序执行完毕后,CPU回到原来保存的状态,继续执行被中断的程序。
中断调用可以分为软件中断和硬件中断两类。
软件中断是通过软件指令触发的,是由程序员在程序中插入的特殊指令,如系统调用。软件中断也可以称为陷阱(trap)或异常(exception)。
硬件中断是由计算机硬件设备发出的中断请求信号触发的,例如键盘输入、鼠标移动、网络接口传输数据等。硬件中断也可以称为IRQ(Interrupt Request)。
中断调用的作用是在系统设计的过程中提高系统的并发性、实现程序模块化设计、提高计算机系统的效率,同时也保证了系统对外界设备的响应能力。借助中断,设备驱动程序可以在设备准备就绪时立即运行,而不必等到轮询到该设备才执行。这样可以避免浪费大量的时间,提高系统的效率。
当CPU接收到中断信号时,会暂停正在执行的程序,并将CPU的状态保存到内存中。这个状态称为中断现场。然后,CPU会将中断请求的许可权给中断请求的硬件,硬件在准备工作完成后,向CPU发出中断响应。此时,CPU会跳转到中断处理程序的入口地址,开始执行中断处理程序。
中断处理程序的主要工作是处理中断事件,例如从设备的缓存区中读取数据、将数据写入设备的缓存区、清除中断请求等。处理完中断事件后,中断处理程序会将CPU的状态从保存在内存中的中断现场中恢复,使CPU回到先前的执行状态,继续原来的程序。