操作系统-进程的状态与转换
进程的状态与转换
状态
进程是程序的一次执行。在这个执行过程中,有时进程正在被CPU处理,有时又需要等待CPU服务,可见,进程的状态是会有各种变化。为了方便对各个进程的管理,操作系统需要将进程合理地划分为几种状态。
三种基本状态
-
运行态(Running)
CPU√ 其他所需资源×
占有CPU,并在CPU上运行
注意:单核处理机环境下,每一时刻最多只有一个进程处于运行态。(双核环境下可以同时有两个进程处于运行态)。
-
就绪态(Ready)
CPU√ 其他所需资源×
已经具备运行条件,但由于没有空闲CPU,而暂时不能运行
进程已经拥有了除了处理机之外所有需要地资源,一旦获得处理机,即可立即进入运行态开始运行。即:万事俱备,只欠CPU。
-
阻塞态(Waiting/Blocked,又称等待态)
CPU× 其他所需资源×
因等待某一事件而暂时不能运行
如:等待操作系统分配打印机,等待读磁盘操作地结果。CPU是计算机中最昂贵地部件,为了提高CPU地利用率,需要先将其他进程需要地资源分配到位,才能得到CPU的服务。
另外两种状态
-
创建态(New,又名:新建态)
进程正在被创建,操作系统为进程分配资源、初始化PCB。
-
终止态(Terminated,又称:结束态)
进程正在从系统中撤销,操作系统会回收进程拥有的资源。
进程状态的转换
图片来自王道考研B站视频截图
就绪态=>运行态
进程被调度
运行态=>就绪态
时间片到,或CPU被其他高优先级的进程抢占
运行态=>阻塞态
等待系统资源分配,或等待某事件发生(主动行为)
阻塞态=>就绪态
资源分配到位,等待事件的发生(被动行为)
几个注意点
-
运行态=>阻塞态是一种进程自身作出的主动行为
-
阻塞态=>就绪态不是进程自身能控制的,是一种被动行为
-
不能由阻塞态直接转换为运行态,也不能由就绪态直接转换为阻塞态(因为进入阻塞态是进程主动请求的,必然需要进程在运行时才能发出这种请求)