进程的状态

120 阅读3分钟

1. 三态模型

三态模型是最简单的进程状态模型,描述了进程在操作系统中的三种基本状态:

  1. 就绪(Ready)

    • 进程已经获得了所有必要的资源(如内存),等待被分配CPU以开始执行。
    • 进程在就绪队列中等待。
  2. 运行(Running)

    • 进程正在使用CPU执行指令。
    • 在任意时刻,只有一个进程处于运行状态(在单处理器系统中)。
  3. 阻塞(Blocked)

    • 进程正在等待某个事件(如I/O操作完成)而无法继续执行。
    • 一旦事件发生,进程将从阻塞状态转移到就绪状态。

三态模型的状态转换

截屏2024-07-17 11.27.44.png

  • 从就绪到运行:调度器选择一个就绪进程,将CPU分配给它。
  • 从运行到阻塞:运行进程发出I/O请求或等待某个事件,进入阻塞状态。
  • 从阻塞到就绪:等待的事件发生,进程进入就绪状态,等待CPU分配。
  • 从运行到就绪:时间片到期,调度器将进程切换出去,进入就绪状态。

2. 五态模型

五态模型扩展了三态模型,增加了两种状态以更详细地描述进程的生命周期:

  1. 新建(New) :进程刚刚被创建,尚未进入就绪队列。
  2. 就绪(Ready) :与三态模型中的就绪状态相同。
  3. 运行(Running) :与三态模型中的运行状态相同。
  4. 阻塞(Blocked) :与三态模型中的阻塞状态相同。
  5. 终止(Terminated) :进程已经完成执行被强制终止,不再占用系统资源。

五态模型的状态转换

截屏2024-07-17 11.30.08.png

  • 从新建到就绪:操作系统完成进程初始化,将进程放入就绪队列。
  • 从就绪到运行:调度器选择一个就绪进程,将CPU分配给它。
  • 从运行到阻塞:运行进程发出I/O请求或等待某个事件,进入阻塞状态。
  • 从阻塞到就绪:等待的事件发生,进程进入就绪状态,等待CPU分配。
  • 从运行到就绪:时间片到期,调度器将进程切换出去,进入就绪状态。
  • 从运行到终止:进程完成执行或被强制终止,进入终止状态。

3. 细分进程状态及转换

截屏2024-07-17 12.21.11.png

1. 新建状态(New)

  • 新建 → 就绪:进程初始化完成,操作系统将其放入内存中,等待调度
  • 新建 → 挂起就绪:进程创建完成,但由于内存资源不足被挂起到磁盘。

2. 就绪状态(Ready)

  • 就绪 → 运行:调度器选择该进程,将CPU分配给它,进程开始执行。
  • 就绪 → 挂起就绪:由于资源紧张(如内存不足),操作系统将进程挂起到磁盘。

3. 运行状态(Running)

  • 运行 → 就绪:进程的时间片用完或被更高优先级的进程抢占,进程进入就绪状态。
  • 运行 → 阻塞:进程发出I/O请求或等待某个事件,进入阻塞状态。
  • 运行 → 终止:进程完成执行或被操作系统强制终止,进入终止状态。

4. 阻塞状态(Blocked)

  • 阻塞 → 就绪:等待的事件(如I/O操作完成)发生,进程进入就绪状态。
  • 阻塞 → 挂起阻塞:由于资源紧张,操作系统将进程挂起到磁盘。

5. 挂起就绪状态(Ready Suspended)

  • 挂起就绪 → 就绪:系统资源(如内存)恢复,操作系统将进程从磁盘调回内存,进入就绪状态。

6. 挂起阻塞状态(Blocked Suspended)

  • 挂起阻塞 → 阻塞:等待的事件发生,操作系统将进程从磁盘调回内存,进入阻塞状态。
  • 挂起阻塞 → 挂起就绪:等待的事件发生,但系统资源仍然紧张,进程进入挂起就绪状态。

7. 终止状态(Terminated)

  • 进程完成执行或被操作系统强制终止,不再占用系统资源。