4. 从以下几个方面比较各个调度算法的优缺点:
1.资源利用率
2.吞吐率
3.周转率
4.响应时间
5.公平性
6.适用范围
(1)先来先服务调度算法:先来先服务调度算法是一种非抢占式的算法,先进入就绪队列的进程,先分配处理机运行。一旦一个进程占有了处理机,它就一直运行下去,直到该进程完成工作或者因为等待某事件发生而不能继续运行时才释放处理机。
(2)最短作业优先算法:最短作业优先算法这是对FCFS算法的改进,其目标是减少平均周转时间。对预计执行时间短的作业(进程)优先分派处理机。通常后来的短作业不抢先正在执行的作业。
(3)最短剩余时间优先算法:这是一个剥夺式调度算法。此算法的资源利用率和吞吐率较高,周转率较快,响应时间较短,也是一个不是很公平的算法,适用于剩余时间短的进程。优缺点:能够克服FCFS算法偏爱长作业的缺点,实现起来比较复杂,要时时观察每个作业的剩余时间,但是此算法的平均等待时间和平均周转时间都比FCFS和SJF的好。
(4)最高响应比优先算法:最高响应比优先法是对FCFS方式和SJF方式的一种综合平衡。FCFS方式只考虑每个作业的等待时间而未考虑执行时间的长短,而SJF方式只考虑执行时间而未考虑等待时间的长短。因此,这两种调度算法在某些极端情况下会带来某些不便。HRN调度策略同时考虑每个作业的等待时间长短和估计需要的执行时间长短,从中选出响应比最高的作业投入执行。这种算法是介于FCFS和SJF之间的一种折中算法。
(5)优先级调度算法:优先级算法是多级队列算法的改进,平衡各进程对响应时间的要求。适用于作业调度和进程调度,可分成抢先式和非抢先式。静态优先级,作业调度中的静态优先级大多按以下原则确定:由用户自己根据作业的紧急程度输入一个适当的优先级。由系统或操作员根据作业类型指定优先级。系统根据作业要求资源情况确定优先级。
(6)轮转调度算法:轮转法是让每个进程在就绪队列中的等待时间与享受服务的时间成正比例。将系统中所有的就绪进程按照FCFS原则,排成一个队列。每次调度时将CPU分派给队首进程,让其执行一个时间片。时间片的长度从几个ms到几百ms。在一个时间片结束时,发生时钟中断。调度程序据此暂停当前进程的执行,将其送到就绪队列的末尾,并通过上下文切换执行当前的队首进程。
(7)多级反馈队列调度算法:多级反馈队列算法是轮转算法和优先级算法的综合和发展。设置多个就绪队列,分别赋予不同的优先级,如逐级降低,队列1的优先级最高。每个队列执行时间片的长度也不同,规定优先级越低则时间片越长,如逐级加倍。新进程进入内存后,先投入队列1的末尾,按FCFS算法调度;若按队列1一个时间片未能执行完,则降低投入到队列2的末尾,同样按FCFS算法调度;如此下去,降低到最后的队列,则按“时间片轮转”算法调度直到完成。仅当较高优先级的队列为空,才调度较低优先级的队列中的进程执行。