我是大白(●—●),这是我开始学习记录大白Java软件攻城狮晋升之路的第六十五天,今天学习的是进程调度的算法的评价指标以及FCFS、SJF、HRRN调度算法~
文章目录
一、调度算法的评价指标
1.CPU利用率
由于早期的CPU造价极其昂贵,因此人们会希望让cPU尽可能多地工作
CPU利用率:指CPU“忙碌”的时间占总时间的比例。
利 用 率 = 忙 碌 的 时 间 总 时 间 利用率=\frac{忙碌的时间}{总时间} 利用率=总时间忙碌的时间
Eg:某计算机只支持单道程序,某个作业刚开始需要在CPU上运行5秒,再用打印机打印输出5秒,之后再执行5秒,才能结束。在此过程中,CPU利用率、打印机利用率分别是多少?
C P U 利 用 率 = 5 + 5 5 + 5 + 5 = 66.66 % CPU利用率=\frac{5+5}{5+5+5}=66.66\% CPU利用率=5+5+55+5=66.66%
打 印 机 利 用 率 = 5 15 = 33.33 % 打印机利用率=\frac{5}{15}=33.33 \% 打印机利用率=155=33.33%
2.系统吞吐量
对于计算机来说,希望能用尽可能少的时间处理完尽可能多的作业。
**系统吞吐量:**单位时间内完成作业的数量
系 统 吞 吐 量 = 总 共 完 成 了 多 少 道 作 业 总 共 花 了 多 少 时 间 系统吞吐量=\frac{总共完成了多少道作业}{总共花了多少时间} 系统吞吐量=总共花了多少时间总共完成了多少道作业
3.周转时间
对于计算机的用户来说,他很关心自己的作业从提交到完成花了多少时间。
周转时间,是指从作业被提交给系统开始,到作业完成为止的这段时间间隔。
它包括四个部分:作业在外存压备队列上等待作业调度(高级调度)的时间、进程在就绪队列上等待进程调度(低级调度)的时间、进程在CPU上执行的时间、进程等待I/O操作完成的时间。后三项在一个作业的整个处理过程中,可能发生多次。
(
作
业
)
周
转
时
间
=
作
业
完
成
时
间
−
作
业
提
交
时
间
(作业)周转时间=作业完成时间-作业提交时间
(作业)周转时间=作业完成时间−作业提交时间
对于用户来说,更关心自己的单个作业的周转时间
平 均 周 转 时 间 = 各 作 业 周 转 时 间 总 和 作 业 数 平均周转时间=\frac{各作业周转时间总和}{作业数} 平均周转时间=作业数各作业周转时间总和
对于操作系统来说,更关心系统的整体表现,因此更关心所有作业的周转时间的平均值
带
权
时
间
=
作
业
周
转
时
间
作
业
实
际
运
行
的
时
间
=
作
业
完
成
时
间
−
作
业
提
交
时
间
作
业
实
际
运
行
的
时
间
带权时间=\frac{作业周转时间}{作业实际运行的时间}=\frac{作业完成时间-作业提交时间}{作业实际运行的时间}
带权时间=作业实际运行的时间作业周转时间=作业实际运行的时间作业完成时间−作业提交时间
带权周转时间必然≥1
平
均
带
权
周
转
时
间
=
各
作
业
带
权
周
转
时
间
之
和
作
业
数
平均带权周转时间=\frac{各作业带权周转时间之和}{作业数}
平均带权周转时间=作业数各作业带权周转时间之和
4.等待时间
计算机的用户希望自己的作业尽可能少的等待处理机
等待时间,指进程/作业处于等待处理机状态时间之和,等待时间越长,用户满意度越低。
对于进程来说,等待时间就是指进程建立后等待被服务的时间之和,在等待I/O完成的期间其实进程也是在被服务的,所以不计入等待时间。
对于作业来说,不仅要考虑建立进程后的等待时间,还要加上作业在外存后备队列中等待的时间。
一个作业总共需要被CPU服务多久,被I/O设备服务多久一般是确定不变的,因此调度算法其实只会影响作业/进程的等待时间。当然,与前面指标类似,也有“平均等待时间”来评价整体性能。
5.响应时间
对于计算机用户来说,会希望自己的提交的请求(比如通过键盘输入了一个调试命令)尽早地开始被系统服务、回应。
响应时间,指从用户提交请求到首次产生响应所用的时间。
二、调度算法
1.FCFS算法(先来先服务)
2.SJF算法(短作业优先)
3.HRRN算法(高响应比优先)
对于FCFS和SJF两种算法的思考
为了解决上面的问题就有了如下的算法