"实验高级系统调用 国嵌 手册"
系统调用是操作系统提供给用户程序直接访问操作系统服务的接口,它们是操作系统内核与用户空间交互的基础。手册中涉及的内容主要涵盖进程控制和文件系统控制两大方面,下面将详细解释这些系统调用的功能及其应用。
1. 进程控制
- fork: 创建一个新的进程,新进程与原进程(父进程)共享大部分资源,但拥有独立的进程标识符。
- clone: 类似于fork,但可以指定哪些资源不共享,允许更精细的控制。
- execve: 替换当前进程的内存映像,使其运行指定的可执行文件。
- exit: 正常结束进程,并返回一个退出状态给父进程。
- _exit: 直接终止进程,不执行清理工作,如释放文件描述符。
- getdtablesize: 获取进程可以打开的最大文件数。
- getpgid、setpgid、getpgrp、setpgrp: 操作进程组标识号,用于进程管理。
- getpid、getppid: 获取当前进程和其父进程的标识号。
- getpriority、setpriority: 获取或设置进程的调度优先级。
- modify_ldt: 读写本地描述符表,用于处理内存段。
- nanosleep: 让进程睡眠指定的时间,精确到纳秒。
- nice: 改变进程的优先级,影响调度。
- pause: 挂起进程,等待接收信号后恢复执行。
- personality: 设置进程的运行域,影响其行为。
- prctl: 对进程执行特定操作,如安全控制。
- ptrace: 进程跟踪,常用于调试。
- sched_get_priority_max、sched_get_priority_min: 获取调度器允许的最高和最低优先级。
- sched_getparam、sched_setscheduler、sched_getscheduler、sched_rr_get_interval: 获取和设置进程调度策略和参数。
- sched_yield: 进程自愿放弃CPU,进入就绪队列末尾。
- vfork: 创建子进程并暂停,通常与execve配合使用。
- wait、wait3、waitpid、wait4: 等待子进程结束,获取退出状态。
- capget、capset: 获取和设置进程的权限,如CAPABILITY机制。
- getsid、setsid: 获取或设置进程的会话标识号,用于控制终端。
2. 文件系统控制
- fcntl: 对文件描述符进行各种控制操作,如锁住文件的部分区域。
- open、creat: 打开或创建文件,返回文件描述符。
- close: 关闭指定的文件描述符。
- read、write: 读取和写入文件内容。
- readv、writev: 分散读取和聚集写入,允许从多个缓冲区读写。
- pread、pwrite: 随机读写,可以指定文件偏移量。
- lseek: 移动文件指针到指定位置。
- dup、dup2: 复制文件描述符,常用于确保文件不会因close而关闭。
- flock: 对文件进行锁定,防止其他进程并发修改。
- poll: 监听多个文件描述符的I/O事件。
- truncate: 截断文件到指定长度。
- ftruncate: 类似于truncate,但作用于文件描述符。
这些系统调用在编写底层程序、管理系统资源、实现并发控制等方面起着关键作用。了解并熟练掌握它们能帮助开发者更好地利用操作系统资源,编写高效可靠的程序。