1.系统调用过程概述

系统调用主要通过int
指令和iret
指令实现,用户态代码与内核态代码的切换。
int
指令,产生一个软中断,进入内核态,cpu去中断向量表中查找中断处理例程。
ret
指令,从内核态返回到用户态。
过程:系统调用通过把参数放入寄存器,通过int
指令产生一个软中断,保护现场,将寄存器的值压入堆栈,cpu去执行中断处理例程,然后根据系统调用表,找到相应的系统调用,进行系统调用,恢复现场,将栈中数据弹出到寄存器中,使用iret
指令切换到用户态。
note:系统调用设计到用户态与内核态代码的切换,与一般的函数调用不同,它只能通过寄存器来进行参数传递。