系统调用原理
系统调用运行在内核态,而用户程序基本上都是运行在用户态的,切换到内核态需要通过中断。来自硬件的异常和其他事件的发生为硬件中断;通过指令(int)实现软中断。中断有中断号和中断服务程序,内核中有中断向量表。其中系统调用的中断号int 0x80。
对于不同系统调用有不同系统调用号(exit调用号为1,fork 调用号为2),通过系统调用表索引。其中EAX寄存器用于传递系统调用号。
如果系统调用有参数。一个参数用EBX传递,多个参数分别用EBX,ECX,EDX,ESI,EDI和EBP传递。
Linux下系统调用过程