进程的状态变迁

马谦马谦马谦 操作系统评论752字数 525阅读1分45秒阅读模式

一、进程状态

通常情况下,我们描述进程的状态主要有三种:

  • 就绪态:进程已经拥有了执行条件,但是没有获取到CPU,无法执行。
  • 运行态:进程已经占有了CPU,此时正在CPU上运行。
  • 阻塞态:进程在等待某项服务、信号或者外部操作等时候的状态。

三者之间的转化过程:

进程的状态变迁-图片1

状态说明:

  1. 就绪 => 运行:进程被调度,获得运行时机。
  2. 运行 => 就绪:运行时间片到了,CPU让出给其他进程运行。
  3. 运行 => 阻塞:请求服务、信号、IO或是外部操作等场景。
  4. 阻塞 => 就绪:获得了输入条件,如收到信号以及读到磁盘数据等。

为什么阻塞态到就绪态和运行态之间不能相互转化

进程处于阻塞态被唤醒时,不能直接就抢占到CPU执行,而是要等待系统调度后才能继续运行,所以必须先放到就绪态中。而处于就绪态的进程,是没有运行的,状态是不会变化的,所以不能直接变成阻塞态。

在大多数的操作系统描述中,进程可能还存在新建和终止的状态,他们之间的转态变化为:

进程的状态变迁-图片2

二、linux系统中的进程状态

linux系统中的进程可以分为以下几种状态:

  • 可运行态
    • 就绪态:等待被调度
    • 运行态:正在运行
  • 阻塞态
    • 浅阻塞:可中断,能被信号或时钟唤醒
    • 深阻塞:不可中断,不能被信号或时钟唤醒
  • 僵死态:进程执行中止,已经释放了大部分资源
  • 挂起态:进程被挂起,常出现在调试场景

 最后更新:2020-3-9
马谦马谦马谦
  • 本文由 马谦马谦马谦 发表于 2018年3月9日23:19:37
  • 转载请务必保留本文链接:https://www.dyxmq.cn/program/operating-system/process-state-transition.html
进程和线程的区别 操作系统

进程和线程的区别

一、两者对比 进程是最小的资源分配单位,线程是最小的执行单位: 每个进程至少有一个线程,任务的执行都是由线程来完成,也就是说,线程时进程运行时的实体。 线程运行时依赖进程中分配的资源,一个进程可以有多...
匿名

发表评论

匿名网友
:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:
确定

拖动滑块以完成验证