操作系统之进程控制 (七) --- 进程控制、状态转换、原语、开关中断...

it2025-07-12  12

文章目录

进程控制什么叫进程控制进程控制总览如何实现进程控制什么是原语进程控制为什么要用到原语进程控制相关的原语进程的创建 ( 无 --> 创建态 --> 就绪态 )进程的终止 ( 就绪态/阻塞态/运行态 --> 终止态 --> 无 )进程的阻塞和唤醒 ( 运行态 <--> 阻塞态 )进程的切换 总结感谢

进程控制

什么叫进程控制

进程控制的主要功能是对系统中所有的进程实施有效的管理,它具有创建新进程、撤销已有进程、实现进程状态转换等功能。 简化理解:进程控制就是实现进程状态的转换,比如"创建态 --> 就绪态"、“就绪态 --> 运行态”。

进程控制总览

上图中,队列中的PCB个数为蓝色块的个数,例如:上图表示就绪队列有两个PCB。

如何实现进程控制

什么是原语

原语也是一种程序,但是原语有个特点:执行期间不允许中断,只能一气呵成。(这种不可被中断的操作即是原子操作) 原语采用"关中断"指令和"开中断"指令实现,下面来看看他们是如何结合起来的。 显然,"关/开中断"指令的权限非常大,必然是CPU在核心态下才能执行的特权指令。 (假如应用程序能使用"关/开中断"指令,那意味着它可以一直占用CPU,显然这是不被允许的)

进程控制为什么要用到原语

为了说明进程控制为什么要用到原语,我们先说说不用原语的后果。 举个例子: 你去银行取100万,钱从ATM机吐出来了,这时别人叫你去吃饭,你是钱拿后再去吃饭,还是马上去吃饭,钱都不拿么?显然你是钱拿后再去吃饭。在这里,别人叫你去吃饭就是一个外中断信号,但是此时你不能去吃饭 (处理),因为你钱还没拿 (事情还没做好)。 所以,假如在进行进程控制的时候,CPU收到了外中断信号而导致其退出进程控制程序(进入中断处理程序),这会导致进程控制程序执行的不完整,这个后果很严重,极易引起系统奔溃。(想一想100万没了,你是不是也极其奔溃)

所以,CPU必须使用原语进行进程控制。

进程控制相关的原语

学习技巧:进程控制会导致进程状态的转换。无论哪个原语,要做的无非三类事情。

更新PCB中的信息 (如 修改进程状态标识、将运行环境保存到PCB、从PCB恢复运行环境) 所有的进程控制原语一定会修改进程状态标志剥夺当前运行进程的CPU使用权必然需要保存其运行环境 (玩游戏的存档)某进程开始运行钱必然要恢复运行环境 (玩游戏的读档) 将PCB插入合适的队列分配/回收资源

下面开始介绍。

进程的创建 ( 无 --> 创建态 --> 就绪态 )

进程的终止 ( 就绪态/阻塞态/运行态 --> 终止态 --> 无 )

进程的阻塞和唤醒 ( 运行态 <–> 阻塞态 )

进程的切换

进程的切换实现了被切换进程状态从"运行态 --> 阻塞态/就绪态"的转换,以及被调度进程状态从"就绪态 --> 运行态"的转换。

总结

感谢

以上内容大部分来自于王道操作系统系列视频教学。

最新回复(0)