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

news/2025/1/15 18:19:31/

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 使用的就是多级反馈队列调度算法

http://www.ppmy.cn/news/24488.html

相关文章

【SPSS】数据预处理基础教程(附案例实战)

🤵‍♂️ 个人主页:艾派森的个人主页 ✍🏻作者简介:Python学习者 🐋 希望大家多多支持,我们一起进步!😄 如果文章对你有帮助的话, 欢迎评论 💬点赞&#x1f4…

30个HTML+CSS前端开发案例(四)

30个HTMLCSS前端开发案例&#xff08;17-20&#xff09;鼠标移入文字加载动画效果代码实现效果鼠标悬停缩放效果实现代码效果鼠标移入旋转动画实现代码效果loding加载动画实现代码效果资源包鼠标移入文字加载动画效果 代码实现 <!DOCTYPE html> <html><head&g…

华为OD真题_工位序列统计友好度最大值(100分)(C++实现)

题目描述 工位由序列F1,F2…Fn组成,Fi值为0、1或2。其中0代表空置,1代表有人,2代表障碍物。 1、某一空位的友好度为左右连续老员工数之和 2、为方便新员工学习求助,优先安排友好度高的空位 给出工位序列,求所有空位中友好度的最大值。 输入描述 第一行为工位序列:F1,F…

Allegro如何更改铜皮显示密度操作指导

Allegro如何更改铜皮显示密度操作指导 用Allegro做PCB设计的时候,铜皮正常显示模式如下图 铜皮的密度是基本填充满的,Allegro支持更改铜皮的显示密度 如下图 如何更改密度,具体操作如下 点击setup

opencv的环境搭建

大家好&#xff0c;我是csdn的博主&#xff1a;lqj_本人 这是我的个人博客主页&#xff1a; lqj_本人的博客_CSDN博客-微信小程序,前端,python领域博主lqj_本人擅长微信小程序,前端,python,等方面的知识https://blog.csdn.net/lbcyllqj?spm1011.2415.3001.5343哔哩哔哩欢迎关注…

用一年时间脱胎换骨

生活习惯篇早睡早起11点30之前必须睡觉按时吃饭特别是早餐控糖&#xff0c;少吃甜食早起刷牙后&#xff0c;喝一杯温水保持身材&#xff0c;养成运动健身的习惯养成持续写作的习惯记录选题&#xff0c;金句&#xff0c;素材断舍离&#xff0c;定期整理&#xff0c;把不用的东西…

JUC并发编程 Ⅱ -- 共享模型之管程(上)

文章目录共享带来的问题临界区 Critical Section竞态条件 Race Conditionsynchronized 解决方案synchronized语法解决方案思考面向对象改进方法上的 synchronized线程八锁变量的线程安全分析成员变量和静态变量是否线程安全&#xff1f;局部变量是否线程安全&#xff1f;局部变…

Matlab绘制隐函数总结-二维和三维

1.二维隐函数 二维隐函数满足f(x,y)0f(x,y)0f(x,y)0&#xff0c;这里无法得到yf(x)yf(x)yf(x)的形式。不能通过普通函数绘制。 我们要关注的是使用fplot函数和fimplicit函数。 第1种情况&#xff1a;基本隐函数 基本的隐函数形式形如&#xff1a; x2y22x2(x2y2)12x^{2}y^{…