system call(syscall,系统调用) 是 user-space 程序用来向 kernel 请求服务的机制——打开文件、发送网络数据、分配内存、创建进程。因为这些动作触及硬件或影响其他进程,只有 kernel 才能执行它们,所以一次 syscall 是有意地跨越保护边界。
user mode 与 kernel mode
CPU 运行在(至少)两个特权级别之一:
text
user mode → restricted: no direct hardware access, no privileged instructions
kernel mode → full access: hardware, all memory, privileged CPU instructions
一次普通的函数调用停留在 user mode。一次 syscall 执行一个受控的**模式切换(mode switch)**进入 kernel mode,运行受信任的 kernel 代码,然后返回:
