摘要: 通过软件中断0x80,系统会跳转到一个预设的内核空间地址,它指向了系统调用处理程序(不要和系统调用服务例程相混淆),即在arch/i386/kernel/entry.S文件中使用汇编语言编写的system_call函数。很显然,所有的系统调用都会同一跳转到这个地址进而执行system_call函数,那么system_call函数又该如何派发它们到各自的服务例程呢? 软中断指令int0x80执行时,系统调用号会被放进eax寄存器,同时,sys_call_table每一项占用4个字节。这样,system_call函数可以读取eax寄存器获得当前系统调用的系统调用号,将其乘以4天生偏移地址,然后.. 阅读全文
posted @ 2012-02-28 23:21 only_eVonne 阅读(2717) 评论(0) 推荐(0) 编辑