所以程式與 kernel 進行溝通的動作,最後都是以系統呼叫 (system call) 的方式來進行,譬如程式需要開啟一個檔案、建立一個新的子行程、或是要求一個記憶體空間。如果有興趣去看執行中的程式使用了那些系統呼叫動作,可以透過 strace 命令去觀察。
一般程式是無法直接存取 kernel 的,他不能存取 kernel 的記憶體內容,也不能直接呼叫使用 kernel 的功能,因為 CPU 的保護模式不允許一般程式這麼做。但是系統呼叫例外,他會透過呼叫中斷 (interrupt) 的方式切換到 kernel 模式底下。在 Intel x86 CPU 中,這個中斷稱為 INT 0x80。當程式跳到著個中斷位址,就是不在受 user mode 的限制,CPU 將允許程式執行任何指令。