第二章 几种调度算法的比较

总览

UWDGNQ.png

先来先服务

UWDfu6.png
  • 按照到达先后,实际上就是等待时间越久的越先得到服务
  • 注意等待时间的计算
    • 纯计算型的进程:周转时间-运行时间
    • 计算+I/O操作的:周转时间-运行时间-I/O操作时间
      UWDuct.png

短作业优先

UWyGND.png

非抢占式(SPF)与抢占式对比(SRTN)

  1. 非抢占式
    UWsR0K.png
  2. 抢占式
    UWrGqK.png
    UWr7ZT.png

几个细节(某些说法不一致时)

UWyEAU.png

FCFS与SJF对比

UWyBHf.png
因此推出了高响应比优先

高响应比优先

UWcY6A.png
  • 当前运行的进程主动放弃CPU时,才需要进行调度,重新计算响应比
    UW6XWQ.png

以上三种算法对比

  • 交互性差
    UWc0k8.png

时间片轮转

UWfzy4.png
  • 注意,时间片到了之后下处理机时,会加到就绪队列的队尾,不要按照题中给的顺序想到然的来,要时刻按照就绪队列的顺序进行分析,如下:
    UWR1YT.png
    UWRGpF.png
  • 时间片太大时,就会变成先来先服务
  • 太小切换的代价就大了,切换的开销不超过1%就认为是合适的
  • 用于进程调度

优先级调度算法

UW4q2T.png
  • 注意是优先数越大,优先级越高,还是相反
  • 抢占式和非抢占式
    • 非抢占式的优先级调度算法:每次调度时选择当前已到达且优先级最高的进程。当前进程主动放弃处理机时发生调度。
    • 抢占式的优先级调度算法:每次调度时选择当前已到达且优先级最高的进程。当前进程主动放弃处理机时发生调度。另外,当就绪队列发生改变时也需要检查是会发生抢占。
      UW4RxS.png

多级反馈队列调度算法

UWo0rF.png
  • 认为是抢占式的算法
  • 用于进程调度
    算法规则(个人理解)
  1. 某一队列的上级队列都空了,才轮到这一级
  2. 某进程在该队列的时间片用完,还没完成,就进入下一级队列(时间片增加的),但如果已经是最底层了,就放到该级队尾
  3. 来一个新的进程首先放到第1级的队尾,如果此时运行的是低级的队列的进程,则发生抢占,被强占的进程放到所在队列的队尾,并不是到下一级了(毕竟是意外,也没说自己在这一级能不能运行完)

以上三种比对

  • 适合交互式系统
    UWoTIA.png