2.2.0 交互式系统调度算法
知识总览
2.2.0.1 时间片轮转
知识点 | 说明 |
---|---|
英文名 | RR,Round-Robin |
算法思想 | 公平地、轮流地为各个进程服务,让每个进程在一定时间间隔内都可以得到响应 |
算法规则 | 按照各进程到达就绪队列的顺序,轮流让各个进程执行一个时间片。若进程未在一个时间片内执行完,则剥夺处理机,将进程重新放到就绪队列队尾重新排队 |
用于进程/作业调度 | 用于进程调度,只有作业放入内存建立了相应的进程后,才能被分配处理机时间片 |
是否可抢占? | 若进程未能在时间片内运行完,将被强行剥夺处理机使用权,因此时间片轮转调度算法属于抢占式的算法。由时钟装置发出时钟中断来通知CPU时间片已到 |
优缺点 | 优点:公平;响应快,适用于分时操作系统 缺点:由于高频率的进程切换,因此有一定开销;不区分任务的紧急程度 |
是否会导致饥饿 | 否 |
例题:各进程到达就绪队列的时间、需要的运行时间如下表所示。使用
时间片轮转
调度算法,分析时间片大小分别是2、5时进程运行情况。
需要注意的是,如果时间片太大,使得每个进程都可以在一个时间片内就完成,那么时间片轮转调度算法就会退化为先来先服务调度算法,并且会增大进程响应时间,因此时间片不能太大。
另一方面,进程调度、切换是有时间代价的(保存、恢复允许环境),因此如果时间片太小,会导致进程切换过于频繁,系统会花大量的时间来处理进程切换,从而导致实际用于进程执行的时间比例减少,可见时间片也不能太小。
一般来说,设计时间片时要让切换进程的开销占比不超过1%。
2.2.0.2 优先级调度算法
知识点 | 说明 |
---|---|
算法思想 | 随着计算机的发展,特别是实时操作系统的出现,越来越多的应用场景需要根据任务的紧急程度来决定处理顺序 |
算法规则 | 各个作业/进程有各自的优先级,调度时选择优先级最高的作业/进程 |
用于进程/作业调度 | 既可以用于作业调度,也可用于进程调度。甚至还会用于之后学习的I/O调度中 |
是否可抢占? | 抢占式、非抢占式都有。做题时的区别在于;非抢占式只需在进程主动放弃处理机时进行调度即可,非抢占式还需在就绪队列变化时,检查是否会发生抢占 |
优缺点 | 优点:用优先级区分紧急程度、重要程度,适用于实时操作系统,可灵活地调整对各种作业/进程的偏好程度。 缺点:若源源不断地有高优先级进程到来,则可能导致饥饿。 |
是否会导致饥饿 | 会 |
2.2.0.3 多级反馈队列
让我们回顾一下前面学习的各种调度算法:FCFS算法的优点是公平;SJF算法的优点是能尽快处理完短作业,平均等待/周转时间等参数很优秀;而时间片轮转调度算法可以让各个进程得到及时的响应;优先级调度算法可以灵活地调整各种进程被服务的机会。
综上所述,我们能否对其他算法做一个折中权衡,得到一个综合表现优秀平衡的算法呢?根据这个想法,人们想出了多级反馈队列调度算法。