调度算法只需要一篇文章就够了

本文探讨了处理机调度的基本概念,包括常用指标如周转时间和吞吐率,以及进程调度的功能。详细介绍了FCFS、SJF、HRRN、RR、优先级和多级反馈队列调度算法,对比了它们的原理、优缺点和应用场景,特别关注了饥饿问题和抢占式/非抢占式特性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

Tips:各种算法的学习思路
1.算法思想
2.算法规则
3.算法优缺点
4.是否产生饥饿
5.抢占式还是非抢占式
6.算法用于进程调度/进程调度

一、处理机调度相关基本概念

1.衡量调度的常用指标

  1. 周转时间=完成时间-到达时间
  2. 等待时间=周转时间-运行时间(-I/O操作时间)
  3. 吞吐率=作业量/单位时间
  4. 响应时间=首次返回时间-用户请求时间

2.进程调度的功能

(1)记录系统中所有进程的实行情况
为进程的调度做准备,将各个进程的状态记录在各个进程的PCB中。
(2)选择占有处理机的进程
按照一定的策略选择一个进程处于就绪状态。
(3)进行进程上下文的切换
当正在执行的进程由于某种原因要让出处理机时,系统要做进程上下文的切换,以使被调度旋转的进程得以执行。

广义的进程调度是指上面三个步骤,狭义的进程调度是指1,2两个步骤,第三个步骤,只有在其他进程抢到执行权才会进行。

二、调度算法

1.先来先服务算法(FCFS)

描述:将各个进程根据到达时间,逐一放入内存中,根据到达时间的优先程度逐个执行。类似于排队买奶茶。
在这里插入图片描述
总结
先来先服务算法

思考:缺点很明显,买一杯奶茶的人,可能因为前面买20杯奶茶而等待半个小时。

2.短作业优先算法(FCFS)

非抢占式描述:运行时间短的进程会被优先执行。给未做奶茶的队伍给排了一个序,买的少的先做
在这里插入图片描述

抢占式描述:抢占式是指运行中的进程会被动让出CPU。给买奶茶的队伍给排了一个序,买的少的先做,哪怕买的多的已经在做了
在这里插入图片描述
总结
在这里插入图片描述
思考: 缺点也很明显,长作业进程会饥饿,会饿死…只要一直有人来买一杯奶茶,买两杯奶茶的人这辈子都喝不到了…
在这里插入图片描述

3.高响应比优先算法(HRRN)

描述:通过响应比=(等待时间+运行时间)/运行时间,来优先分配调度。还是买奶茶,买奶茶数量少的人,肯定不希望花很长的时间,做很少的事情。通过不满意度(买奶茶总共时间/买奶茶数),等比的让用户进行买奶茶。

在这里插入图片描述
总结:
在这里插入图片描述
思考:虽然这个算法已经很好了,但是没有区分任务的紧急程度。在沙漠中快渴死的一群人,都想先舔一口奶茶再说吧。

三种算法的比较

以上三种算法都是对于早期批处理系统的调度算法
在这里插入图片描述

4.时间片轮转算法(RR)

描述:类似于先来先服务算法,只不过每次只服务一个时间片,服务后的进程重新排到就绪队列末尾,直到服务完成。还是买奶茶,如果时间片为2,每人先给2杯奶茶,然后到后面重新排队。

时间片为2时:
在这里插入图片描述
在这里插入图片描述
时间片为5时:
在这里插入图片描述
思考:如果轮流时间片太长,就会导致每个进程执行完后再轮流,增大了响应时间,退化成了先来先服务算法每人一次最多发100杯奶茶,跟普通排队买奶茶有什么区别…

5.优先级调度算法

非抢占式描述:优先级越高的进程,优先执行。这次用打菜,VIP优先,SVIP更优先,还是等前面人把4个菜打完。
在这里插入图片描述

抢占式描述:优先级越高的进程,抢先执行。这次用打菜,VIP优先,SVIP更优先,这次不是插队了,菜都不等你打完,VIP就是嚣张。
在这里插入图片描述
补充
在这里插入图片描述
思考
在这里插入图片描述

6.多级反馈队列调度算法

描述:通过多级队列,队列优先级从高到底,时间片从低到高,极大的平衡了各自调度算法的优缺点。沙漠中刚走出来的人,(时间片)先喝一杯奶茶为了(优先级)活命。再喝2杯奶茶解决温饱,再喝4杯奶茶为了享受。
在这里插入图片描述
注意:还未执行完毕的时间片被抢占了,会回到当前队列等待。你在喝完第1杯奶茶解决温饱时,有人刚从沙漠走出了走出来,他先喝一杯活命,你继续喝第2杯奶茶

三种算法的对比总结

在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值