文章目录
- 2.1.8 调度算法的评价指标
- 2.1.8.1 CPU利用率
- 2.1.8.2 系统吞吐量
- 2.1.8.3 周转时间
- 2.1.8.4 等待时间
- 2.1.8.5 响应时间
- 2.1.8.6 小结
2.1.8 调度算法的评价指标
知识总览
需要注意的是,这一部分的知识要学会计算
2.1.8.1 CPU利用率
在早期,由于CPU造价极其昂贵,因此人们会希望让CPU尽可能多地工作。由此,引出了下面的概念。
CPU利用率:指CPU“忙碌”的时间占总时间的比例。,即利用率=忙碌的时间总时间利用率 = \frac{忙碌的时间}{总时间}利用率=总时间忙碌的时间。
在有的题目中,还会要求计算某种设备的利用率。
某计算机只支持单道程序,某个作业刚开始需要在CPU上运行5秒,再用打印机打印输出5秒,之后再执行5秒,才能结束。在此过程中,CPU利用率、打印机利用率分别是多少?
CPU利用率=5+55+5+5=66.66CPU利用率 = \frac{5+5}{5+5+5} = 66.66CPU利用率=5+5+55+5=66.66%
打印机利用率=515=33.33打印机利用率 = \frac{5}{15} = 33.33打印机利用率=155=33.33%
需要注意的是,考研中一般不会出这么简单的题目,而是会考查多道程序并发执行的情况,这时候可以利用
甘特图
来辅助计算。
2.1.8.2 系统吞吐量
对于计算机来说,人们总希望能用尽可能少的时间处理完尽可能多的作业。
系统吞吐量:单位时间内完成作业的数量。
系统吞吐量 = 总共完成了多少道作业总共花了多少时间\frac{总共完成了多少道作业}{总共花了多少时间}总共花了多少时间总共完成了多少道作业
某计算机系统处理完10道作业,共花费了100秒,则系统吞吐量为?
10/100 = 0.1道/秒
2.1.8.3 周转时间
对于计算机的用户来说,他很关心自己的作业从提交到完成花了多少时间。这就是周转时间
。周转时间是指作业被提交给系统开始,到作业完成为止的这段时间间隔。
其包括四个部分:作业在外存后备队列上等待作业调度的时间、进程在就绪队列上等待进程调度的时间、进程在CPU上执行的时间、进程等待I/O操作完成的时间。后三项在一个作业的整个处理过程中,可能发生多次。
作业周转时间 = 作业完成时间-作业提交时间
对于单个用户来说,更关心自己的单个作业的周转情况
平均周转时间 = 各作业周转时间之和作业数\frac{各作业周转时间之和}{作业数}作业数各作业周转时间之和
对于操作系统来说,更关心系统的整体表现,因此更关心所有作业周转时间的平均值。
有的作业运行时间短,有的作业运行时间长,因此在周转时间相同的情况下,运行时间不同的作业,给用户的感觉肯定是不一样的。
这么说的话,用户如何关心自己作业在周转时间的实际表现呢?这时候就引出了带权周转时间
。
带权周转时间 = 作业周转时间作业实际运行的时间=作业完成时间−作业提交时间作业实际运行的时间\frac{作业周转时间}{作业实际运行的时间} = \frac {作业完成时间 - 作业提交时间}{作业实际运行的时间}作业实际运行的时间作业周转时间=作业实际运行的时间作业完成时间−作业提交时间
这样的话,对于周转时间相同的两个作业,实际运行时间长的作业在相同时间内被服务的时间更多,带权周转时间小,用户满意度更高。
而对于实际运行时间相同的两个作业,周转时间短的带权周转时间更小,用户满意度更高。
从公式来看,作业提交后不一定开始处理,所以分子肯定大于分母,也就是说,带权周转时间必然大于1,而且带权周转时间与周转时间都是越小越好。
平均带权周转时间 = 各作业带权周转时间之和作业数\frac{各作业带权周转时间之和}{作业数}作业数各作业带权周转时间之和
相信上面的概念不好理解,我们下面用几个计算例子来理解:
设有三道作业,它们的提交时间和运行时间见下表:
作业号 提交时间/时 运行时间/h 1 10:00 2 2 10:10 1 3 10:25 0.25 注:为计算方便,“时”均为十进制。
试给出在下面两种调度算法下,作业的执行顺序、平均周转时间和带权周转时间。
- 先来先服务(FCFS)调度算法
- 短作业优先(SJF)调度算法
采用FCFS调度算法时,作业的执行顺序是作业1->作业2->作业3,根据题意可得下表:
作业号 提交时刻/时 运行时间/h 开始时刻/时 完成时刻/时 1 10:00 2 10:00 12:00 2 10:10 1 12:00 13:00 3 10:25 0.25 13:00 13:15 那么,由公式可得:
平均周转时间=各作业周转时间之和作业数=[(12−10)+(13−10:10)+(13:25−10:25)]/3=2.55h平均周转时间 =\frac{各作业周转时间之和}{作业数} = [(12-10)+(13-10:10)+(13:25-10:25)]/3 = 2.55h平均周转时间=作业数各作业周转时间之和=[(12−10)+(13−10:10)+(13:25−10:25)]/3=2.55h
平均带权周转时间=各作业带权周转时间之和作业数=[(12−10)/2+(13−10:10)/1+(13.15−10.25)/0.25]/3=5.05h平均带权周转时间 = \frac{各作业带权周转时间之和}{作业数} = [(12-10)/2+(13-10:10)/1+(13.15-10.25)/0.25]/3 = 5.05h平均带权周转时间=作业数各作业带权周转时间之和=[(12−10)/2+(13−10:10)/1+(13.15−10.25)/0.25]/3=5.05h
采用SJF调度算法时,作业的执行顺序是作业1->作业3->作业2,根据题意可得下表:
作业号 提交时刻/时 运行时间/h 开始时刻/时 完成时刻/ 1 10:00 2 10:00 12.00 2 10:10 1 12:15 13:15 3 10:25 0.25 12:00 12:15 那么,由公式可得:
平均周转时间=[(12−10)+(13:15−10:10)+(12:15−10:25)]/3=[2+3.08+1.83]/3=2.3h平均周转时间 = [(12-10)+(13:15-10:10)+(12:15-10:25)]/3=[2+3.08+1.83]/3=2.3h平均周转时间=[(12−10)+(13:15−10:10)+(12:15−10:25)]/3=[2+3.08+1.83]/3=2.3h
带权平均周转时间=(2/2+3.08/1+1.83/0.25)/3=3.8h带权平均周转时间 = (2/2+3.08/1+1.83/0.25)/3=3.8h带权平均周转时间=(2/2+3.08/1+1.83/0.25)/3=3.8h
2.1.8.4 等待时间
计算机的用户希望自己的作业尽可能少的等待处理机。
等待时间,指进程/作业
处于等待处理机状态时间之和
,等待时间越长,用户满意度越低。
对于进程来说,等待时间就是指进程建立后等待被服务的时间之和,在等待I/O完成的期间其实进程也是在被服务的,所以不计入等待时间。对于作业来说,不仅要考虑建立进程后的等待时间,还要加上作业在外存后备队列中等待的时间。
一个作业作业总共需要被CPU服务多久,被I/O设备服务多久一般是确定不变的,因此调度算法其实只会影响作业/进程的等待时间。当然,与前面指标类似,也有“平均等待时间”来评价整体性能。
2.1.8.5 响应时间
对于计算机用户来说,会希望自己提交的请求(比如通过键盘输入了一个调试指令)尽早地开始被系统服务、回应。由此引出了响应时间的概念:
响应时间
,指从用户提交请求
到首次产生响应
所用的时间。