温馨提示×

linux进程是什么概念

小樊
41
2026-09-18 15:18:44
栏目: 智能运维

在 Linux(以及所有类 Unix 系统)中,进程(Process)正在执行的程序的一个实例

可以从下面几个层次来理解这个概念:


1. 程序和进程的区别

  • 程序(Program):存放在磁盘上的静态文件,比如 /bin/lspythona.out
  • 进程(Process):程序被加载到内存中、被 CPU 执行时的“运行态”

同一个程序可以启动多个进程
例如:你打开两个终端,运行 bash,就有两个 bash 进程


2. 进程包含什么?

一个 Linux 进程通常包括:

  • 代码段(Text):程序的指令
  • 数据段(Data):全局变量
  • 堆(Heap):动态分配的内存(malloc)
  • 栈(Stack):函数调用、局部变量
  • 进程控制块(PCB)
    • 在 Linux 中叫 task_struct
    • 保存:
      • 进程 ID(PID)
      • 父进程 ID(PPID)
      • 状态(运行、睡眠、停止等)
      • 优先级
      • 打开的文件
      • 环境变量
      • 信号处理设置

3. 进程的标识

常见概念:

  • PID:进程号(唯一)
  • PPID:父进程号
  • UID / GID:进程所属用户和组

示例:

ps -ef

输出中:

UID   PID  PPID  CMD
root   1     0   /sbin/init

4. 进程的生命周期

典型状态:

  • 创建fork() + exec()
  • 运行:在 CPU 上执行
  • 等待:等 I/O 或信号(睡眠)
  • 终止exit(),变成僵尸进程,最后被父进程回收

5. 进程是怎么来的?

Linux 启动流程简化版:

  1. 内核启动
  2. 第一个进程 init(或 systemd,PID=1)
  3. init 通过 fork/exec 创建其他进程

所有进程都是 init 的后代。


6. 进程 vs 线程

  • 进程:资源分配的基本单位
  • 线程:CPU 调度的基本单位
  • 一个进程可以包含多个线程
  • 线程共享进程的内存空间

7. 为什么理解进程很重要?

  • 排查卡死、内存泄漏
  • 理解服务是如何运行的
  • 写多进程 / 并发程序
  • 系统性能分析(top, htop, strace

如果你愿意,我也可以:

  • 代码示例(C / Python) 演示进程创建
  • 僵尸进程 / 孤儿进程
  • 进程间通信(IPC)
  • 对比 Linux 和 Windows 的进程模型

你想从哪一块继续?

0