进程的三种状态
在一个进程的活动期间至少具备三种基本状态,即运行状态、就绪状态、阻塞状态。
进程的三种基本状态
- 运行状态(Runing):该时刻进程占用CPU;
- 就绪状态(Ready) :可运行,但因为其他进程正在运行而暂时停止;
- 阻塞状态(Blocked) :该进程正在等待某一事件发生而暂时停止运行,这时,即使给它CPU控制权,它也无法运行。
进程另外两个基本状态:
- 创建状态(new):进程正在被创建时的状态;
- 结束状态(Exit) :进程正在从系统中消失时的状态。
进程的状态变迁
一个完整的进程状态的变迁如下图:
进程五种状态的变迁
进程的状态变迁:
- NULL -> 创建状态:一个新进程被创建时的第一个状态;
- 创建状态 -> 就绪状态:当进程被创建完成并初始化后,一切就绪准备运行时,变为就绪状态,这个过程是很快的;
- 就绪态 -> 运行状态:处于就绪状态的进程被操作系统的进程调度器选中后,就分配给 CPU 正式运行该进程;
- 运行状态 -> 结束状态:当进程已经运行完成或出错时,会被操作系统作结束状态处理;
- 运行状态 -> 就绪状态:处于运行状态的进程在运行过程中,由于分配给它的运行时间片用完,操作系统会把该进程变为就绪态,接着从就绪态选中另外一个进程运行;
- 运行状态 -> 阻塞状态:当进程请求某个事件且必须等待时,例如请求 I/O 事件;
- 阻塞状态 -> 就绪状态:当进程要等待的事件完成时,它从阻塞状态变到就绪状态;
挂起状态
挂起状态:表示进程没有占用物理内存空间,跟阻塞状态不一样,阻塞状态是等待某个事件的返回。
由于虚拟内存管理原因,进程的所使用的空间可能并没有映射到物理内存,而是在硬盘上,这是进程就会挂起状态,另外调用sleep也会被挂起。
虚拟内存管理-换入换出
挂起状态可以分为两种:
- 阻塞挂起状态:进程在外存(硬盘)并等待某个事件的出现;
- 就绪挂起状态:进程在外存(硬盘),但只要进入内存,即可立刻运行。
七种状态变迁