当中断或异常发生时,运行在用户态的CPU会进入内核态,这是通过硬件实现的。
中断是指来自CPU执行指令以外的事件的发生,如设备发出的I/O结束中断、时钟中断等。 中断通常是与当前程序运行无关的事件,即它们与当前处理机运行的程序无关。 中断发生后,进入中断处理的程序属于操作系统程序。 引入多道程序技术的前提条件之一是系统具有中断功能。 甚至可以说,OS是由中断驱动的。
异常是指源自CPU指令内部的事件,如程序的非法操作码、地址越界、算术溢出、整数除零、虚拟内存缺页、特殊的Trap指令等引起的事件。 对异常的处理一般要依赖于当前程序的运行时状态。 异常不应被忽略,一旦出现应该立即处理。