调度的基本概念
调度的最根本目标
-
保证CPU资源和其他资源利用的合理性和有效性
-
合理性:根据调度策略合理分配处理机,既要保证系统实现特殊功能的要求,又要使各个作业合理使用处理机资源
-
有效性:按调度策略使处理机和I/O设备得到合理有效的分配,资源充分利用
-
Scheduler程序:制定调度策略
Dispatcher程序:用于将处理机资源的控制权分配给选中的进程
调度的类型
- 高级调度/作业调度:按算法从后备作业队列中选择满足条件的作业,分配资源,创建PCB,入主存就绪队列
- 用于多道批处理系统,执行频率低
- 低级调度/进程调度:按算法从就绪队列中选择满足条件的进程,分配CPU运行
- 抢占/非抢占
- 必须有进程调度,频率高
- 中级调度/内存调度:将主存中长期未执行的进程,按算法入盘交换区;满足执行条件后再入主存
选择准则
- 面向用户四准则
- 响应时间
- 周转时间:作业提交到完成经过的时间
- 截止时间保证
- 优先权准则
- 面向系统三准则
- 系统吞吐量:单位时间内处理的任务数
- CPU利用率
- 各类资源的平均利用
调度中的时间
周转时间
- 周转时间 = 作业完成时间 - 作业提交时间
- 平均周转时间 = (作业1周转时间 + ... +作业n周转时间) / n
- 带权周转时间 = 作业周转时间 / 作业实际运行时间
- 平均带权周转时间 = (作业1带权周转时间 + ... + 作业n带权周转时间) / n
等待时间
- 进程等待处理机的时间之和
- 衡量调度算法优劣的标准
响应时间
- 从用户提交请求到系统首次产生响应所用时间
典型调度算法
先来先服务FCFS(First Come First Serve)
- 思想:第一个来的第一个服务
- 优点:简单,易于实现;公平;
- 缺点:平均等待时间长;短作业不利;紧迫性作业不利;
- 若一个进程很长时间得不到运行,则称为“饿死现象”,FCFS不会饿死
短作业优先SJF(Shortest Job First)
- 思想:最短的作业先 抢占式/非抢占式
- 优点:平均等待时间最小;系统吞吐量增加;
- 缺点:长作业不利;需要知道每个作业所需的执行时间;
时间片轮转RR(Round Robin)
- 思想:按时间片轮着来,下一个运行的进程按照队列形式选出
- 优点:平均响应时间短
- 缺点:性能与时间片大小有关
- 如果进程在时间片结束前阻塞或结束,则CPU当即进行切换。结束的进程会从运行队列中清除,剩下的时间片随进程结构的清除而清除,并不影响到其他进程的调度
优先权调度PSA(Priority)
-
思想:优先权最高的先 一般数小优先权大
-
类型:抢占式/非抢占式
-
优先权类型:静态优先权、动态优先权
高响应比优先HRRN(Highest Response Ratio Next)
-
思想:最高响应比是下一个 动态优先权
-
响应比Rp=1+(等待时间/要求运行时间) 等待时间在动态变化
多级队列调度(Multilevel Queue)
- 思想:系统设置多个就绪队列,分配不同优先权,先调用优先权高的进程,高优先权队列为空时才调度低一级优先权队列中的进程。
多级反馈队列(优点融合)
- 思想:
- 设置多个不同的优先权就绪队列
- 各队规定一时间片,优先权越高,时间片越小
- 新进程先入高优先权队列,执行规定时间片,未完成,入下一级队尾
- 高优先权队列为空,执行下一级队列进程...
- 若有新入就绪队列的进程,中止低优先权队列进程执行。被中止进程入本队队尾
- 最后一级队列采用时间片轮转
- 优点:
- 终端型作业用户:短作业优先
- 短批处理作业用户:周转时间较短
- 长批处理用户:经过前面几个队列得到部分执行,不会长期得不到处理
实时系统及多核系统的调度
实时系统
完成截止时间转为开始截止时间要求,满足实时任务对截止时间的要求
蓝色为A周期;红色为B周期;箭头为在一个周期内最晚要开始任务的时间,即开始截止时间;
箭头在前面的任务更紧迫;
- 实时系统要求
- 提供必要的调度信息
- 抢占式调度方式
- 有较强的中断处理机构
- 具有快速任务分配机制