我研究了Linux内核,发现对于x86_64体系结构,中断int 0x80不适用于调用系统调用1。
int 0x80
对于i386体系结构(32位x86用户空间),更可取的是:syscall或者int 0x80为什么?
syscall
我使用Linux内核版本3.4。
脚注1:int 0x80在某些情况下确实可以在64位代码中工作,但是从不建议这样做。
x86-64
sysenter
调用系统调用的首选方法是使用VDSO,VDSO是映射在每个进程地址空间中的一部分内存,可以更有效地使用系统调用(例如,在某些情况下完全不进入内核模式)。与传统int 0x80方式相比,VDSO还要处理更困难的事情syscall或sysenter指令。
另外,请参阅此和本。