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

news/2024/4/25 1:52:29/文章来源:https://blog.csdn.net/qq_67720621/article/details/129001868

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.luyixian.cn/news_show_257108.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

二十种题型带你复习《概率论与数理统计》得高分(高数叔)

题型一 事件及概率的运算 知识点 注意: 1 互斥与对立事件 2 事件的差 注意: 1 德摩根律注意: 1 加法公式 2 减法公式(事件的差)题目 注意: 1 填空题注意: 1 德摩根律 2 三个事件的和的公式 3 两个事件的积事件为…

flurry+atos crash代码定位

flurry 崩溃日志代码定位 用symbolicatecrash工具分析iOS Crash文件通过atos符号化崩溃报告 1.写测试crash代码(方便检测最后crash是否定位正确 **MineViewController-xima方法-485行) 2.代码中flurry sdk打开crash追踪(默认为NO&#xff0…

趣味三角——第10章——(sinx)/x

第10章 函数(sinx)/x I call our world Flatland, not because we call it so, but to make its nature clear to you, my happy readers, who are privileged to live in Space. (我称我们的世界为平面国,这样称呼它并不是我的本意,而是为了让你们明…

程序员必备小众又实用的网站,你知道几个?

程序员是世人眼中的高薪职业,虽然亚历山大,但是年收入非常可观。 职场上的程序员有很多所谓的标签, 比如:秃头,找不到女朋友,和产品经理的斗智斗勇等等.... 可以说,一个程序员的必备素养就是…

【手写 Vuex 源码】第十篇 - Vuex 命名空间的实现

一,前言 上一篇,主要介绍了 Vuex 响应式数据和缓存的实现,主要涉及以下几个点: Vuex 的响应式实现原理;响应式核心方法 resetStoreVM;commit 和 dispatch 的处理; 本篇,继续介绍 …

基于ChatGPT +Node.js的基本使用

一、简介 最近,围绕ChatGPT和OpenAI的话题是层出不穷,国内外的技术工作者都掀起了一股学习OpenAI的技术浪潮,甚至有很多的媒体预测OpenAI将会带来行业的革命,而国外一些大的企业也将OpenAI视为重要的竞争对手,比如Google和微软。 事实上,OpenAI 可以应用于任何涉及理解…

前端学习第一阶段——第五章(上)

5-1 CSS基本选择器 01-CSS层叠样式表导读 02-CSS简介 03-体验CSS语法规范 04-CSS代码风格 05-CSS选择器的作用 06-标签选择器 07-类选择器 08-使用类选择器画盒子 09-类选择器特殊使用-多类名 10-id选择器 11-通配符选择器 5-2 CSS样式 12-font-family设置字体系列 13-font-s…

jdk-concurrentHashMap(1.8)源码学习

上文:jdk-HashMap(1.8)源码学习concurrentHashMap介绍concurrentHashMap是一个高性能、线程安全的HashMap,底层数据结构主要还是以数组链表红黑树实现与HashMap的结构是一致的。concurrentHashMap1.7和1.8的区别?对比名称1.71.8备注线程安全是…

简单易用的以太网IO控制卡:C#读写测试

今天,正运动小助手给大家分享一下运动控制卡之ECIO系列IO卡的用法,C#语言进行ECI IO卡的开发以及测试多个IO读写的交互速度。 一、ECI0032/ECI0064 IO卡的硬件介绍 1.功能介绍 ECI0032/ECI0064等ECI0系列运动控制卡支持以太网、RS232通讯接口和电脑相…

Windows提权流程及手法

Windows提权一、信息收集二、WinSystemHelper三、Sherlock四、MSF提权五、参考链接一、信息收集 收集本机systeminfo中补丁信息 在提权辅助平台 https://i.hacking8.com/tiquan/ 中查询可利用exp 查询exp,选择对应的Exp下载运行 https://i.hacking8.com/ https:/…

华为OD机试 - 去除多余空格(Python)| 真题+思路+代码

去除多余空格 题目 去除文本多余空格,但不去除配对单引号之间的多余空格。给出关键词的起始和结束下标,去除多余空格后刷新关键词的起始和结束下标。 条件约束: 不考虑关键词起始和结束位置为空格的场景;单词的的开始和结束下标保证涵盖一个完整的单词,即一个坐标对开…

二叉树进阶--二叉搜索树

目录 1.二叉搜索树 1.1 二叉搜索树概念 1.2 二叉搜索树操作 1.3 二叉搜索树的实现 1.4 二叉搜索树的应用 1.5 二叉搜索树的性能分析 2.二叉树进阶经典题: 1.二叉搜索树 1.1 二叉搜索树概念 二叉搜索树又称二叉排序树,它或者是一棵空树,…

最后一个单词的长度-力扣58-java

一、题目描述给你一个字符串 s,由若干单词组成,单词前后用一些空格字符隔开。返回字符串中 最后一个 单词的长度。单词 是指仅由字母组成、不包含任何空格字符的最大子字符串。示例 1:输入:s "Hello World"输出&#x…

2.8、调度算法的评价指标

1、CPU 利用率 由于早期的 CPU 造价极其昂贵, 因此人们会希望让CPU尽可能多地工作\color{red}希望让 \texttt{CPU} 尽可能多地工作希望让CPU尽可能多地工作 CPU利用率\color{red}\texttt{CPU}利用率CPU利用率:指 CPU “忙碌” 的时间占总时间的比例。 利…

基于VS调试分析 + 堆栈观察问题代码段

文章目录问题代码段1 —— 阶乘之和问题代码段2 —— 越界的危害① 发现问题② 分析问题③ 思考问题【⭐堆栈原理⭐】④ 解决问题【DeBug与Release】👨程序员与测试人员👩✒总结与提炼问题代码段1 —— 阶乘之和 先来看一道C语言中比较基础的题目&#x…

GAN系列基础知识

原始值函数 原始GAN的值函数是 minGmaxDV(D,G)Ex∼pdata(x)[logD(x)]Ez∼pz(z)[log(1−D(G(z)))]min_Gmax_DV(D,G) E_{x \sim p_{data}(x)}[logD(x)]E_{z \sim p_{z}(z)} [log(1-D(G(z)))]minG​maxD​V(D,G)Ex∼pdata​(x)​[logD(x)]Ez∼pz​(z)​[log(1−D(G(z)))] 其中Ex…

【C++】类和对象---需掌握的功能

目录1.初始化列表1.1构造函数赋值1.2初始化列表格式:编译器执行的顺序:特性:1.3explicit关键字类型替换过程多参数构造函数类型替换(C11)2.static成员编程题3.匿名对象4.友元4.1友元函数4.2友元类5.内部类6.拷贝对象时…

java中字符串首字母变大写的两种方法

public class 快速排序 {public static void main(String[] args) {int[] arr new int[]{5, 2, 9, 6, 22, 21};//System.out.println(Arrays.toString(kuaiPai(arr)));// System.out.println(Arrays.asList("dada", "dda", "ddd"));//System.o…

学完Scrapy-Splash秒变爬虫大佬

在做爬虫的时候,大多数的网页中会存在数据动态加载的部分,而且多数都是后期渲染上的。正常情况下爬虫程序仅能爬取被渲染过的数据。因此我们看到的数据也许并非是爬虫直接获取来的。 而scrapy-splash担任了一个中间人的角色,程序通过splash服…

Vue3代码初体验找不同

文章目录🌟 写在前面🌟 代码分析🌟 写在最后🌟 写在前面 专栏介绍: 凉哥作为 Vue 的忠实 粉丝输出过大量的 Vue 文章,应粉丝要求开始更新 Vue3 的相关技术文章,Vue 框架目前的地位大家应该都晓…