操作系统进程管理详解:三态模型与五态模型
操作系统进程管理详解:三态模型与五态模型
操作系统中的进程管理是计算机系统架构中的核心内容之一。本文将详细介绍进程状态模型(包括三态模型和五态模型)、进程状态的划分依据、CPU时间片资源的管理以及PCB(进程控制块)的组织方式。通过深入理解这些概念,读者可以更好地掌握操作系统的工作原理和进程管理机制。
一、进程状态
1、进程状态模型
进程的生命周期变化模型有多种,软考中主要考察以下两种模型:
- 基本进程状态模型(三态模型):进程被划分为就绪、运行、阻塞三个状态;
- 扩展进程状态模型(五态模型):在三态模型的基础上,分别为就绪和阻塞增加一个挂起状态;
- 普通的就绪状态就是活跃就绪,挂起的就绪状态就是静止就绪;
- 普通的阻塞状态就是活跃阻塞,挂起的静止状态就是静止阻塞;
2、CPU 资源 和 非 CPU 资源
进程状态的划分依据是根据调度的资源类型占用进行划分的;
进程是资源调度的基本单位,线程是CPU调度的基本单位;
进程可调度的资源包括:CPU、内存、文件、数据等;
这里将资源分为CPU资源和非CPU资源,
- CPU 资源:就是对CPU的占用时间,CPU时间片;
- 非 CPU 资源:就是除CPU之外的其它资源,如:内存、文件、数据等;
二、基本进程状态模型 - 三态模型
1、基本进程状态模型
进程生命周期:
- 新建(New):进程正在被创建,尚未完全加载到内存中。
- **转换条件(新建 → 就绪):**创建完成后分配资源,进入就绪状态。
- 就绪(Ready):进程已获得所需资源(除CPU外),等待被调度执行。
- **转换条件(就绪 → 运行):**分配CPU时间片 → 进入运行状态。
- 运行(Running):进程正在CPU上执行指令。
- **转换条件(运行 → 就绪):**时间片耗尽或更高优先级进程抢占 → 回到就绪状态。
- **转换条件(运行 → 阻塞):**主动等待事件(如I/O请求) → 进入阻塞状态。
- **转换条件(运行 → 终止):**执行完成或被终止 → 进入终止状态。
- 阻塞/等待(Blocked/Waiting):进程因等待外部事件(如I/O完成、信号量释放)而暂停执行。
- **转换条件(阻塞 → 就绪):**非CPU资源充足 → 移回就绪队列。
- 终止(Terminated):进程执行完毕或被强制终止,等待父进程回收资源(如退出状态码)。
将上述进程生命周期中的新建与终止两个状态去除,就得到基本进程状态模型/三态模型:
- 就绪(Ready):进程已获得所需资源(除CPU外),等待被调度执行。
- **转换条件(就绪 → 运行):**分配CPU时间片 → 进入运行状态。
- 运行(Running):进程正在CPU上执行指令。
- **转换条件(运行 → 就绪):**时间片耗尽或更高优先级进程抢占 → 回到就绪状态。
- **转换条件(运行 → 阻塞):**主动等待事件(如I/O请求) → 进入阻塞状态。
- 阻塞/等待(Blocked/Waiting):进程因等待外部事件(如I/O完成、信号量释放)而暂停执行。
- **转换条件(阻塞 → 就绪):**非CPU资源充足 → 移回就绪队列。
上面的状态中,就绪不能转为阻塞,阻塞不能转为运行;
2、进程状态 划分依据 ( 重点 )
划分进程状态根据资源占用进行划分,CPU是核心资源,因此这里根据CPU的资源占用进行划分;
- 非CPU资源准备完毕,CPU资源准备不足,此时进程的状态被划分为"就绪"状态;
- 非CPU资源准备完毕,CPU资源准备完毕,此时进程的状态被划分为"运行"状态;
- 非CPU资源准备不足,CPU资源准备不足,此时进程的状态被划分为"阻塞"状态;
3、阻塞态 不能转为 运行态
CPU资源准备完毕,非CPU资源准备不足的情况,不作考虑,CPU是非常珍贵的资源,在非CPU资源不足的情况下,是不会考虑将CPU资源分配给进程的;
因此阻塞状态不会进入到运行状态,因为阻塞状态CPU资源和非CPU资源都准备不足;
操作系统的运行机制就是先给进程补充非CPU资源,只有当非CPU资源准备完毕后,才考虑给进程分配CPU资源;
4、就绪态 不能转为 阻塞态
就绪态下非CPU资源准备完毕,
阻塞态下非CPU资源和CPU资源都准备不足,
因此就绪态不能跳转到阻塞态;
5、CPU 时间片资源
每个进程不会长时间占用CPU资源,CPU的使用时间会被分为若干时间片,多个进程轮流使用这些CPU资源时间片;
CPU时间片是操作系统分配给每个进程在CPU上连续执行的时间片段,如:10ms~100ms,进程用完时间片后会被强制挂起,等待下一次调度;
CPU时间片有如下作用:
- 避免饥饿:防止单个进程长期独占CPU;
- 提升速度:提升多任务的响应速度;
- 实现公平:通过时间片轮转(Round-Robin)实现公平性;
CPU时间片分配是操作系统进行进程调度的核心机制,其核心目标是通过合理分配CPU时间资源,实现多任务的高效并发执行;
三、扩展进程状态模型 - 五态模型
1、五态模型 与 挂起
扩展进程状态模型(五态模型):在三态模型的基础上,分别为就绪和阻塞增加一个挂起状态;
- 普通的就绪状态就是活跃就绪,挂起的就绪状态就是静止就绪;
- 普通的阻塞状态就是活跃阻塞,挂起的静止状态就是静止阻塞;
挂起 状态 关联的是 内存资源
就绪与阻塞状态,关联的是CPU时间片资源;
挂起状态关联的是内存资源;
挂起是从内存角度考虑的概念,操作系统重,进程比较多时,可能无法满足全部进程的资源要求,尤其是内存资源,
内存较小的设备中,进程一多,很容易达到内存100%占用的情况,
此时就需要"挂起"一些进程;
哪些进程会被挂起
在内存资源不足时,将某些进程"挂起",将挂起的进程的内存分配给没有挂起的进程,挂起的内存中的数据暂时存放到磁盘中;
挂起可以理解为将进程的内存数据暂时存入磁盘中;
进程处于"运行"状态,就是运行状态,是不能进行挂起的,因为其占用着更加珍贵的CPU时间片资源,
只有处于就绪或者阻塞的状态下的进程,才会被操作系统挂起,有一个挂起分支状态;
2、五态模型 与 三态模型 的对应关系
五态模型中的活跃就绪和活跃阻塞就是三态模型中的就绪和阻塞状态;
- 五态模型:
- 三态模型:
五态模型在三态模型的基础上新增了静止就绪和静止阻塞两种状态;
- 静止就绪和活跃就绪可以相互转化,转化的标志是挂起和取消挂起;
- 静止阻塞和活跃阻塞也可以相互转化,转化的标志是挂起和取消挂起;
除了上述两组状态转化之外,还增加了以下两个状态转化:
- 运行态挂起后,就转为静止就绪状态;
- 静止阻塞状态如果非CPU和内存资源准备完毕,就转为静止就绪状态;
四、软考考点分析 ☆
1、PCB 程序控制块 的 组织方式
PCB(进程控制块)是操作系统管理进程的核心数据结构,其组织方式直接影响进程调度和资源管理效率;
常见的PCB组织方式如下:
组织方式 | 描述 | 优点 | 缺点 |
---|---|---|---|
线性表 | |||
- 数组 | PCB存储在连续内存中,通过索引访问。 | 实现简单,访问速度快。 | 大小固定,扩展性差。 |
- 链表 | PCB通过指针连接,形成单向、双向或循环链表。 | 动态扩展,插入删除方便。 | 访问速度较慢。 |
索引表 | 使用索引表记录PCB位置,索引表可以是数组或链表。 | 结合数组和链表的优点,访问和扩展性较好。 | 实现复杂。 |
队列 | |||
- 就绪队列 | 存放准备执行的进程PCB。 | 便于调度和管理。 | 管理复杂度增加。 |
- 等待队列 | 存放等待资源的进程PCB。 | ||
- 多级队列 | 根据优先级或类型将PCB放入不同队列。 | ||
树结构 | 用于父子进程关系,形成进程树。 | 直观反映进程关系。 | 实现复杂。 |
哈希表 | 通过哈希函数快速定位PCB。按内容进行存放,根据哈希函数计算存放内容的位置 | 查找速度快。 | 哈希冲突需处理。 |
多级组织 | 结合多种方式,如链表+队列或索引表+树结构。 | 灵活高效。 | 实现复杂。 |
PCB的组织方式就是多个PCB程序控制块放在什么样的数据结构中;
2、案例分析
下面的进程管理采用的是三态模型;
PCB程序控制块的组织方式是"索引方式",使用索引表记录PCB位置,索引表可以是数组或链表,本案例中索引表是一个数组;
处于三种状态的进程个数:
- 运行状态:有2个进程处于运行状态,在运行进程索引表中查看元素个数即可;
- 就绪状态:有3个进程处于运行状态,在就绪进程索引表中查看元素个数即可;
- 阻塞状态:有4个进程处于运行状态,在阻塞进程索引表中查看元素个数即可;