操作系统调度算法
-
先来先服务(FCFS)
调度方式:非抢占式调用
算法内容:按照作业/进程的到达顺序执行
优缺点:
- 有利于CPU繁忙型作业,充分利用cpu资源
- 不利于IO繁忙型作业,操作耗时,其他饥饿 -
短作业优先(SJF)
调度方式:非抢占式调用
算法内容:所需要服务时间最短的作业/进程优先执行
优缺点:
- 平均等待/周转时间最少
- 长作业饥饿
- 时间估计可能不准确,不能保证紧急任务优先处理 -
高响应比优先(HRRN)
调度方式:非抢占式调用
算法内容:结合FCFS和SJF,综合考虑等待时间和服务时间计算响应比,高的优先调度
优缺点:
- 响应比=(等待时间+服务时间)/服务时间
- 只有当前进程放弃执行权(完成或者阻塞)时,重新计算所有响应比
- 长作业等待时间越久,响应比越高,越容易获得执行权 -
优先级调度(PSA)
调度方式:抢占式/非抢占式(高优先级并不能及时执行)
算法内容:优先级高的作业/进程优先进程
优缺点:
- 系统>用户;交互型>非交互型;IO型>计算型
- 低优先级进程可能会产生饥饿 -
时间片轮转调度(RR)
调度方式:抢占式,以时钟中断为基础
算法内容:按照进程达到就绪队列的顺序,轮流分配一个时间片去执行,时间用完就剥夺执行权
优缺点:
- 公平、响应快,适用于分时系统,进程在一定时间内都能得到响应
- 时间片决定因素:系统响应时间、就绪队列数量、系统处理能力
- 时间片太大,相当于FCFS;太小,进程切换速度快,开销大 -
多级反馈队列(MFQ)
调度方式:抢占式
算法内容:设置多个就绪队列,优先级从高到低,时间片从小到大;新进程进入队列时,先在第一级队列,按FCFS分时间片,按照分配的时间片,若进程没有执行完,则将剩余任务移到二级、三级队列;前面队列不为空,不执行后续队列进程
优缺点:
- 集合了前几种算法优点,相当于PSA+RR
- 对于各种类型的相对公平,响应快
- 终端型作业用户:短作业优先
- 批处理作业用户:周转时间快
- 长批处理作业用户:在前几队列中部分执行