文章目录
进程控制
什么叫进程控制
进程控制的主要功能是对系统中所有的进程实施有效的管理,它具有创建新进程、撤销已有进程、实现进程状态转换等功能。
简化理解:进程控制就是实现进程状态的转换,比如"创建态 --> 就绪态"、“就绪态 --> 运行态”。
进程控制总览
上图中,队列中的PCB个数为蓝色块的个数,例如:上图表示就绪队列有两个PCB。
如何实现进程控制
什么是原语
原语也是一种程序,但是原语有个特点:执行期间不允许中断,只能一气呵成。(这种不可被中断的操作即是原子操作)
原语采用"关中断"指令和"开中断"指令实现,下面来看看他们是如何结合起来的。
显然,"关/开中断"指令的权限非常大,必然是CPU在核心态下才能执行的特权指令。 (假如应用程序能使用"关/开中断"指令,那意味着它可以一直占用CPU,显然这是不被允许的)
进程控制为什么要用到原语
为了说明进程控制为什么要用到原语,我们先说说不用原语的后果。
举个例子:
你去银行取100万,钱从ATM机吐出来了,这时别人叫你去吃饭,你是钱拿后再去吃饭,还是马上去吃饭,钱都不拿么?显然你是钱拿后再去吃饭。在这里,别人叫你去吃饭就是一个外中断信号,但是此时你不能去吃饭 (处理),因为你钱还没拿 (事情还没做好)。
所以,假如在进行进程控制的时候,CPU收到了外中断信号而导致其退出进程控制程序(进入中断处理程序),这会导致进程控制程序执行的不完整,这个后果很严重,极易引起系统奔溃。(想一想100万没了,你是不是也极其奔溃)
所以,CPU必须使用原语进行进程控制。
进程控制相关的原语
学习技巧:进程控制会导致进程状态的转换。无论哪个原语,要做的无非三类事情。
- 更新PCB中的信息 (如 修改进程状态标识、将运行环境保存到PCB、从PCB恢复运行环境)
- 所有的进程控制原语一定会修改进程状态标志
- 剥夺当前运行进程的CPU使用权必然需要保存其运行环境 (玩游戏的存档)
- 某进程开始运行钱必然要恢复运行环境 (玩游戏的读档)
- 将PCB插入合适的队列
- 分配/回收资源
下面开始介绍。
进程的创建 ( 无 --> 创建态 --> 就绪态 )
进程的终止 ( 就绪态/阻塞态/运行态 --> 终止态 --> 无 )
进程的阻塞和唤醒 ( 运行态 <–> 阻塞态 )
进程的切换
进程的切换实现了被切换进程状态从"运行态 --> 阻塞态/就绪态"的转换,以及被调度进程状态从"就绪态 --> 运行态"的转换。
总结
感谢
以上内容大部分来自于王道操作系统系列视频教学。