在旧版本的 Linux 架构中,系统调用在执行过程中总会生成中断。它们的执行方式是将系统调用号放入 %eax,将参数放入 %ebx、%ecx 等,然后发出特定的中断 int 0x80。因此,可以说系统调用是系统中软件中断的常见原因。
然而,在现代 x86_64 架构上,有一个特定的系统调用指令“syscall”,它完全不需要使用中断 0x80,因此也不需要中断描述符表。虽然我相信以前为 syscall 生成中断的方法仍然受支持,但 syscall 指令似乎是实际使用的方式。
因此,我的问题是:系统调用产生中断的说法不再正确了吗?例如,系统调用是否仍会增加 vmstat 的“中断”列输出中显示的数字?