操作系统真像还原第12章系统调用实现
系统调用的实现思路
1用中断门实现系统调用 用0x80号中断作为系统调用
2在IDT中安装0x80号的中断描述符 并注册相应的中断处理例程
3建立系统调用子功能表syscall_table 利用eax寄存器中的子功能号在该表中索引相应的处理函数
4用宏实现用户空间系统调用接口 _syscall
代码实现过程
1在interrupt.c中,安装中断门(DPL为3)对应的处理程序是syscall_handler
2用宏实现用户空间系统调用接口
3增加0x80号中断处理例程
系统调用发生过程:
0x80号中断发生,系统通过中断门进入中断处理例程syscall_handler 在此例程中,通过保存在eax中的id来索引到syscall_table中保存的函数sys_call(系统函数),然后在此函数中,通过定义的宏_syscall0(无参)来获得pid