(1)先来先服务(FCFS):
算法思想:主要从“公平”的角度考虑。
算法规则:按照作业/进程到达的先后顺序进行服务。就是等待时间越久的越优先得到服务。
用于作业/进程调度:用于作业调度时,考虑的是哪个作业先到达后备队列;用于进程调度时,考虑的是哪个进程先到达就绪队列。
是否可抢占?非抢占式的算法。
优点:公平、算法实现简单;缺点:对长作业有利,对短作业不利。
不会导致饥饿。
饥饿:某进程/作业长期得不到服务。
(2)短作业优先(SJF):
算法思想:追求最少的平均等待时间,最少的平均周转时间,最少的平均带权周转时间。
算法规则:最短的作业/进程优先得到服务(所谓最短,是指要求服务时间最短)。
用于作业/进程调度:两者都可用于。当用于进程调度时,称为“短进程优先算法”。(SPF)
是否可抢占?SJF和SPF都是非抢占式的算法。也有抢占式版本——最短剩余时间优先算法(SRTN)。
优点:“最短的”平均等待时间、平均周转时间。缺点:不公平。对短作业有利,对长作业不利。可能产生饥饿现象。
会导致饥饿。
(3)高响应比优先(HRRN):
算法思想:要综合考虑作业/进程的等待时间和要求服务的时间。
算法规则:在每次调度时先计算各个作业/进程的响应比,选择响应比最高的作业/进程为其服务。
响应比=(等待时间+要求服务时间)/要求服务时间。
用于进程/作业调度。
非抢占式的算法。因此只有当前运行的作业/进程主动放弃处理机时才需要调度,才需要计算响应比。
优缺点:综合考虑了等待时间和运行时间(要求服务时间)。等待时间相同时,要求服务时间短的优先(SJF的优点);要求服务时间相同时,等待时间长的优先(FCFS的优点)。
不会导致饥饿。
(4)总结:
以上三种算法一般适用于早期的批处理系统,因为它不关心“响应时间”,也不区分任务的紧急程度,对用户来说交互性很糟糕。