一、进程状态
通常情况下,我们描述进程的状态主要有三种:
- 就绪态:进程已经拥有了执行条件,但是没有获取到CPU,无法执行。
- 运行态:进程已经占有了CPU,此时正在CPU上运行。
- 阻塞态:进程在等待某项服务、信号或者外部操作等时候的状态。
三者之间的转化过程:
状态说明:
- 就绪 => 运行:进程被调度,获得运行时机。
- 运行 => 就绪:运行时间片到了,CPU让出给其他进程运行。
- 运行 => 阻塞:请求服务、信号、IO或是外部操作等场景。
- 阻塞 => 就绪:获得了输入条件,如收到信号以及读到磁盘数据等。
为什么阻塞态到就绪态和运行态之间不能相互转化
进程处于阻塞态被唤醒时,不能直接就抢占到CPU执行,而是要等待系统调度后才能继续运行,所以必须先放到就绪态中。而处于就绪态的进程,是没有运行的,状态是不会变化的,所以不能直接变成阻塞态。
在大多数的操作系统描述中,进程可能还存在新建和终止的状态,他们之间的转态变化为:
二、linux系统中的进程状态
linux系统中的进程可以分为以下几种状态:
可运行态
- 就绪态:等待被调度
- 运行态:正在运行
阻塞态
- 浅阻塞:可中断,能被信号或时钟唤醒
- 深阻塞:不可中断,不能被信号或时钟唤醒
- 僵死态:进程执行中止,已经释放了大部分资源
- 挂起态:进程被挂起,常出现在调试场景
此处评论已关闭