考研党修行——进程控制及原语
1.知识总览
2.什么是进程控制?
进程控制的主要功能是对系统中的所有进程实施有效的管理,它具有创建新进程,撤销已有进程,实现进程状态转换等功能。
简单的说:进程控制就是要实现进程状态转换
3.如何实现进程控制?
进程实现进程不同状态的转换是需要用“原语”来实现的
什么是原语?
原语是一种特殊的程序,它的执行具有原子性。也就是说,这段程序的运行必须一气呵成,不可中断。
那么思考一个问题,为什么进程控制(状态转换)的过程要“一气呵成”呢?
举个例子:
我们假设此时进程2等待的事件发生,则操作系统中,负责进程控制的内核程序至少做这样两件事:
(1)将PCB2的state设为1
(2)将PCB2从阻塞队列放到就绪队列
如果此时我们已经将PCB2的state设为1,如图:
但是恰好此时收到了中断信号,那么PCB2的state=1本来表示就绪状态却被放在阻塞队列里,这时如果不能“一气呵成”,就有可能导致操作系统中的某些关键数据结构信息不统一的情况,这会影响操作系统进行别的管理工作。
所以这就是为什么进程状态的转换必须一气呵成!
4.如何实现原语的“原子性”?
原语的执行具有原子性,即执行过程只能一气呵成,期间不允许被中断。可以用“关中断指令”和“开中断指令”这两个特权指令实现原子性。
CPU正常情况下运行:
CPU执行了关中断与开中断指令:
思考:如果这两个特权指令允许用户程序使用的话,会发生什么情况呢?
这样就意味着我们可以在程序的开头植入一个关中断指令,然后在程序的末尾植入一个开中断指令,如此只要该程序上CPU运行,那程序就可以一直霸占CPU,显然这是不应该发生的。
所以开中断与关中断是两条特权指令。
5.进程控制相关的原语
(1)进程的创建
(2)进程的终止
(3)进程的阻塞和唤醒
(4)进程的切换
总结:无论哪个进程控制原语,要做的无非是三件事情:
1.更新PCB中的信息,修改进程状态(state)保存和恢复运行环境
2.将PCB插入合适的队列
3.分配和回收资源
6.小节概述