Linux进程概念一次性打通,新手友好型

白菜欣 2026-05-14 17:32:25

Linux —进程概念该文章主要讲解内容如下

进程的核心组成:PCB(进程控制块)

Linux 内核中,每个进程都由一个 struct task_struct(进程控制块,简称 PCB)描述,它相当于进程的 “身份证 + 档案袋”,记录了进程的所有关键信息:

  • 进程标识:PID(进程 ID)、PPID(父进程 ID)、进程组 ID、会话 ID
  • 运行状态:就绪、运行、阻塞、僵尸、孤儿等状态
  • 调度信息:优先级(nice 值)、时间片、调度队列节点
  • 内存资源:虚拟地址空间描述符 mm_struct,包含代码段、数据段、堆、栈等
  • 上下文数据:CPU 寄存器值(通用寄存器、程序计数器 eip 等),用于进程切换时保存 / 恢复现场
  • 文件描述符:打开的文件列表、标准输入 / 输出 / 错误流

进程的生命周期

进程从创建到消亡,会经历完整的状态流转:

  1. 创建:通过 fork()/vfork()/clone() 系统调用创建子进程,内核为其分配 task_struct、虚拟地址空间和资源
  2. 就绪:进程资源已分配完成,等待 CPU 调度,进入运行队列
  3. 运行:CPU 调度器选中进程,进程在 CPU 上执行指令
  4. 阻塞 / 等待:进程主动放弃 CPU,等待 I/O 事件(如键盘输入、磁盘读写)或信号,进入设备等待队列
  5. 终止:进程执行完毕或被信号终止,进入僵尸状态,等待父进程回收资源
  6. 消亡:父进程调用 wait()/waitpid() 回收子进程,内核释放进程的所有资源,进程彻底消失

关键特殊进程

  1. 僵尸进程:子进程已终止,但父进程未调用 wait() 回收其 PCB,子进程保留少量信息,占用 PID 资源
  2. 孤儿进程:父进程先于子进程退出,子进程被系统进程 init/systemd(PID=1)收养,由系统自动回收
  3. init/systemd 进程:PID=1,是所有用户进程的祖先,负责孤儿进程的回收和系统服务管理

进程与线程的区别(补充)

  • 进程:资源分配的基本单位,拥有独立的地址空间和资源,进程间通信(IPC)开销较大
  • 线程:调度执行的基本单位,共享所属进程的地址空间和资源,线程间切换开销较小

总结

进程是 Linux 系统中资源管理和调度的核心单位,内核通过 task_struct 统一描述和管理进程,实现了进程的创建、调度、切换和回收。理解进程的概念,是深入学习 Linux 内核、系统编程和操作系统原理的基础。

...全文
35 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

30,785

社区成员

发帖
与我相关
我的任务
社区描述
就等你来冒个泡~
社区管理员
  • 灌水乐园
  • 社区助手
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

版主:

社区助手

 

试试用AI创作助手写篇文章吧