文章目录
- 一、进程状态及其含义
- 1.1、9种状态
- 1.2、6种状态
- 1.3、两种方式关系
在 Linux 系统中,进程状态是指操作系统中每个进程在其生命周期中的当前状态。了解这些状态有助于系统管理员和开发人员监控和优化系统性能。
一、进程状态及其含义
目前进程状态分为2种,一种是9种状态,一种是6种状态
1.1、9种状态
- 新建(New):
- 描述:进程正在被创建但尚未准备好运行。
- 特征:这通常是一个短暂的状态,进程快速进入就绪状态。
- 就绪(Ready):
- 描述:进程已准备好运行,等待被调度到 CPU 上执行。
- 运行(Running, R):
- 描述:进程正在 CPU 上执行,或者准备执行(在就绪队列中等待)。
- 特征:进程在 CPU 时间片内执行,或者在调度器选择下一个要运行的进程时被选中。
- 等待(Waiting)
- 描述:进程因等待某些资源或事件(如I/O操作完成、信号量、锁等)而暂时无法继续执行。
- 原因:
- 等待用户输入。
- 等待磁盘I/O操作完成。
- 等待其他进程释放资源(如锁或信号量)。
- 特点:
- 进程不会占用CPU资源。
- 当等待的事件发生后,进程会转为就绪状态。
- 睡眠(Sleeping, S):
- 描述:进程正在等待某个事件(如 I/O 操作)完成。
- 特征:分为可中断睡眠(可以通过信号唤醒)和不可中断睡眠(通常等待硬件事件,不能被信号打断)。
- 挂起(Suspended):
- 描述:进程被挂起,通常是为了节省内存资源。
- 特征:进程被移出内存,状态信息保存在磁盘上。
- 停止(Stopped, T):
- 描述:进程已被停止,通常是由于接收到停止信号(如 SIGSTOP),或者正在被调试。
- 特征:进程不再执行,直到接收到继续信号(如 SIGCONT)。
- 僵尸(Zombie, Z):
- 描述:进程已终止,但其父进程尚未读取其退出状态。进程资源已释放,但进程表项仍然存在。
- 特征:需要父进程调用 wait 系列函数来读取其退出状态并从进程表中移除。
- 死亡(Terminated):
- 描述:进程已完成执行或因错误被终止。
- 特征:进程表中不再存在,所有资源已被回收。
1.2、6种状态
-
R (Running or Runnable)
- 描述:进程正在运行或处于可运行状态。
- 具体含义:
- 进程正在 CPU 上执行。
- 进程在就绪队列中,等待 CPU 调度。
- 特点:
- 进程正在使用 CPU 或准备使用 CPU。
- 这是进程的活跃状态。
-
S (Interruptible Sleep)
- 描述:进程处于可中断的睡眠状态。
- 具体含义:
- 进程在等待某些事件(如 I/O 操作完成、信号等)。
- 可以被信号中断并唤醒。
- 特点:
- 进程不占用 CPU 资源。
- 当等待的事件发生或收到信号时,进程会转为 R 状态。
-
D (Uninterruptible Sleep)
- 描述:进程处于不可中断的睡眠状态。
- 具体含义:
- 进程正在等待某些内核操作完成(如磁盘 I/O)。
- 不能被信号中断。
- 特点:
- 进程不占用 CPU 资源。
- 这种状态通常持续时间较短,但如果硬件出现问题,进程可能会长时间卡在此状态。
- 无法通过 kill 命令终止。
-
T (Stopped)
- 描述:进程被暂停(挂起)。
- 具体含义:
- 进程被信号(如 SIGSTOP)暂停。
- 可以通过信号(如 SIGCONT)恢复运行。
- 特点:
- 进程不占用 CPU 资源。
- 常见于调试场景或用户手动暂停进程。
-
X (Dead)
- 描述:进程已经终止,等待父进程回收。
- 具体含义:
- 进程执行完毕或被强制终止。
- 进程的资源尚未被完全回收。
- 特点:
- 进程不占用 CPU 资源。
- 这是一个瞬时状态,通常很难观察到。
-
Z (Zombie)
- 描述:进程处于僵尸状态。
- 具体含义:
- 进程已经终止,但其退出状态尚未被父进程读取(通过 wait() 系统调用)。
- 进程描述符仍然保留在系统中。
- 特点:
- 进程不占用 CPU 资源。
- 僵尸进程无法被 kill 命令终止。
- 如果父进程未正确处理,僵尸进程可能会一直存在,导致资源泄漏。
状态 | 名称 | 描述 |
---|---|---|
R | Running or Runnable | 进程正在运行或可运行。 |
S | Interruptible Sleep | 进程在等待事件,可被信号中断。 |
D | Uninterruptible Sleep | 进程在等待内核操作,不可被信号中断。 |
T | Stopped | 进程被暂停(挂起)。 |
X | Dead | 进程已终止,等待回收。 |
1.3、两种方式关系
状态 | 含义 | 对应状态 |
---|---|---|
R (Running) | 进程正在运行或者在运行队列中等待 | 运行(Running)和就绪(Ready) |
S (Sleeping) | 进程正在等待某个事件(如 I/O 操作)完成。通常是短期等待 | 阻塞(Blocked)或等待(Waiting) |
D (Uninterruptible Sleep) | 进程在等待无法中断的事件,通常是等待 I/O 操作完成。进程不能被信号唤醒 | 类似于挂起(Suspended),但更加具体化为不可中断的等待 |
T (Stopped/Traced) | 进程已停止,通常是由于接收到停止信号(如 SIGSTOP)或者正在被调试 | 停止(Stopped) |
X (Dead) | 进程已经终止,通常不会在正常的进程列表中看到这个状态,因为它已经被回收 | 死亡(Terminated) |
Z (Zombie) | 进程已经终止,但其父进程尚未读取其退出状态。进程仍然在进程表中,直到父进程处理其终止状态 | 特殊的死亡状态(Terminated),需要父进程调用 wait 系列函数处理 |