Linux內核系統調用(systemcall) 所有的操作系統在其內核裡都有一些內建的函數,這些函數可以用來完成一些系統級別的功能。Linux系統使用的這樣的函數叫做“系統調用”,英文是systemcall。這些函數代表了從用戶空間島內和空間的一種轉換,例如在用戶空間調用open函數,則會在內核空間調用sys_open。一個已經安裝的系統的支持的所有的系統調用可以在/usr/include/bits/syscall.h文件裡面看到。下面是我系統的該文件的開頭幾行: [hwang@langchao hwang]$ head /usr/include/bits/syscall.h /* Generated at libc build time from kernel syscall list. */ #ifndef _SYSCALL_H # error "Never use directly; include instead." #endif #define SYS_stime __NR_stime #define SYS_getresuid __NR_getresuid #define SYS_rt_sigqueueinfo __NR_rt_sigqueueinfo #define SYS_mmap2 __NR_mmap2 每個系統調用都有一個定義好的數字,這些數字是用來構造這些系統調用的。內核通過0x80中斷來管理這些系統調用。這些系統調用的對應的數字和一些參數都在調用的時候送到某些寄存器裡面。 系統調用的數字實際上是一個序列號,表示其在系統的一個數組sys_call_table[]中的位置。