早期批处理调度系统算法,与用户无交互
算法 | 思想规则 | 抢占? | 优点 | 缺点 | 考虑到等待时间&运行时间 | 饥饿? |
---|---|---|---|---|---|---|
FCFS | 先来的先服务,可用于进程/作业调度 | 非抢占 | 公平;实现简单 | 对短作业不利 | 等待时间√ 运行时间× | 不会 |
SJF | 短作业优先,可用于进/作业 | 默认非抢占,也有SJF抢占式最短剩余时间优先算法(SRTN) | “最短”的平均等待/周转时间 | 对长作业不利,难以做到真正的短作业优先 | 等待时间× 运行时间√ | 会 |
HRRN | 高响应比优先 | 非抢占式 | 上述两种算法的权衡折中,综合考虑等待时间和运行时间 | 等待时间√ 运行时间√ | 不会 |
这几种算法只要关心对用户的公平性、平均周转时间、平均等待时间等评价系统整体性能的指标,但是不关心“响应时间”,也并不区分任务的紧急程度,因此对于用户来说,交互性很糟糕。因此这三种算法一般适合用于早期的批处理系统,当然,FCFS算法也常常结合其他的算法使用,在现在也扮演着很重要的角色
算法 | 思想规则 | 抢占? | 优点 | 缺点 | 饥饿? | 补充 |
---|---|---|---|---|---|---|
时间片轮转 | 可抢占 | 公平,适用于分时系统 | 频繁切换有开销,不区分优先级 | 不会 | 时间片太大或太小有何影响? | |
优先级调度 | 有抢占式的,也有非抢占式 | 区分优先级,适用于实时系统 | 可能导致饥饿 | 会 | 动态/静态优先级。各类型进程如何设置优先级?如何设置优先级? | |
多级反馈队列 | 抢占式 | 平衡优秀 | 一般不说他有缺点,不过有可能导致饥饿 | 会 |