进程的三种状态详解

本文详细阐述了进程的三种基本状态:就绪、执行和阻塞,以及它们之间的转换。转换包括就绪到执行(进程调度),执行到就绪(时间片用完),执行到阻塞(等待事件)和阻塞到就绪(事件发生)。讨论了状态转换的原因,例如时间片耗尽、等待I/O和事件发生。并分析了特定状态变迁的可能性和原因。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.进程的三种基本状态

       进程在运行中不断地改变其运行状态。通常,一个运行进程必须具有以下三种基本状态。

 1、就绪(Ready)状态

       当进程已分配到除CPU以外的所有必要的资源,只要获得CPU便可立即执行,这时的进程状态称为就绪状态。

 2、执行(Running)状态
       当进程已获得CPU,其程序正在CPU上执行,此时的进程状态称为执行状态。

 3、阻塞(Blocked)状态
       正在执行的进程,由于等待某个事件发生而无法执行时,便放弃CPU而处于阻塞状态。引起进程阻塞的事件可有多种,例如,等待I/O完成、申请缓冲区不能满足、等待信件(信号)等。

2.进程三种状态间的转换

       一个进程在运行期间,不断地从一种状态转换到另一种状态,它可以多次处于就绪状态和执行状态,也可以多次处于阻塞状态。下图描述了进程的三种基本状态及其转换。

(1) 就绪→执行
       处于就绪状态的进程,当进程调度程序为之分配了CPU后,该进程便由就绪状态转变成执行状态。

(2) 执行→就绪
       处于执行状态的进程在其执行过程中,因分配给它的一个时间片已用完而不得不让出CPU,于是进程从执行状态转变成就绪状态。

(3) 执行→阻塞
       正在执行的进程因等待某种事件发生而无法继续执行时,便从执行状态变成阻塞状态。

(4) 阻塞→就绪
       处于阻塞状态的进程,若其等待的事件已经发生,于是进程由阻塞状态转变为就绪状态。

系统的状态转换图如图所示。

 
问:

(1)分别说明引起状态转换1、2、3、4的原因,并各举一个事件。
(2)为什么在转换图中没有就绪到阻塞和阻塞到运行的转换方向?
(3)一个进程的状态变换能够引起另一个进程的状态变换,说明下列因果变迁是否可能发生,原因是什么?
(a)3→1(b)2→1(c)3→2(d)3→4(e)4→1

答:

(1)
1:就绪->执行,当前运行进程阻塞,调度程序选一个优先权最高的进程占有CPU;
2:执行->就绪,当前运行进程时间片用完
3:执行->阻塞,当前运行进程等待键盘输入,进入了睡眠状态
4:阻塞->就绪,I/O操作完成,被中断处理程序唤醒。

(2)就绪进程没有占有CPU,也即没有经过运行,其状态就不会改变。
       阻塞状态进程唤醒后先要进入就绪队列,才会被调度程序选中,进入执行状态

(3)
(a) 3→1:可能,当前运行进程阻塞,调度程序选一个优先级最高的进程占有CPU。
(b)2→1:可能,当前运行进程优先级下降,调度程序选一个优先级最高的进程占有CPU。
(c)3→2:不可能,占有CPU的一个进程不能同时进入两个状态;在单CPU的系统中,状态3发生后,cpu没有执行进程,故不会发生状态转换2。
(d)3→4:一般不可能,不相干的两个事件。状态转换3是由于运行进程等待资源而发生的,这并不会使得阻塞队列中的进程得到资源而进入就绪队列。但在Unix中,当系统的0#进程因runin标志而睡眠时,有(在内存)进程睡眠,就会唤醒0#进程,使其进入就绪状态,以便将该进程和在盘交换区就绪进程交换位置。
(e)4→1:一般无关,但当就绪队列为空时,一个进程被唤醒转入就绪队列后,调度程序使该进程占有CPU(但是同一个进程)。

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值