【操作系统】考研408操作系统核心考点精讲:进程的五大状态与转换机制剖析
进程的状态与转换
- 导读
- 一、五种状态
- 1.1 就绪态与阻塞态
- 1.2 CPU 与其他资源
- 二、状态转换
- 2.1 三种基本状态的转换
- 三、进程的组织
- 3.1 链接方式
- 3.2 索引方式
- 结语

导读
大家好,很高兴又和大家见面啦!!!
在上一篇内容中,我们共同探讨了进程的基本概念——进程作为操作系统中资源分配和独立运行的基本单位,是理解系统如何实现多任务并发的关键。
进程并非是静态不变的,它有着自己的“生命周期”,会在不同的状态间动态转换,以响应系统的调度和各类事件的发生。
理解这些状态及其转换规律,就如同掌握了进程活动的脉搏。接下来,就让我们直接进入正文,一起揭开进程状态与转换的奥秘。
一、五种状态
进程在其生命周期内,由于系统中各个进程之间的相互制约及系统的运行环境的变化,使得进程的状态也在不断地发生变化。通常有以下5种状态,前3种是进程的基本状态:
-
运行态:进程正在 CPU 上运行。
- 在单 CPU 中,每个时刻只有一个进程处于运行态。
- 在多 CPU 中,每个时刻可以有多个进程处于运行态
-
就绪态:进程获得了除 CPU 外的一切所需资源,一旦得到 CPU ,便可立即运行。
- 系统中处于就绪态的进程可能有多个,通常将它们排成一个队列,称为就绪队列。
-
阻塞态:也称等待态。进程正在等待某一事件而暂停运行,如某个资源可用(不包括 CPU)或等待 I/O 完成。即使 CPU 空闲,该进程也不能运行。
- 系统通常将处于阻塞态的进程也排成一个队列,甚至根据阻塞原因的不同,设置多个阻塞队列。
-
创建态:进程正在被创建,尚未转到就绪态。
- 创建进程需要多个步骤:
- 申请一个空白 PCB,并向 PCB 中填入用于控制和管理进程的信息
- 为该进程分配运行时所必须的资源
- 将该进程转入就绪态并插入就绪队列
- 若进程所需的资源尚不能得到满足,如内存不足,则创建工作尚未完成,进程此时所处的状态称为创建态
- 创建进程需要多个步骤:
-
终止态:进程正从系统中消失,可能是进程正常结束或其他原因退出运行。
- 进程需要结束运行时,系统首先将该进程置为终止态,然后进一步处理资源释放和回收等工作。
1.1 就绪态与阻塞态
在这五种状态中,其中有两种状态是我们容易混淆的——就绪态与阻塞态。
下面存在一个场景:
现在超市的收银台这里排着两列队伍,这两列队伍均在等待着进行货品结算与付款,但是这两列队伍的等待的原因不相同:
- 队伍1:已经完成了所需货品的购入,现在只需要等待付款即可
- 队伍2:已经完成了所需货品的购入,但是都有不同的原因而导致现在无法付款,如还有同伴在选购其他商品,或者是现在手上的钱不够等着父母转钱,再或者是只是帮朋友排个队,朋友还没有过来……
在上述的场景中,这两列队伍此时所处的状态是不相同的:
- 队伍1中的顾客只等着前面的顾客完成结算付款后,轮到自己时可以直接进行货品的结算与付款
- 队伍2中的顾客需要等到自己的条件满足后并且收银员处于空闲状态才能够进行货品的结算与付款。
- 也就是说,如果此时收银员处于空闲状态,但是自己的条件没有满足,如自己手上的钱不太够,父母还没有把钱转过来,这时该顾客也无法进行货品的结算与付款。
这两列队伍的状态就很好的反映了操作系统中进程的两种状态——就绪态与阻塞态。
场景中的队伍1对应的就是进程的就绪态,此时的进程已经做好了一切准备,只等着 CPU 来运行,因此处于该状态的进程称为就绪态;
场景中的队伍2对应的就是进程的阻塞态,此时的进程还未完全做好准备,只能等到导致其阻塞的原因解决后才算是完全做好了准备,因此处于该状态的进程称为阻塞态;
这里我们需要清楚,当 CPU 空闲时,它会立即执行的是处于就绪态的进程,而不是处于阻塞态的进程。
1.2 CPU 与其他资源
在分时操作系统中,一切资源的使用都是以时间片的形式进行分配,而 CPU 和其他资源在分配过程中是有一定的区别:
- CPU 在时间片轮转机制中,每个进程分到的时间片是若干毫秒
- 其他资源在时间片轮转机制中,每个进程分到的时间片相对较长,甚至是原超过在 CPU 中分配到的时间片
这里我们可以参考打印机的执行,当该进程被运行时,该进程在运行时会请求打印机的运行,这个过程可能就若干毫秒的时间,而整个打印的过程可能会有几十秒、几分钟,甚至是更长的时间。
正是因为这种区别,这使得进程在运行的过程中会频繁的转换到就绪态,而转换到阻塞态的次数相对较少。因此我们需要将 CPU 与其他资源分开进行说明。
二、状态转换
在操作系统中,进程所处的不同状态如下所示:
这里我简单的说明一下上图的含义:
- 当某一进程正在被创建时会存在两种结果:
- 该进程创建成功时,该进程进入就绪态
- 该进程创建失败时,该进程进入创建态
- 处于创建态的进程在满足创建条件并创建成功后,该进程进入就绪态
- 处于就绪态的进程会通过系统的调度进入到运行态
- 处于运行态的进程在运行时会存在三种结果:
- 该进程运行完成后或因为某些原因,而需要退出运行,进程由运行态进入到终止态
- 该进程在运行的过程中需要等待某一事件的发生,该进程就会进入到阻塞态
- 该进程在运行的过程中被分配的时间已经结束,该进程会重新回到就绪态等待下一次运行
- 处于终止态的进程在完成了系统资源的回收与释放后,该进程就会终止运行
- 处于阻塞态的进程在中断其运行的事件完成后,该进程会重新回到就绪态
2.1 三种基本状态的转换
这整个过程中,我们需要重点关注的是进程的三种基本状态之间的转换:
-
就绪态 −>->−> 运行态:处于就绪态的进程被调度后,获得 CPU 资源(分配 CPU 的时间片),于是进程由就绪态转换为运行态;
-
运行态 −>->−> 就绪态:处于运行态的进程在时间片用完后,不得不让出 CPU ,从而进程由运行态转换为就绪态。
- 在可剥夺的操作系统中,当由更高优先级的进程就绪时,调度程序将正在执行的进程转换为就绪态,让更高优先级的进程执行
-
运行态 −>->−> 阻塞态:进程请求某一资源(如I/O设备)的使用和分配或等待某一事件的发生(如I/O操作的完成)时,它就从运行态转换为阻塞态。
- 进程以系统调用的形式请求操作系统提供服务,这是一种特殊的、由运行用户态程序调用操作系统内核过程的形式。
-
阻塞态 −>->−> 就绪态:进程等待的事件到来时,如 I/O 操作完成或中断结束时,中断处理程序必须将相应进程的状态由阻塞态转换为就绪态
在这些状态转换中,运行态转换到阻塞态的行为是主动发生;
阻塞态转换到就绪态的行为是被动发生,需要其他相关进程的协助;
三、进程的组织
在操作系统中,进程有两种组织方式:链接 与 索引。下面我们简单的了解一下这两种方式;
3.1 链接方式
在操作系统中,会以管理队列的形式进行进程的组织与管理:
- 执行指针指向处于运行态的进程
- 就绪队列指针指向就绪队列中的队头进程,并且为了方便管理,就绪队列中会将优先级高的进程放在队头
- 阻塞队列指针指向阻塞队列中的队头进程,并且在一些操作系统中会以阻塞原因的不同,将阻塞队列分为不同的阻塞队列
3.2 索引方式
在操作系统中,会以管理索引表的形式进行进程的组织与管理:
- 处于不同状态的进程会被放入不同的索引表中
- 执行指针会指向处于运行态的进程
- 就绪表指针会指向记录了就绪态进程索引信息的就绪态索引表
- 阻塞表指针会指向记录了阻塞态进程索引信息的阻塞态索引表
结语
今天的内容到这里就全部结束了。通过本文的学习,我们系统地掌握了操作系统中进程状态与转换的核心机制。
进程并非静态实体,它在生命周期中会经历创建态、就绪态、运行态、阻塞态和终止态这五种状态,形成一个完整的生命周期循环。
理解就绪态与阻塞态的本质区别是掌握进程调度的关键:
-
就绪态进程已获得除CPU外的所有必要资源,只要获得CPU即可立即运行;
-
阻塞态进程则因等待某些事件(如I/O操作完成)而无法继续执行,即使CPU空闲也无法运行。
进程状态之间的转换遵循严格的逻辑规律。三种基本状态(就绪态、运行态、阻塞态)之间的转换构成了进程并发执行的基础:
-
从就绪到运行通过进程调度实现;
-
从运行到就绪常因时间片耗尽;
-
从运行到阻塞多因资源请求或事件等待;
-
而从阻塞到就绪则发生在等待事件完成时。
需要特别注意的是,运行态转换到阻塞态是进程的主动行为,而阻塞态转换到就绪态是被动行为,需要其他相关进程的协助。
操作系统通过进程控制块(PCB) 来跟踪和管理每个进程的状态信息,并采用链接方式(如就绪队列、阻塞队列)或索引方式来组织这些PCB,确保系统能够高效地进行进程调度和状态维护。
理解进程的状态与转换机制,是掌握操作系统如何实现多任务并发和资源管理的基石,也为进一步学习进程同步、进程通信等重要概念奠定了坚实基础。
互动与分享
-
点赞👍 - 您的认可是我持续创作的最大动力
-
收藏⭐ - 方便随时回顾这些重要的基础概念
-
转发↗️ - 分享给更多可能需要的朋友
-
评论💬 - 欢迎留下您的宝贵意见或想讨论的话题
感谢您的耐心阅读! 关注博主,不错过更多技术干货。我们下一篇再见!
