1.批处理系统中的调度
1.1先来先服务
调度最先进入就绪队列的作业。
有利于长作业,但不利于短作业,因为短作业必须一直等待前面的长作业执行完毕才能执行,而长作业又需要执行很长时间,造成了短作业等待时间过长。
1.2短作业优先
调度估计运行时间最短的作业。
长作业有可能会饿死,处于一直等待短作业执行完毕的状态。因为如果一直有短作业到来,那么长作业永远得不到调度。
1.3 最短剩余时间优先
允许比当前进程剩余时间更短的进程来抢占
2.交互式系统中的调度
2.1优先级调度
除了手动赋予优先权之外,还可以把响应比作为优先权,这种调度方式叫做高响应比调度算法。
响应比 = (等待时间 + 要求服务时间) / 要求服务时间 = 响应时间 / 要求服务时间
这种调度算法主要是为了解决短作业优先调度算法长作业可能会饿死的问题,因为随着等待时间的增长,响应比也会越来越高。
2.2时间片轮转
将所有就绪进程按FCFS的原则排成一个队列,每次调度时,把CPU时间分配给队首进程,该进程可以执行一个时间片。当时间片用完时,(由计时器)发出(时钟)中断,调度程序便停止该进程的执行,并将它送到就绪队列的末尾,同时继续把CPU时间分配给队首的进程。
时间片轮转算法的效率和时间片的大小有很大的关系。因为进行切换都要保存进程的信息并且载入新进程的信息,如果时间片太小,会导致进程切换得太频繁,在进程切换上就会花过多时间。
2.3多级反馈队列
如果一个进程需要考虑执行100个时间片,如果采用轮转法,那么需要100次。多级队列就是为这种需要连续执行多个时间片的进程考虑,它设置了多个队列,每个队列时间片大小都不同,例如1,2,4,8,..。进程在第一个队列没执行完,就会被移到下一个队列。这种方式下,之前的进程只需要交换7次。
每个队列优先权也不同,最上面的优先权最高。因此只有上一个队列没有进程排队了,才能调度当前队列上的进程。
3.实时系统中的调度
实时系统要求一个服务请求在一个确定时间内得到相应。
分为硬实时和软实时,前者必须满足绝对的截止时间,后者可以容忍一定的超时。