在计算机系统中,中断是指CPU在执行某个程序时,由于发生了某些特定的事件,需要优先处理其他事件的情况下,请求操作系统暂停其执行的一种机制。相应地,软件中断就是由软件程序触发的一种中断。那么,软件中断靠什么来触发呢?
IO中断是最常见的软件中断之一。当设备完成了向设备控制器的数据传输,或发生了某些异常情况如设备故障时,就会产生IO中断,使CPU停止当前执行进程的执行,以便处理这个事件。IO中断还可以分为设备中断和定时器中断两种。
设备中断:发生在设备数据准备好,需要传送或接收数据时。
定时器中断:是在固定时间间隔内产生的一种周期性中断,可以用于实现操作系统的各种定时功能,如时间片轮转调度算法、提供系统时钟等。
系统调用是指用户程序通过操作系统提供的接口请求内核去完成一些需要特权才能执行的操作。例如,输入输出请求、创建进程、 锁定内存区域等。用户程序需要在系统调用时指定中断号,使程序停止执行,转入操作系统内核,完成相应的操作。
硬件异常指的是计算机硬件出现了一些问题,比如非法指令、内存读写异常等。当这些硬件异常发生时,CPU会停止当前正在执行的程序,转入异常处理程序,中断当前操作系统进程的执行。处理过程中,异常处理程序可能会修复问题,也可能无法修复,最终会由操作系统进行处理。
为了方便应用程序调用操作系统提供的服务,现代计算机的CPU都提供系统调用指令。这些指令直接触发软件中断,避免了使用中断号和中断向量表等繁琐的操作。软件中断指令通常可以直接使用操作系统提供的API库,方便了应用程序的开发。