据我所知,通常使用软件中断来实现对OS内核的系统调用。在x86上,有没有理由选择使用呼叫门?呼叫门似乎是“内置”方式来实现这一点:将控制转移到更高的特权级别。那么有一个特定的原因(或理由)调用门不用于x86内核吗?
答案 0 :(得分:2)
现代X86操作系统正在从CALL FAR呼叫门转移。随着SYSENTER / SYSEXIT和SYSCALL / SYSRET的引入,为x86程序的控制传输引入了一种新的更快的机制。由于大多数其他架构不支持呼叫门,因此即使在这些新指令之前,它们的使用也很少,因为软件中断/陷阱是可移植性的首选。
请参阅OSDev Wiki上的System Calls。另一个原因是虚拟化,请参阅this发布。