目录
1.先来先服务(FCFS, First Come First Serve)
2.短作业优先(SJF, Shortest Job First)
3.高响应比优先(HRRN, Highest Response Ratio Next)
调度算法的评价指标
1.CPU利用率
由于早期的
CPU
造价极其昂贵,因此人们会
希望让
CPU
尽可能多地工作
CPU
利用率
:指
CPU
“忙碌”的时间占总时间的比例。
Eg
:某计算机只支持单道程序,某个作业刚开始需要在
CPU
上运行
5
秒,
再用打印机打印输出
5
秒,之后再执行
5
秒,才能结束。在此过程中,
CPU
利用率、打印机利用率分别是多少?
2.系统吞吐量
对于计算机来说,希望能用尽可能少的时间处理完尽可能多的作业
系统吞吐量
:单位时间内完成作业的数量
Eg
:某计算机系统处理完
10
道作业,共花费
100
秒,则系统吞吐量为?
10/100 = 0.1
道
/
秒
3.周转时间
对于计算机的用户来说,他很关心自己的作业从提交到完成花了多少时间。
周转时间
,是指从
作业被提交给系统开始
,到
作业完成为止
的这段时间间隔。
它包括四个部分:作业在外存后备队列上等待作业调度(高级调度)的时间、进程在就绪队列上等
待进程调度(低级调度)的时间、进程在
CPU
上执行的时间、进程等待
I/O
操作完成的时间。后三项在一个作业的整个处理过程中,可能发生多次。
4.等待时间
计算机的用户希望自己的作业尽可能少的等待处理机
等待时间
,指进程
/
作业
处于等待处理机状态时间之和
,等待时间越长,用户满意度越低。
对于
进程
来说,等待时间就是指进程建立后
等待被服务的时间之和
,在等待
I/O
完成的期间其实进
程也是在被服务的,所以不计入等待时间。
对于
作业
来说,不仅要考虑
建立进程后的等待时间
,
还要加上作业在外存后备队列中等待的时间。
一个作业总共需要被
CPU
服务多久,被
I/O
设备服务多久一般是确定不变的,因此调度算法其实只会影响作业/
进程的等待时间。当然,与前面指标类似,也有“
平均等待时间
”来评价整体性能。
5.响应时间
对于计算机用户来说,会希望自己的提交的请求(比如通过键盘输入了一个调试命令)尽早地开始被系统服务、回应。
响应时间
,指从用户
提交请求
到
首次产生响应
所用的时间。
调度算法
Tips
:各种调度算法的学习思路
1.
算法思想
2.
算法规则
3.
这种调度算法是用于 作业调度 还是 进程调度?
4.
抢占式?非抢占式?
5.
优点和缺点
6.
是否会导致
饥饿
1.先来先服务(FCFS, First Come First Serve)
例题:各进程到达就绪队列的时间、需要的运行时间如下表所示。使用
先来先服务
调度算法,计算各进程的等待时间、平均等待时间、周转时间、平均周转时间、带权周转时间、平均带权周转时间。
先来先服务调度算法:按照到达的先后顺序调度,事实上就
是等待时间越久的越优先得到服务。
因此,
调度顺序
为:
2.短作业优先(SJF, Shortest Job First)
非抢占式
抢占式
注意几个小细节:
1.
如果题目中
未特别说明
,所提到的“短作业
/
进程优先算法”
默认
是
非抢占式
的
2.
很多书上都会说“
SJF
调度算法的平均等待时间、平均周转时间最少”
严格来说,这个表述是错误的,不严谨的。之前的例子表明,最短剩余时间优先算法得到的平均等待时间、平均周转时间还要更少
应该加上一个条件“在
所有进程同时可运行
时,采用
SJF
调度算法的平均等待时间、平均周转时间最
少”;
或者说“在
所有进程都几乎同时到达
时,采用
SJF
调度算法的平均等待时间、平均周转时间最少”;
如果不加上述前提条件,则应该说“
抢占式的
短作业
/
进程优先调度算法(
最短剩余时间优先
,
SRNT
算法)的平均等待时间、平均周转时间最少”
3.
虽然严格来说,
SJF
的平均等待时间、平均周转时间并不一定最少,但相比于其他算法(如
FCFS
), SJF依然可以获得较少的平均等待时间、平均周转时间
4.
如果选择题中遇到“
SJF
算法的平均等待时间、平均周转时间最少”的选项,那最好判断其他选项
是不是有很明显的错误,如果没有更合适的选项,那也应该选择该选项
对FCFS和SJF两种算法的思考…
3.高响应比优先(HRRN, Highest Response Ratio Next)
知识回顾与重要考点
注:这几种算法主要关心对用户的公平性、平均周转时间、平均等待时间等评价系统整体性能的指标,但是不关心“响应时间”,也并不区分任务的紧急程度,因此对于用户来说,交互性很糟糕。因此这三种算法一般适合用于
早期的批处理系统
,当然,
FCFS
算法也常结合其他的算法使用,在现在也扮演着很重要的角色。而适合用于
交互式系统
的调度算法将在下个小节介绍
…
提示:一定要动手做课后习题!
这些算法特性容易考小题,算法的使用常结合调度算法的评价指标在大题中考察。