(图片来源网络,侵删)
1、运行状态(Running)
进程正在CPU上执行指令。
该状态是最常见的进程状态。
2、就绪状态(Ready)
进程已经准备好运行,但尚未获得CPU的执行权。
当其他进程处于等待或睡眠状态时,就绪状态的进程会被调度到CPU上运行。
3、阻塞状态(Blocked)
进程正在等待某个事件的发生,例如等待I/O操作完成或等待用户输入。
当事件发生后,进程会从阻塞状态转换为就绪状态。
4、暂停状态(Suspend)
进程被挂起,暂时停止执行。
通常用于调试或跟踪进程执行的情况。
5、终止状态(Terminated)
进程已经结束执行,不再存在。
当进程完成其任务或遇到错误时,会进入终止状态。
6、僵死状态(Zombie)
进程已经终止,但其退出状态尚未传递给其父进程。
此时进程占用的资源仍未释放,直到父进程收集其退出状态为止。
以下是各个状态之间的转换关系表格:
当前状态 事件 下一状态 运行 CPU时间片用完 就绪 运行 主动放弃CPU,如调用sleep()函数 就绪 就绪 获得CPU的执行权 运行 就绪 I/O操作完成或用户输入完成 运行 运行 发生异常或错误 终止 运行 主动调用exit()函数 终止 阻塞 I/O操作完成或用户输入完成 就绪 阻塞 等待的事件超时或取消 就绪 就绪 获得CPU的执行权 运行 就绪 被调度器选中 运行 运行 I/O操作开始 阻塞 运行 主动调用sleep()函数 阻塞 阻塞 I/O操作完成或用户输入完成 就绪 阻塞 等待的事件超时或取消 就绪