x86发生无法恢复的硬件故障之后,会触发中断通知操作系统,这个中断是硬件直接触发的,而不是kernel或driver通过指令触发的。
需要注意的是x86 CPU结构本身允许硬件设计者触发其它类型的中断,比如有一位做存储设备的朋友就说他们的设备是触发SMI – System Management Interrupt,触发SMI中断以后,系统进入SMM模式-System Management Mode,这种特殊模式的设计初衷是给firmware/BIOS使用的,用于处理电源管理、硬件故障、安全功能等等。参见[URL] 使用SMI的优点很明显:不占用已经被过度使用的NMI中断,但是使用SMI需要通过firmware实现,在一些专用设备比如磁盘阵列上可能会采用这种方式,在主流的服务器上还不常见。
注:我们在讨论“x86发生无法恢复的硬件故障”这个题目的时候,请注意触发中断是在硬件层面上发生的,某个硬件故障直接通过硬件针脚触发中断,并不是kernel或driver通过指令触发中断。虽然kernel和driver也可以通过指令触发NMI或SMI,但那是另一个话题–即“kernel或driver认为有故障而故意触发NMI或SMI”–我们在此不予讨论。