进程控制
进程控制的主要功能是对系统中的所有进程实施有效的管理,它具有创建新进程、撤销已有进程、实现进程状态转换等功能
如何实现进程控制:用“原语”实现,原语的执行具有“原子性”,一气呵成
如果不能“一气呵成”,就有可能导致操作系统中的某些关键数据结构信息不统一的情况,这会影响操作系统进行别的管理工作
假设此时进程2等待的事件发生,则操作系统中,负责进程控制的内核程序至少需要做两件事
- 将PCB2的state设为1
- 将PCB2从阻塞队列放到就绪队列
完成了第一步后收到中断信号,那么PCB2的state = 1,但是它却被放在阻塞队列里
如何实现原语的“原子性”
可以用“关中断指令”和“开中断指令”这两个特权指令实现原子性,CPU执行了关中断指令之后,就不再例行检查中断信号,直到执行开中断指令之后才会恢复检查,这样,关中断、开中断之间的这些指令序列就是不可被中断的,这就实现了“原子性”
进程控制相关的原语
进程的创建
进程的终止
进程的阻塞和唤醒
进程的切换
无论哪个进程控制原语,要做的无非三类事情:
- 更新PCB中的信息:修改进程状态state、保存/恢复运行环境
- 将PCB插入合适的队列
- 分配/回收资源
程序是如何运行的
- PSW程序状态字寄存器
- PC程序计数器:存放下一条指令的地址
- IR指令寄存器:存放当前正在执行的指令
- 通用寄存器:其他一些必要信息
指令顺序执行的过程中,很多中间结果是放在各种寄存器中的
假设执行完某条指令后,另一个进程开始上CPU运行,另一个进程在运行过程中也会使用各个寄存器
在进程切换时,先在PCB中保存这个进程的运行环境,保存一些必要的寄存器信息,当原来的进程再次投入运行时,可以通过PCB恢复它的运行环境