是的,不是.
在x86 CPU上(例如),有一条int产生中断的指令.一旦生成所述中断,CPU将不一定1由软件生成一个由硬件产生的中断和区分.例如,在原始PC BIOS中,IBM选择了一个中断,该中断将导致执行print-screen命令.他们选择的中断(中断5)是一个尚未使用的中断,但英特尔曾说过这个中断是为了将来使用而保留的.英特尔最终确实使用了该中断 - 在286中,他们添加了一条bound指令,用于检查值是否在边界内,如果不是则生成中断.该bound指令基本上从未使用过,因为如果某个值超出范围,它会生成中断5.这意味着(如果你正在运行像MS-DOS这样的东西允许它)执行bound带有超出范围的值的指令将打印屏幕.
但是,在现代操作系统中,通常不允许这样做.中断的所有生成和处理都发生在内核中.硬件具有4级保护("环"),并支持指定int可以执行指令的环.如果你试图从在第3环上运行的代码执行它,它将不会直接执行 - 相反,执行将切换到操作系统内核,它可以根据自己的选择对待它.
这允许(例如)的Windows模仿MS-DOS,所以MS-DOS程序(做用int指令)可以在虚拟机中运行,随着虚拟化的输入和输出,所以即使他们"想"他们直接合作使用键盘和屏幕硬件,他们实际上正在使用软件提供的仿真.
但是,对于"本机"程序,使用大多数int指令(即除了用于与内核通信的少量中断之外)只会导致程序关闭.
所以,底线:是的,硬件支持它 - 但硬件也支持禁止它,几乎每个现代操作系统都这样做,至少对于OS内核本身以外的大多数代码.