本章讲解三种调度算法。时间片轮转调度算法、优先级调度算法、多级反馈队列调度算法

1.先了解下算法的评估

cpu 利用率 = 忙碌时间 / 总时间
系统吞吐量 = 总共完成多少道作业 / 总共花了多少时间

周转时间

周转时间:(作业提交到 操作系统开始,到作业完成)包括四个部分

  1. 从外存中后备队列等待作业调度(高级调度)的时间
  2. 进程在就绪队列等待进程调度(低级调度)的时间
  3. 进程在cpu执行的时间
  4. 进程等待IO操作完成的时间
    (作业)周转时间 = 作业完成时间 - 作业提交时间
    平均周转时间 = 各作业周转时间之和 / 作业数

带权周转时间 = 作业周转时间 / 作业实际运行时间
平均带权周转时间 = 各作业带权周转时间之和 / 作业数

等待时间

进程/作业处于等待处理机状态时间之和

  1. 对于进程:进程建立后等待被服务的时间之和
  2. 对于作业:除了进程建立后的等待还包括作业在外存后备队列中等待的时间

相应时间

用户提交请求到首次产生相应所用的时间

2.时间片轮转调度算法

  1. 算法思想
    公平、轮流为每个进程服务、每个进程在一定时间内得到相应
  2. 算法规则
    按照到达就绪队列的顺序,轮流让各个进程执行一个时间片。若一个进程未在一个时间片中完成任务,剥夺处理机,将进程重新放到就绪队列队尾重新排队
  3. 作业/进程调度
    作业放入内存建立了相应进程后,才能被分配处理机时间片
  4. 是否可抢占
    若进程未在时间片内运行完成,将被强行剥夺时间片使用权(抢占式)。由时钟装置发时钟中断来通知cpu时间片已到
  5. 优缺点
    优点:公平,相应快,适用于分时操作系统
    缺点:高频率的进程切换,需要开销,不区分任务紧急程度
  6. 不会导饥饿现象
  7. 时间片太大=先来先服务算法
  8. 时间片太小,进程调度频繁

3.优先级调度算法

  1. 算法思想
    根据任务的紧急程度决定处理的顺序
  2. 算法规则
    每个作业/进程都有各自的优先级,调度时选择优先级最高的作业/进程
  3. 作业/进程调度
    作业/进程调度都适用
  4. 是否抢占
    非抢占:进程主动放弃处理机
    抢占式:就绪队列变化,检查是否发生抢占
  5. 优缺点
    优点:适用于实时操作系统、可灵活调整对作业/进程的偏好程度
    缺点:源源不断有高优先级到来,可能导致饥饿

4.多级反馈队列调度算法

  1. 算法思想
    对之前算法的折中权衡
  2. 算法规则
    多级就绪队列,各级队列优先级从高到低,时间片从小到大
    新进程首先进入1级队列,FCFS原则分配时间片。若时间片用完进程未结束,则进程放入下一级队列的队尾
    若当前进程还未结束时,到达了更高优先级的进程,当前进程插入到当前级别队列的队尾
    只有k级队列未空时候,才为k+1级队列分配处理机
  3. 用于进程调度
  4. 是否可抢占
    抢占式算法,在k级队列运行过程中,新进程会抢占处理机,原来运行的进程放回k级队列队尾
  5. 优缺点
    优点:进程相对公平,新进程会得到相应,短进程只用较短时间完成,灵活调整进程的偏好程度
    缺点:会导致饥饿现象

算法对比

操作系统——调度算法(时间片轮转调度算法、优先级调度算法、多级反馈队列调度算法)——2.8

相关文章: