本章讲解三种调度算法。时间片轮转调度算法、优先级调度算法、多级反馈队列调度算法
1.先了解下算法的评估
cpu 利用率 = 忙碌时间 / 总时间
系统吞吐量 = 总共完成多少道作业 / 总共花了多少时间
周转时间
周转时间:(作业提交到 操作系统开始,到作业完成)包括四个部分
- 从外存中后备队列等待作业调度(高级调度)的时间
- 进程在就绪队列等待进程调度(低级调度)的时间
- 进程在cpu执行的时间
- 进程等待IO操作完成的时间
(作业)周转时间 = 作业完成时间 - 作业提交时间
平均周转时间 = 各作业周转时间之和 / 作业数
带权周转时间 = 作业周转时间 / 作业实际运行时间
平均带权周转时间 = 各作业带权周转时间之和 / 作业数
等待时间
进程/作业处于等待处理机状态时间之和
- 对于进程:进程建立后等待被服务的时间之和
- 对于作业:除了进程建立后的等待还包括作业在外存后备队列中等待的时间
相应时间
用户提交请求到首次产生相应所用的时间
2.时间片轮转调度算法
- 算法思想
公平、轮流为每个进程服务、每个进程在一定时间内得到相应 - 算法规则
按照到达就绪队列的顺序,轮流让各个进程执行一个时间片。若一个进程未在一个时间片中完成任务,剥夺处理机,将进程重新放到就绪队列队尾重新排队 - 作业/进程调度
作业放入内存建立了相应进程后,才能被分配处理机时间片 - 是否可抢占
若进程未在时间片内运行完成,将被强行剥夺时间片使用权(抢占式)。由时钟装置发时钟中断来通知cpu时间片已到 - 优缺点
优点:公平,相应快,适用于分时操作系统
缺点:高频率的进程切换,需要开销,不区分任务紧急程度 - 不会导饥饿现象
- 时间片太大=先来先服务算法
- 时间片太小,进程调度频繁
3.优先级调度算法
- 算法思想
根据任务的紧急程度决定处理的顺序 - 算法规则
每个作业/进程都有各自的优先级,调度时选择优先级最高的作业/进程 - 作业/进程调度
作业/进程调度都适用 - 是否抢占
非抢占:进程主动放弃处理机
抢占式:就绪队列变化,检查是否发生抢占 - 优缺点
优点:适用于实时操作系统、可灵活调整对作业/进程的偏好程度
缺点:源源不断有高优先级到来,可能导致饥饿
4.多级反馈队列调度算法
- 算法思想
对之前算法的折中权衡 - 算法规则
多级就绪队列,各级队列优先级从高到低,时间片从小到大
新进程首先进入1级队列,FCFS原则分配时间片。若时间片用完进程未结束,则进程放入下一级队列的队尾
若当前进程还未结束时,到达了更高优先级的进程,当前进程插入到当前级别队列的队尾
只有k级队列未空时候,才为k+1级队列分配处理机 - 用于进程调度
- 是否可抢占
抢占式算法,在k级队列运行过程中,新进程会抢占处理机,原来运行的进程放回k级队列队尾 - 优缺点
优点:进程相对公平,新进程会得到相应,短进程只用较短时间完成,灵活调整进程的偏好程度
缺点:会导致饥饿现象