2.10、时间片轮转、优先级调度算法、多级反馈队列调度算法

image-20230129183902251

Tips:各种调度算法的学习思路

  1. 算法思想

  2. 算法规则

  3. 这种调度算法是用于作业调度还是进程调度?

  4. 抢占式? 非抢占式?

  5. 优点和缺点

  6. 是否会导致 饥饿 \color{red}饥饿 饥饿

    某 进程/作业 长期得不到服务


1、时间片轮转(RR, Round-Robin)

image-20230129190722131


1.1、例子

常用于分时操作系统,更注重 “响应时间”,因而此处不计算周转时间

例题:各进程到达就绪队列的时间、需要的运行时间如下表所示。使用时间片轮转调度算法,计算各进程的等待时间、平均等待时间、周转时间、平均周转时间、带权周转时间、平均带权周转时间。

image-20230129184754195

image-20230129185103652

image-20230129185248581

image-20230129185315688


时间片为 5 的情况

image-20230129185611326


若按照先来先服务调度算法

image-20230129185644418


1.2、时间片太大/小的影响

如果时间片太大,使得每个进程都可以在一个时间片内就完成,

  • 则时间片轮转调度算法退化先来先服务调度算法,

    并且 会增大进程响应时间 \color{red}会增大进程响应时间 会增大进程响应时间

    比如:系统中有 10 个进程在并发执行,如果时间片为 1 秒,则一个进程被响应可能需要等 9 秒…

    • 也就是说,如果用户在自己进程的时间片外通过键盘发出调试命令,

      可能需要等待 9 秒才能被系统响应

    • 其实就是时间片太长了,导致后面的进程等待时间也会太长

  • 因此时间片不能太大

另一方面,进程调度、切换是有时间代价的(保存、恢复运行环境),

  • 因此如果时间片太小,会导致进程切换过于频繁(不断地频繁切换用户态与内核态),系统会花大量的时间来处理进程切换,

    从而导致实际用于进程执行的时间比例减少。

  • 可见时间片也不能太小

一般来说,设计时间片时要让切换进程的开销占比不超过 1 % 1\% 1%

2、优先级调度算法

image-20230129194948005


例题:各进程到达就绪队列的时间、需要的运行时间、进程优先数如下表所示。使用非抢占式优先级调度算法,分析进程运行情况。(注:优先数越大,优先级越高)

2.1、非抢占式的

image-20230129191523357

.2.2、抢占式的

image-20230129193143525

2.3、静态/动态优先级

就绪队列未必只有一个,可以按照不同优先级来组织。

  • 另外,也可以把优先级高的进程排在更靠近队头的位置

根据优先级是否可以动态改变,可将优先级分为静态优先级动态优先级两种。

静态优先级 \color{red}静态优先级 静态优先级

  • 创建进程时确定,之后一直不变。

动态优先级 \color{red}动态优先级 动态优先级

  • 创建进程时有一个初始值,之后会根据情况动态地调整优先级。

如何合理地设置各类进程地优先级?

通常:

  • 系统进程优先级 高于 用户进程
  • 前台进程优先级 高于 后台进程
  • 操作系统更偏好 I/O 型进程(或称 I/O 繁忙型进程)

注:与 I/O 型进程相对的是计算型进程(或称 CPU 繁忙型进程)

I/O 设备和 CPU 可以并行工作。如果优先让 I/O 繁忙型进程优先运行的话,

  • 则越有可能让 I/O 设备尽早地投入工作,则资源利用率、系统吞吐量都会得到提升
  • I/O 花费的时间一般比较长,尽早处理完 I/O

若采用 CPU 繁忙型进程的话,

  • CPU 优先于 I/O,则 CPU 运行完之后,此时后备队列中没有队列了,需要等待 I/O 设备输入

如果采用的是动态优先级,什么时候应该调整?

可以从追求公平、提升资源利用率等角度考虑

  • 如果某进程在就绪队列中等待了很长时间,则可以适当提升其优先级

  • 如果某进程占用处理机运行了很长时间,则可适当降低其优先级

  • 如果发现一个进程频繁地进行 I/O 操作,则可适当提升其优先级

HRRN 高响应比优先调度算法,可以认为是动态地优先级调度算法

3、多级反馈队列调度算法

FCFS 算法的优点是公平

SJF 算法的优点是能尽快处理完短作业,平均等待/周转时间等参数很优秀

时间片轮转调度算法可以让各个进程得到及时的响应

优先级调度算法可以灵活地调整各种进程被服务的机会

能否对其他算法做个折中权衡? 得到一个综合表现优秀平衡的算法呢?

  • 多级反馈队列调度算法

image-20230129204837476

由于进程源源不断地到来会使得高优先级的队列始终非空,而低优先级的队列需要等待高优先级的队列为空时才能使用,导致低优先级队列中的进程饥饿


image-20230129204010547

4、总结

算法可抢占?优点缺点会导致饥饿?补充
时间片轮转抢占式公平;适用于分时系统频繁切换有开销;不区分优先级不会时间片太大或太小导致的影响
优先级调度有的抢占式的,有的非抢占式的区分优先级;适用于实时系统可能导致饥饿动态/静态优先级。各类型型进程如何设置优先级?如何调整优先级
多级反馈队列抢占式平衡优秀;6(9 翻了)一般不说它优缺点;不过可能导致饥饿

:比起早期的批处理操作系统来说,由于计算机造价大幅降低,因此之后出现的交互式操作系统(包括分时操作系统、实时操作系统等)更注重系统的响应时间、公平性、平衡性等指标。

  • 而这几种算法恰好也能较好地满足交互式系统的需求。

因此这三种算法适合用于 交互式系统 \color{red}交互式系统 交互式系统

  • 比如 UNIX 使用的就是多级反馈队列调度算法
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值