Mac操作系统XNU内核(二)系统调用

(XNU,是苹果操作系统OS X的内核)

BSD风格系统调用

  1. 这里的456,仅指BSD风格的系统调用数量;
  2. 系统调用会经过idt64.s文件中定义的中断号到hndl_unix_scall或hndl_unix_scall64,再通过数组sysent执行不同系统调用;
  3. 虽然名义上有456个,其实从代码看来相当一部分不会去实现。
 
Mach风格系统调用
  1. Mach的“系统调用”叫作mach trap
  2. 与BSD风格系统调用不同,进入hndl_mach_scall或hndl_mach_scall64,再通过数组mach_trap_table调用不同MACH_TRAP
  3. Mach trap不多,也不常用

其他两类系统调用

  1. 还有二种类型的“系统调用”
  2. 通过hndl_mdep_scall或hndl_mdep_scall64进入数组machdep_call_table/machdep_call_table64,然后再调用不同MACHDEP_CALL_ROUTINE
  3. 通过hndl_diag_scall64作为起点开始执行
原文地址:https://www.cnblogs.com/andypeker/p/4360514.html