进程调度

将一个处于进程就绪状态进程调用到处理器上运行的过程称为「进程调度」,「低级调度」,「线程调度」,「处理器调度」等。

请求调度的事件发生后,就会运行低级调度程序,低级调度程序选中新的就绪进程后,就会进行上下文切换。

事实上,由于种种原因,调度和切换并不一定能一气呵成。通常的做法是,由内核置上请求调度标志,延迟到上述工作完成后再进行调度和进程上下文切换。

当中断/系统调用发生时,暂时中断正在执行的用户进程,把进程从用户状态转换到内核状态,去执行操作系统服务程序以获得服务,这就是一次状态切换。

内核在被中断了的进程的上下文中对这个中断事件作处理,即使该中断不可能是此进程引起的。

处理器状态转换步骤可以表示为

  1. 保存中断进程的处理器现场信息
  2. 处理器从用户态转换到核心态,以便执行用户服务程序或中断处理程序
  3. 如果处理中断,可根据规定的中断级设置中断屏蔽位。
  4. 如果系统调用号或中断号,从系统调用表或中断入口表找到服务程序或中断处理程序地址

功能

低级调度有两项基本任务:调度和分派

  • 调度:实现调度策略,确定就绪进程/线程竞争使用处理器的次序的裁决原则,即进程/线程何时应放弃 CPU 和选择哪个来执行
  • 分派:实现调度机制,确定如何时分复用 CPU,处理上下文交换细节,完成进程/线程和CPU的绑定和放弃的实际工作。