进程控制
廖家龙 用心听,不照做

进程控制的主要功能是对系统中的所有进程实施有效的管理,它具有创建新进程、撤销已有进程、实现进程状态转换等功能

如何实现进程控制:用“原语”实现,原语的执行具有“原子性”,一气呵成

如果不能“一气呵成”,就有可能导致操作系统中的某些关键数据结构信息不统一的情况,这会影响操作系统进行别的管理工作

假设此时进程2等待的事件发生,则操作系统中,负责进程控制的内核程序至少需要做两件事

  • 将PCB2的state设为1
  • 将PCB2从阻塞队列放到就绪队列

完成了第一步后收到中断信号,那么PCB2的state = 1,但是它却被放在阻塞队列里

如何实现原语的“原子性”

可以用“关中断指令”和“开中断指令”这两个特权指令实现原子性,CPU执行了关中断指令之后,就不再例行检查中断信号,直到执行开中断指令之后才会恢复检查,这样,关中断、开中断之间的这些指令序列就是不可被中断的,这就实现了“原子性”

进程控制相关的原语

进程的创建

进程的终止

进程的阻塞和唤醒

进程的切换

无论哪个进程控制原语,要做的无非三类事情:

  • 更新PCB中的信息:修改进程状态state、保存/恢复运行环境
  • 将PCB插入合适的队列
  • 分配/回收资源

程序是如何运行的

  • PSW程序状态字寄存器
  • PC程序计数器:存放下一条指令的地址
  • IR指令寄存器:存放当前正在执行的指令
  • 通用寄存器:其他一些必要信息

指令顺序执行的过程中,很多中间结果是放在各种寄存器中的

假设执行完某条指令后,另一个进程开始上CPU运行,另一个进程在运行过程中也会使用各个寄存器

在进程切换时,先在PCB中保存这个进程的运行环境,保存一些必要的寄存器信息,当原来的进程再次投入运行时,可以通过PCB恢复它的运行环境