操作系统笔记-2.1.3 进程的状态与切换
·
王道操作系统笔记,视频链接:2.1.3 进程的状态与切换
知识总览

进程的状态
- 创建态:进程正在被创建时,它的状态是“创建态”,在这个阶段操作系统会为进程分配资源、初始化PCB
- 就绪态:当进程创建完成后,便进入“就绪态”,处于就绪态的进程已经具备运行条件,但由于没有空闲CPU,就暂时不能运行。
系统中可能会有很多个进程都处于就绪态,当CPU空闲时,操作系统就会选择一个就绪进程,让它上处理机运行。 - 运行态:如果一个进程此时在CPU上运行,那么这个进程处于“运行态”。CPU会执行该进程对应的程序(执行指令序列)
假设运行时遇到了一个请求打印机的指令,但是此时打印机正忙,资源获取不到,此时就会进入“阻塞态” - 阻塞态:在进程运行的过程中,肯定会请求等待某个事件的发生(如等待某种系统资源的分配,或者等待其他进程的响应)。在这个事件发生之前,进程无法继续往下执行,此时操作系统会让这个进程下CPU(也就是交出CPU使用权),并让它进入“阻塞态”。
当CPU空闲时,又会选择另一个“就绪态”进程上CPU运行。
PS:A因为请求B,但是B繁忙而进入阻塞态时,对应进程会被放入B资源的请求队列,B空闲后,A会回到就绪队列,此时操作系统会为A临时提高优先级,确保A能抢占到B,如果确实优先级不高被另外的进程,比如C抢占了B,导致B再次繁忙,A确实需要再次请求B,但是操作系统也会为这种长期“饥饿”的进程提高优先级,确保不存在进程长期反复请求资源,一直无法继续运行。 - 终止态:一个进程可以执行exit系统调用,请求操作系统终止该进程。此时该进程会进入“终止态”,操作系统会让该进程下CPU,并回收内存空间等资源,最后还要回收该进程的PCB。
进程状态的转换
几个状态的转换如图所示:
- 从运行态到阻塞态是一种进程自身做出的主动行为,它用系统调用的方式申请某种系统资源,或者请求等待某个事件发生。
- 从阻塞态到就绪态不是进程自身能控制得,是一种被动行为,当申请的资源被分配,或者等待得事件发生就会转变。
- 注意,不能由阻塞态直接转换为运行态,也不能由就绪态直接转换为阻塞态,因为进入阻塞态是进程主动请求的,必然需要进程在运行时才能发出这种请求。
- 三种主要状态的资源获取情况:
- 就绪态:其他资源已经就绪,处理机未就绪,获取处理机后进入运行态
- 运行态:处理机与其他资源都已就绪,处理机被剥夺(时间片到)进入就绪态,需要其他资源时进入阻塞态,进程结束或者遇到错误进入终止态。
- 阻塞态:处理机和其他资源都未就绪,需要等待申请的其他资源空闲后才能进入就绪态,此状态无法直接获取处理机资源。
进程的状态

- 三种基本状态:
- 运行态(Running):占有CPU,并在CPU上运行
- 就绪态(Ready):已经具备运行条件,但由于没有空闲CPU,而暂时不能运行
- 阻塞态(Waiting/Blocked,又称等待态):因等待某一事件而暂时不能运行
- 另外两种状态:
- 创建态(New,又称新建态):进程正在被创建,操作系统为进程分配初始资源、初始化PCB
- 终止态(Terminated,又称结束态):进程正在从系统中撤销,操作系统会回收进程拥有的资源、撤销PCB
- 进程PCB中,会有一个变量state来表示进程的当前状态。如:1表示创建态、2表示就绪态、3表示运行态…为了对同一个状态下的各个进程进行统一的管理,操作系统会将各个进程的PCB组织起来。
进程的组织
进程的组织——链接方式
- 操作系统会管理一系列的队列,每个队列都会指向相应状态的这些进程的pcb。
比如执行指针指向当前处于运行态的进程的队列,就绪队列指针指向当前处于就绪态的进程的队列,阻塞队列指针指向当前处于阻塞态的进程的队列。(通常会把优先级高的进程放在队头)
PS:(来自deepseek)大部分操作系统的语境下不会对运行态的进程维护一个序列,因为对于单核CPU,同一时刻只能有一个进程处于运行态,在多核CPU中,也仅有少数几个进程(等于核心数)处于运行态,因为数量极少且动态变化,所以操作系统不会为运行态维护一个队列,而是使用一组指针直接指向当前正在占用CPU的那个进程的PCB。 - 在很多操作系统中,会根据阻塞原因不同把阻塞队列分为多个,比如:等待打印机的阻塞队列,等待磁盘的阻塞队列。
进程的组织——索引方式
操作系统给各种状态的进程建立相应的索引表,然后每一个索引表的表项又会指向相应的PCB,如图所示:
但是大多数的操作系统采用的都是链接方式,所以这部分内容了解即可。
进程的组织——小结
如图:
知识回顾与重要考点

注意:绿框部分是高频考点,重点学习。
openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐

所有评论(0)