进程控制(靠原语实现)
什么是进程控制?
进程控制的主要功能是:对系统中的所有进程实施有效管理,它具有创建新进程、撤销已有进程、实现进程状态转换等功能。
简化理解:进程控制就是要实现进程状态转换。
知识一览:
如何实现进程控制?
用 ”原语“ 实现。
原语的执行具有 “原子性” ,一气呵成。
思考:为何进程控制(状态转换)的过程要一气呵成?
答:如果不能 “一气呵成” ,就有可能导致操作系统中的某些关键数据结构信息不统一的情况,这会影响操作系统进行别的管理工作。(例子见下图)
如何实现原语的 “原子性” ?
原语的执行具有原子性,即执行过程只能一气呵成,期间不允许被中断。
可以用 “关中断指令” 和 “开中断指令” 这两个特权指令实现原子性。
正常情况:CPU每执行完一条指令都会例行检查是否有中断信号需要处理,如果有,则暂停运行当前这段程序,转而执行相应的中断处理程序。
CPU执行了关中断指令之后,就不再例行检查中断信号,直到执行开中断指令之后才会恢复检查。
这样,关中断、开中断之间的这些指令序列就是不可被中断的,这就实现了 “原子性” 。
进程控制相关的原语:
进程的创建:
进程的终止:
进程的阻塞和唤醒:
阻塞原语和进程原语必须成对使用!
进程的切换:
总结:
无论哪个进程控制原语,要做的无非三件事情:
1、更新PCB中的信息。(修改进程状态,保存 || 恢复运行环境)
2、将PCB插入合适的队列。
3、分配 || 回收资源。