• 处理器是计算机系统中的重要资源
  • 在多道程序环境下,进程数目通常多于处理器的数目
  • 系统必须按一定方法动态地把处理器分配给就绪队列中的一个进程
  • 处理器利用率和系统性能(吞吐量、响应时间)在很大程度上取决于处理机调度

需要解决的问题:
WHAT:按什么原则分配CPU—进程调度算法
WHEN:何时分配CPU —进程调度的时机
HOW:如何分配CPU —CPU调度过程(进程的上下文切换)

作业与进程的关系

  • 作业是用户向计算机提交任务的任务实体。在用户向计算机提交作业后,系统将该作业放入外存中的后备作业队列中等待作业调度。而进程则是完成用户任务的执行实体,是向系统申请分配资源的基本单位。任何一个进程,只要它被创建,总是有相应的部分存在于内存中。
  • 一个作业可以由多个作业步组成,即同时对应多个进程,并且至少由一个进程组成;反之则不成立。
  • 作业的概念主要用在批处理系统中,如UNIX分时系统中就没有作业的概念。进程的概念则用在几乎所有的多道程序系统中。
  • 作业调度的主要功能是检查系统是否满足作业的资源要求以及按照一定的算法来把外存后备作业队列中的作业调入内存,为其创建进程并插入到进程就绪队列等待进程调度。进程调度则是根据一定的算法把CPU分配给就绪队列中的某个进程并让其执行。
  • 在多道批处理系统中,作业是用户提交给系统的一项相对独立的工作。操作员把用户提交的作业通过相应的输入设备输入到磁盘存储器,并保存在一个后备作业队列中。再由作业调度程序将其从外存调入内存。
    操作系统  处理器调度_操作系统
    批处理作业经历的4种状态:
    (1)提交状态(2)后备状态(3)执行状态(4)完成状态

批系统中的作业

  • 作业是用户在一次解题或一个事务处理过程中要求计算机系统所做工作的集合,包括用户程序、所需的数据及命令等
  • 作业控制块 (Job Control Block JCB)
    • 作业标识
    • 用户名称、用户账号
    • 作业类型
    • 作业状态
    • 调度信息
    • 资源需求
    • 资源使用情况等
  • 作业的状态:一个作业进入系统到运行结束,一般需要经历收容、运行、完成三个阶段,与之相对应的是作业的三种状态
    • 后备状态
    • 运行状态
    • 完成状态

作业状态间转换

操作系统  处理器调度_处理器调度_02

CPU的三级调度

调度类型

  • 高级调度
  • 低级调度
  • 中级调度

操作系统  处理器调度_操作系统_03
操作系统  处理器调度_处理器调度_04

低级调度

进程调度或短程调度(Short-Term Scheduling)

  • 主要任务是按照某种策略和方法选取一个处于就绪状态的进程,将处理机分配给它
  • 常见的低级调度有非抢占式和抢占式两种
  • 低级调度的时间尺度通常是毫秒级的。由于低级调度算法的频繁使用,要求在实现时做到高效

中级调度(Intermediate-Level Scheduling)

中程调度(Medium-Term Scheduling)

  • 引入目的是为了提高内存利用率和系统吞吐量。使那些暂时不能运行的进程不再占用宝贵的内存资源,而将它们调至外存上去等待
  • 主要任务是按照给定的原则和策略,将处于外存对换区中的重又具备运行条件的就绪进程调入内存,或将处于内存就绪状态或内存阻塞状态的进程交换到外存对换区

处理器调度队列模型

  • 仅有进程调度的调度队列模型
    • 进程获得CPU正在执行
    • 任务在给定时间片内已完成,释放处理机后为完成状态
    • 任务在时间片内未完成,进入就绪队列末尾
    • 在执行期间因某事件而阻塞
    • 在分时系统中,通常仅设有进程调度
    • 系统把这些进程组织成一个就绪队列
    • 每个进程在执行时,可能有以下几种情况

操作系统  处理器调度_处理器调度_05

  • 具有高级和低级调度的调度队列模型
    • 根据事件的不同设置多个队列提高效率
    • 在批处理系统中,常用高优先权队列。进程进入就绪队列时,按优先权高低插入相应位置,调度程序总是把处理机分配给就绪队首进程
    • 在批处理系统中,不仅需要进程调度,而且还要有作业调度
    • 就绪队列的形式    
    • 设置多个阻塞队列    

操作系统  处理器调度_操作系统_06
与上一模型的主要区别:就绪队列的形式;设置多个阻塞队列

  • 同时具有三级调度的调度队列模型
    操作系统  处理器调度_操作系统_07

进程调度方式和时机

  • 进程调度的任务
    是控制、协调进程对CPU的竞争,即按一定的调度算法从就绪队列中选中一个进程,把CPU的使用权交给被选中的进程

进程调度时机

  • 进程退出
  • 进程阻塞
  • 新进程创建
  • 中断发生
  • 时钟中断

调度时机:

  • 当一个进程运行完毕或由于某种错误而终止运行
  • 当一个进程在运行中处于等待状态(等待I/O)
  • 分时系统中时间片到了
  • 当有一个优先级更高的进程就绪(可抢占式)
    例如:新创建一个进程,一个阻塞进程变成就绪
  • 在进程通信中,执行中的进程执行了某种原语操作(P操作,阻塞原语,唤醒原语)

何时切换进程

  • 只要OS取得对CPU的控制,进程切换就可能发生:
  • 超级用户调用
    • 来自程序的显式请求 (如:打开文件),该进程通常会被阻塞
      陷阱
    • 最末一条指令导致出错,会引起进程移至退出状态
  • 中断
    • 外部因素影响当前指令的执行,控制被转移至IH(中断处理程序)

引起进程调度的原因

  • 正在执行的进程执行完毕或因发生某事件而不能再继续执行;
  • 执行中的进程因提出I/O请求而暂停执行;
  • 在进程通信或同步过程中执行了某种原语操作如P操作、阻塞、挂起原语等;
  • 在可剥夺式调度中,有比当前进程优先权更高的进程进入就绪队列;
  • 在时间片轮转法中,时间片完。
  • 通常系统是按先来先服务或优先权形式来组织调度队列。

进程调度的任务

  • 保存处理机的现场信息。
  • 按某种算法选取进程。
  • 把处理器分配给进程。

进程调度机制

  • 排队器。
  • 分派器。
  • 上下文切换器。

非抢占方式(Non-preemptive Mode)

  • 当某一进程正在处理机上执行时,即使有某个更为重要或紧迫的进程进入就绪队列,该进程仍继续执行,直到其完成或发生某种事件而进入完成或阻塞状态时,才把处理机分配给更为重要或紧迫的进程
  • 引起进程调度的因素
    • 正在执行的进程执行完毕, 或因发生某事件而不能再继续执行
    • 执行中的进程因提出I/O请求而暂停执行;
    • 在进程通信或同步过程中执行了某种原语操作,如wait、Block、Wakeup原语

优点:算法简单,系统开销小
缺点:紧急任务不能及时响应;短进程到达要等待长进程运行结束

抢占方式(Preemptive Mode)

  • 当某一进程正在处理机上执行时,若有某个更为重要或紧迫的进程进入就绪队列,则立即暂停正在执行的进程,将处理机分配给这个更为重要或紧迫的进程
  • 抢占式调度主要有以下原则
    • 优先权原则 允许高优先权的新到进程抢占当前进程的处理机
    • 短作业(进程)优先原则允许执行时间短的新到进程抢占当前进程的处理机
    • 时间片原则:时间片用完后停止执行,重新进行调度,适用于分时系统

优点:适于时间要求严格的实时系统
缺点:调度算法复杂,系统开销大