系統調用(system call):通過軟件中斷向內核態發出一個明確的請求
應用程序接口(API):只是一個函數定義,說明了如何獲得一個給定的服務
系統調用屬於內核,而用戶態的庫函數不屬於內核,當用戶態的進程調用一個系統調用時,CPU切換到內核態並開始執行一個內核函數。
系統調用處理程序執行下列操作:
1.在內核態棧保持大多數寄存器的內容
2.調用名爲系統調用服務例程的相應的C函數來處理系統調用
3.退出系統調用處理程序:用保存在內核棧中的值加載寄存器,CPU從內核態切換回到用戶態
因爲內核實現了很多不同的系統調用,因此進程必須傳遞一個名爲系統調用號的參數來是吧所需的系統調用。爲了把系統調用號與相應的服務例程關聯起來,內核利用了一個系統調用分派表,這個表放在sys_call_table數組中,有NR_syscalls個表項,第n個表項包含系統調用號爲n的服務例程的地址。