Chapter3 进程调度 - abowloflrf/os-note GitHub Wiki

进程调度的功能

多个进程就绪的时候,由OS的调度程序决定先运行哪个

进程调度要达到的目标

  1. 公平(确保每个进程都得到合理分配cpu份额)
  2. cpu利用率高(尽可能是cpu100%忙碌)
  3. 响应时间短(用户输入到得到结果输出之间的时间)
  4. 周转时间短(周转时间=作业完成时间-作业提交时间)
  5. 吞吐量大(单位时间内完成的作业数)
  6. 调度算法不宜太复杂(避免占用太多cpu时间)

进程调度算法

调度算法的实质是资源分配

先来先服务FCFS

或称先进先出FIFO, 优点实现简单 缺点没有考虑进程优先级;有利于cpu繁忙型进程,不利于io繁忙型进程;利于长进程不利于段进程

时间片轮转RR

将所有就绪的进程按照先来先服务排成队列,规定一个时间片为进程每次使用cpu的最大时间,队列首部的进程先于心,时间片到时剥夺进程的运行,排到队尾

时间片若太小,导致频繁进程切换,消耗cpu 时间片若太大,响应时间长,大到一定程度就成了FCFS模式 选择时间片要考虑的因素

  1. 对响应时间要求
  2. 就绪的进程数
  3. 系统处理能力

短进程(作业)优先

优先选择估计运行时间短的进程先运行 缺点对长进程不利,甚至可能导致长进程得不到调度

基于优先级的调度

总是选择就绪队列中优先级最高的进程运行

  • 静态优先级

进程创建时确定,在进程运行时不变,可能出现低优先级者得不到调度

  • 动态优先级

进程创建时制定一个基础优先级,每隔一定时间重新计算优先级:等待时间越长,优先级越高,已占用cpu时间越长,优先级越低

多级反馈队列

按照优先级设置多个就绪对垒,每个队列设置不同优先级,优先级越高的队列分配的时间片越小,每个队列按照先来先服务排队,一个新进程就绪后进入相应优先级队尾

  • 调度方法

每次选择优先级最高队列的队首进程运行,若调度的时间到,则放入下一优先级队列的队尾,同时其时间片会加长,当有一个优先级更高的进程就绪时可以抢占cpu,被抢占的进程回到原来队列的队尾

实时OS调度

对时间要求严格,一般基于开始截止时间,完成截止时间