操作系统真像还原第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

   

 

posted @ 2017-11-15 16:06  菜比170  阅读(163)  评论(0编辑  收藏  举报