1.先到先服务(FCFS)
算法规则:按照作业/进程到达的先后顺序提供服务。
2.短作业/进程优先(SJF/SPF)
算法规则:最短的作业/进程优先服务,最短指的是此作业/进程要求服务的时间最短。
3.高响应比优先(HRRN)
算法规则:每次调度时计算各个作业/进程的响应比=(等待时间+要求服务时间)/要求服务时间
4.时间片轮询(RR,RoundRobin):
算法思想:公平、轮流的为各个进程服务,让每个进程在一定时间间隔内都能得到响应。
算法规则:按照各个进程达到就绪队列的顺序,轮流地让各个进程执行一个时间片如100ms,每次都选择队头进程。若进程未在一个时间片内执行完,则剥夺处理机(CPU),将进程重新放到队列尾部进行排队。
作业/进程:进程调度(只有作业将放入内存建立相应进程后,才能被分配处理机时间片)。
是否可抢占:若进程未在时间片内运行完,则强行剥夺处理机使用权,因此属于抢占式算法,由始终装置发出时钟中断来通知CPU时间到。
优点:公平、响应快,适合分时操作系统。
缺点:进程切换的开销、不区分任务紧急程序。
是否导致饥饿:不会,轮流的为各个进程服务。
注:若时间片太大,每个进程都会在时间片内执行完,则时间片轮询算法会退化为先到先服务算法,会增大进程响应时间,所以时间片不能太大。若时间片太小,会有频繁的进程切换,增大系统开销,实际执行进程的时间减小。
5.优先级调度算法
算法思想:实时操作系统的出现,越来越多的应用场景需要根据任务的紧急程度来决定处理顺序。
算法规则:每个作业/进程有自己的优先级,调度时选择优先级最高的作业/进程。
作业/进程:既可用于作业调度也可用于进程调度,甚至可用于I/O调度。
是否可抢占:都有。非抢占式只需在进程主动放弃处理机时进行调度即可,抢占式还需在就绪队列发生变化时检查优先级。
优点:用优先级(优先数)区分紧急程度,适用于实时操作系统,可灵活调整各作业/进程的偏好程度。
缺点:若有源源不断的优先级更高的进程到来-队列变化,可能导致饥饿。
是否导致饥饿:有可能。
注:设置进程优先级,通常
1)系统进程-管理者 高于 用户进程-被管理者
2)前台进程 高于 后台进程
3)操作系统更偏好于I/O密集型进程而不是计算型-CPU密集型进程,因为先运行I/O密集型进程可以提高资源利用与和系统吞吐量。
6.多级反馈队列调度算法
算法思想:是对各种调度算法的折中权衡。
算法规则:
作业/进程:用于进程调度。
是否可抢占:抢占式。