Administrator
Published on 2025-03-13 / 4 Visits
0
0

操作系统进程状态详解

操作系统中的进程在其生命周期中会经历多种状态,常见的状态包括以下五种基本类型,部分系统可能在此基础上扩展(如挂起状态):

1. 新建状态(New)

  • 描述:进程正在被创建,操作系统为其分配资源(如内存、PID等),但尚未完成初始化。
  • 转换:创建完成后进入就绪状态

2. 就绪状态(Ready)

  • 描述:进程已准备好运行,具备所需资源(除CPU外),等待被调度器分配CPU时间片。
  • 转换
    • 被调度选中 → 运行状态
    • 若被挂起(如内存不足) → 就绪挂起状态(扩展状态)。

3. 运行状态(Running)

  • 描述:进程正在CPU上执行指令。
  • 转换
    • 时间片用完或被更高优先级进程抢占 → 就绪状态
    • 需要等待事件(如I/O) → 阻塞/等待状态
    • 执行完毕或被终止 → 终止状态

4. 阻塞/等待状态(Blocked/Waiting)

  • 描述:进程因等待外部事件(如I/O完成、信号量释放)而暂停运行,主动让出CPU。
  • 转换
    • 等待的事件完成 → 就绪状态
    • 若被挂起 → 阻塞挂起状态(扩展状态)。

5. 终止状态(Terminated)

  • 描述:进程执行完毕或异常终止,操作系统回收其资源(内存、文件句柄等),但进程控制块(PCB)可能暂存以供父进程查询。
  • 转换:无后续状态,最终由系统清理。

扩展状态(挂起模型)

某些系统引入挂起状态以优化资源使用:

  • 就绪挂起(Ready Suspended):进程在就绪状态被换出到外存,需换入内存后才能运行。
  • 阻塞挂起(Blocked Suspended):进程在阻塞状态被换出到外存,事件完成后需先换入内存再转为就绪。

状态转换示意图

新建 → 就绪 ↔ 运行 ↔ 阻塞 → 终止
          ↑↓挂起         ↑
         就绪挂起 ↔ 阻塞挂起

关键点

  • 核心状态:就绪、运行、阻塞(三状态模型)。
  • 完整生命周期:新建、就绪、运行、阻塞、终止(五状态模型)。
  • 挂起状态:用于处理内存紧张或交互式系统的进程调度优化。

不同操作系统的具体实现可能略有差异(如Linux中的TASK_INTERRUPTIBLE等),但核心逻辑一致。


Comment