操作系统之系统调用
一、什么是系统调用应用程序请求操作系统内核服务的唯一合法入口用户态程序 → 系统调用 → 内核态执行 → 返回用户态本质受控进入内核的接口保证安全、隔离、统一管理资源二、为什么需要系统调用用户程序不能直接操作硬件权限不足、不安全统一接口不管硬件如何应用都用同一套 API保护系统防止程序乱改内存、乱发 I/O、搞崩系统三、典型系统调用Linux进程forkexecexitwait文件openreadwritecloselseekstat内存mmapbrkmunmap设备ioctl网络socketbindconnectsendrecv信号signalkill四、系统调用完整执行流程核心应用程序调用库函数如read库函数准备参数执行陷入指令int 0x80/syscallCPU 从用户态 → 内核态内核根据系统调用号找到对应处理函数内核执行操作读文件、创建进程等执行完毕返回结果CPU 从内核态 → 用户态库函数把结果返回给应用五、Mermaid 系统调用流程图用户程序 Application调用库函数 glibc准备参数 系统调用号执行陷入指令 syscall / int 0x80CPU 切换: 用户态 → 内核态系统调用处理函数 syscall_handler根据调用号执行内核服务内核完成操作 read/write/fork...设置返回值CPU 切换: 内核态 → 用户态库函数返回结果给程序程序继续执行六、系统调用 vs 库函数 vs API层次位置权限速度系统调用内核内核态较慢切换开销库函数用户态用户态快API接口统称——简单记库函数可能封装系统调用系统调用是真正进入内核的门七、一句话总结系统调用就是用户程序向内核“申请服务”的受控入口是用户态与内核态之间的桥梁。