操作系统-进程的状态与转换

进程的状态与转换


状态

进程是程序的一次执行。在这个执行过程中,有时进程正在被CPU处理,有时又需要等待CPU服务,可见,进程的状态是会有各种变化。为了方便对各个进程的管理,操作系统需要将进程合理地划分为几种状态。

三种基本状态

  • 运行态(Running)

    CPU√ 其他所需资源×

    占有CPU,并在CPU上运行

    注意:单核处理机环境下,每一时刻最多只有一个进程处于运行态。(双核环境下可以同时有两个进程处于运行态)。

  • 就绪态(Ready)

    CPU√ 其他所需资源×

    已经具备运行条件,但由于没有空闲CPU,而暂时不能运行

    进程已经拥有了除了处理机之外所有需要地资源,一旦获得处理机,即可立即进入运行态开始运行。即:万事俱备,只欠CPU。

  • 阻塞态(Waiting/Blocked,又称等待态)

    CPU× 其他所需资源×

    因等待某一事件而暂时不能运行

    如:等待操作系统分配打印机,等待读磁盘操作地结果。CPU是计算机中最昂贵地部件,为了提高CPU地利用率,需要先将其他进程需要地资源分配到位,才能得到CPU的服务。

另外两种状态

  • 创建态(New,又名:新建态)

    进程正在被创建,操作系统为进程分配资源、初始化PCB。

  • 终止态(Terminated,又称:结束态)

    进程正在从系统中撤销,操作系统会回收进程拥有的资源。

进程状态的转换

进程转换图示

图片来自王道考研B站视频截图

就绪态=>运行态

进程被调度

运行态=>就绪态

时间片到,或CPU被其他高优先级的进程抢占

运行态=>阻塞态

等待系统资源分配,或等待某事件发生(主动行为)

阻塞态=>就绪态

资源分配到位,等待事件的发生(被动行为)

几个注意点

  • 运行态=>阻塞态是一种进程自身作出的主动行为

  • 阻塞态=>就绪态不是进程自身能控制的,是一种被动行为

  • 不能由阻塞态直接转换为运行态,也不能由就绪态直接转换为阻塞态(因为进入阻塞态是进程主动请求的,必然需要进程在运行时才能发出这种请求)

posted @ 2020-09-16 19:32  闻风听雨  阅读(749)  评论(0编辑  收藏  举报