先来先服务FCFS
周转时间=完成时间-到达时间
带权周转时间=周转时间/运行时间
等待时机=周转时间-运行时间-io操作时间
是非抢占式的算法
优点:公平,算法实现简单
缺点:排在长作业后面的短作业需要等待很长时间,带权周转时间很大,对短作业来说用户体验不好-对长作业有利,对短作业不利
不会导致饥饿
短作业优先SJF
这个自己根据书上画一下就好了
tips:如果题目中没有特别说明,那么所提到的“短作业/进程优先算法”默认是非抢占式的
很多书上都会说 SJF调度算法平均等待时间/平均周转时间最少,应该加上一个条件,在所有进程同时可运行时
SJF算法是非抢占式的算法,但是也有抢占式的版本--最短剩余时间优先算法
优点:最短的平均等待时机,平均周转时间
缺点:不公平,对短作业有利,对长作业不利。可能产生解饿现象
会导致饥饿
高响应比优先HRRN
每次调度时,先计算各个作业/进程的响应比,选择响应比最高的作业为其服务
\[响应比=\frac{等待时间+要求服务时间}{要求服务时间}
\]
是一个非抢占式算法
谁饿的时间最长就让谁上
优点:总和考虑了等待时间和运行时间(要求服务时间)
等待时间相同时,要求服务时间短的优先(SJF的优点)
要求服务时间相同时,等待时间长的优先
对于长作业来说,虽则等待时间增加,会越来越有机会获得机会
不会导致饥饿
如果一个进程或者作业长期得不到服务就会饥饿