システムコール
ユーザー空間のプロセスからカーネルを呼び出すこと。ファイルの読み込み、パケットの送信、プロセスの生成などに使い、ユーザー空間とカーネルをつなぐ唯一の扉である。
x86_64 では syscall 命令を使う(かつては int 0x80 や sysenter)。Linux には約400のシステムコールがあり、macOS/BSD は別の番号体系を持つ。コンテキストスイッチを伴うため、通常の関数呼び出し(1〜5 ns)よりずっと高価(約100〜1000 ns)だ。最適化には、非同期のシステムコールキューである io_uring(Linux 5.1以降)や、gettimeofday のようにトラップなしで動く vDSO がある。strace を使えば、プロセスが行う全てのシステムコールを追跡できる。