系统调用(System Call)是操作系统提供给用户程序的唯一合法接口,用于请求内核态才能执行的特权操作(如 I/O、内存分配、进程创建)。
| 类别 | 功能 | 示例 |
|---|---|---|
| 进程控制 | 创建/终止/等待进程 | fork()、exit()、wait() |
| 文件操作 | 读写创建删除文件 | open()、read()、write() |
| 设备管理 | 请求/释放设备 | ioctl()、read()、write() |
| 内存管理 | 分配/释放内存 | mmap()、brk() |
| 信息维护 | 获取/设置系统信息 | getpid()、time() |
| 进程通信 | 管道/共享内存/消息 | pipe()、shmget() |
| 对比项 | 系统调用 | 普通函数调用(库函数) |
|---|---|---|
| 运行状态 | 内核态 | 用户态 |
| 切换方式 | 陷入(trap)+ 模式切换 | 普通跳转(call) |
| 开销 | 大(保存/恢复现场、模式切换) | 小(仅压栈跳转) |
| 安全性 | 受内核保护,有权限检查 | 无额外保护 |
| 功能 | 特权操作(I/O、进程管理等) | 通用计算 |
write 系统调用。不是所有库函数都涉及系统调用。↑ 以上为站内 HTML 相对链接(纯网页可浏览);本页右上「在 Obsidian 中打开」跳回源笔记。