当前位置: 首页 > article >正文

linux 进程状态学习

文章目录

    • 一、进程状态及其含义
      • 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 命令终止。
      • 如果父进程未正确处理,僵尸进程可能会一直存在,导致资源泄漏。
状态名称描述
RRunning or Runnable进程正在运行或可运行。
SInterruptible Sleep进程在等待事件,可被信号中断。
DUninterruptible Sleep进程在等待内核操作,不可被信号中断。
TStopped进程被暂停(挂起)。
XDead进程已终止,等待回收。

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 系列函数处理

http://www.kler.cn/a/533860.html

相关文章:

  • 【多线程】线程池核心数到底如何配置?
  • Hive分区和分桶
  • 2024 JAVA面试题
  • gesp(C++六级)(13)洛谷:P11375:[GESP202412 六级] 树上游走
  • ThreadLocal
  • 2025 持续防范 GitHub 投毒,通过 Sharp4SuoExplorer 分析 Visual Studio 隐藏文件
  • SQL Server配置管理器无法连接到 WMI 提供程序
  • 设计模式---观察者模式
  • 用Argo的netCDF文件计算海洋混合层和障碍层深度并通过M_Map工具包画出全球海洋MLD和BL的分布图
  • Zabbix SQL注入漏洞CVE-2024-42327修复建议
  • Hackmyvm friendly2
  • 使用java调用deepseek,调用大模型,处理问题。ollama
  • Unity3D RVO动态避障技术方案详解
  • 春节娱乐大餐,智能家居互联互通,极空间虚拟机安装小米官方 HA 集成组件
  • excel里面的数据怎样批量地处理,把数据竖排便成横排?
  • 第五天 初步了解ArkTS和ArkUI
  • 拍照对比,X70 PRO与X90 PRO+的细节差异
  • Linux 零拷贝技术
  • C#结合html2canvas生成切割图片并导出到PDF
  • DeepSeek R1技术报告关键解析(9/10):强化学习也不是万能的
  • 2021.3.1的android studio版本就很好用
  • 备考蓝桥杯8——EEPROM读写
  • 深度探索 C 语言操作符:从基础到实战应用
  • 01-两数之和
  • FinDKG: Dynamic Knowledge Graphs...... 基于大语言模型的动态知识图谱论文笔记
  • 2502vim,vim文本对象中文文档