进程的状态转换和线程的状态转换

转载文章:资源来源于网络
手打用于理解和补充,原文地址如下:

https://blog.csdn.net/sdr_zd/article/details/78748497

进程状态转换五态模型

进程的状态转换和线程的状态转换

新建态(new):是一个进程刚刚被创建的状态。处于新建态的进程,并没有被提交执行,而是在等待操作系统完成创建进程的必要操作,操作系统有时将根据系统性能或主存容量的限制推迟新建态进程的提交。
创建一个进程要通过两个步骤:

  • 为一个新进程创建必要的管理信息。
  • 让该进程进入就绪态。

就绪态(ready):是进程具备运行条件,等待系统分配处理器运行的状态。
运行态(running):是进程占有处理器正在运行的状态。
等待态(blocked):是进程不具备运行条件,正在等待某个事件的完成。
终止态(terminated):是进程结束运行的状态。进入终止态的进程以后不再执行,但依然保留在操作系统中等待其他进程完成对终态进程信息的抽取,之后操作系统删除该进程。
进程的终止需要两个步骤:

  • 需要经过等待操作系统的善后
  • 进程退出主存

引起进程状态改变的原因

NULL—新建态:执行一个程序,创建一个子进程
新建态—就绪态:操作系统完成了进程创建的必要操作,并且当前系统的性能和虚拟内存的容量均允许。
就绪态—运行态:CPU空闲时选择一个就绪进程。
运行态—就绪态:时间片使用完;出现了优先级更高的进程,剥夺系统资源。
运行态—终止态:当一个进程到达了自然结束点,或是出现了无法克服的错误,或是被操作系统所终结,或是被其他有终止权的进程所终结。
终止态—NULL:操作系统完成善后操作,删除此进程。
运行态—等待态:等待使用资源;如等待访问外设资源;等待人工干预等
等待态—就绪态:资源得到满足;如外设资源处于空闲状态;人工干预完成等

进程状态转化的三态模型和七态模型请参考文章起始位置链接。

线程状态转换

以下资源来自咕泡公开课
线程的6种状态

  • New(初始状态)
  • Runnable (ready/running 通过start方法启动一个线程时,并不会立刻运行,而是由OS调度)
  • Blocked 阻塞(线程因为某种原因放弃CPU使用权)
  • Waiting
  • Time_waiting
  • Terminated
    进程的状态转换和线程的状态转换