文章目录
- 每日一句正能量
- 导读
- 一、引言:进程是操作系统的核心抽象
- 二、进程创建:fork、clone 与 vfork
- 2.1 fork():进程复制的基石
- 2.2 写时复制(Copy-On-Write, COW)
- 2.3 clone():Linux 特有的精细化控制
- 2.4 vfork():已废弃的历史遗留
- 三、程序执行:exec 族函数
- 3.1 exec 的本质:地址空间替换
- 3.2 exec 族函数对比
- 3.3 典型的 fork + exec 模式
- 四、进程状态转换
- 4.1 进程状态机
- 4.2 不可中断睡眠(D 状态)
- 4.3 查看进程状态
- 五、进程终止与资源回收
- 5.1 进程终止的五种方式
- 5.2 僵尸进程(Zombie)
- 5.3 孤儿进程与 init 接管
- 5.4 wait 与 waitpid 详解
- 六、进程组、会话与控制终端
- 6.1 三层级进程组织模型
- 进程组(Process Group)
- 会话(Session)
- 控制终端(Controlling Terminal)
- 6.2 相关系统调用
- 6.3 作业控制(Job Control)
- 七、守护进程编写规范
- 7.1 标准守护进程编写流程
- 7.2 为什么需要 fork 两次?
- 7.3 现代替代方案
- 八、内核视角:task_struct 与调度
- 8.1 进程描述符 task_struct
- 8.2 进程创建的内核路径
- 8.3 调度器与进程状态
- 九、总结:进程管理的完整图景
每日一句正能量
“这个世界最大的谎言就是你不行。”
许多高墙起初只是别人口中的一句低语。但历史由突破“不可能”的人书写——而他们最初,也只是选择相信了另一个声音。
导读
系列导读:本文是《Rust 异步深度解析》系列的第十一篇。在前十篇中,我们从 Rust 语言特性深入到了系统级编程。本篇将视角下沉到操作系统内核层面,系统讲解 Linux 进程管理的完整机制——从进程的创建(fork/clone/vfork)、执行替换(exec 族函数)、状态转换,到终止回收(wait/waitpid)、僵尸进程处理,以及进程组、会话和守护进程的编写。理解这些机制,是掌握系统编程和容器技术的基石。
一、引言:进程是操作系统的核心抽象
在 Linux 系统中,**进程(Process)**是资源分配的基本单位,也是程序执行的实体。从用户按下回车键启动一个程序,到后台服务的长期运行,再到容器内隔离的应用,无一不依赖于内核的进程管理机制。
Linux 进程管理的核心围绕几个关键问题展开:
- 如何创建进程?