【操作系统】进程管理——调度算法(个人笔记)

news2025/1/12 2:57:20

学习日期:2024.7.4

内容摘要:各种调度算法的思想、规则、优缺点介绍


为什么要有调度算法?

调度算法就好比一群人在银行办理业务,准备办理业务的人就是进程/作业,银行窗口的工作人员就是CPU,进程往往是比CPU数目多的。调度算法就是决定,哪些人可以先被服务,哪些人要排队等待。

适用于批处理系统的调度算法

先来先服务(FCFS)

先来先服务算法(FCFS,First Come First Serve),最简单的做法就是先来后到,先到银行的人先办业务。但是,有可能先到的“人”是来办理贷款的,谈了好几个小时都没谈完,后面一群人都只需要几分钟就能办完业务,但是都得被迫堵在后面排队,显然很不方便。

算法思想:主要按“公平”的角度考虑。(类似生活中排队办业务)

算法规则:按照作业/进程到达的先后顺序服务。

是否抢占:非抢占式算法。

优点:公平、算法实现很简单

缺点:排在长作业后面的短作业需要等待很长时间,带权周转时间很大,对短作业来说用户体验很差。即FCFS算法对长作业有利,对短作业不利。

是否会导致饥饿:不会,只要进程一直等待一定能得到服务。(饥饿:进程一直得不到服务)

短作业优先(SJF)

短作业优先算法(SJF,Shortest Job First),工作人员先服务任务简单,耗时少的客户,快速搞定,不让他们一直等。但是,如果源源不断的一直有任务简单耗时少的客户,想办大业务的客户等到银行下班也不能办理业务。

SPF就是Shortest Process First,短进程优先算法,除调度对象外没有区别。

算法思想:追求最少的平均等待时间、平均(带权)周转时间(详见《调度算法的评价指标》

注意前提!当所有进程几乎同时到达时,采用SJF调度算法的平均等待时间和平均周转时间最少。 

算法规则最短的作业/进程优先得到服务(“最短”指的是要求服务时间最短

                  每次调度时,选择当前已经到达的作业中运行时间最短的作业。

是否抢占:非抢占式算法,但也有抢占式的版本SRTN(Shortest Remaining Time Next,最短剩余时间优先算法)

        SRTN在就绪队列改变时(有新进程加入,当前进程完成)就需要调度,如果新进程的剩余时间比当前正在运行的进程的剩余时间更短,则由新进程抢占处理机,当前运行的进程重新回到就绪队列

        SRTN调度算法的平均等待时间和平均周转时间最少

优点:平均等待时间和平均周转时间较小

缺点:不公平,对短作业有利,对长作业不利,且作业的运行时间是由用户提供的估计值,并不是精确值,不一定能做到真正的短作业优先。

是否会导致饥饿:会,如果源源不断的有短作业到来,长作业就会一直得不到服务。

思考:FCFS算法只考虑了进程的等待时间而不考虑运行时间,导致了对短作业不友好,而SJF算法又只考虑了运行时间不考虑等待时间,对长作业不友好,甚至会造成长作业饥饿,这两种算法都有点太极端了,那么能不能设计一个同时考虑到等待时间和运行时间的算法呢?于是,高响应比优先(HRRN)算法应运而生。

高响应比优先(HRRN)

高响应比优先算法(HRRN,Highest Response Ratio Next),引入了响应比这一概念来衡量作业的优先级,先为响应比高的作业提供服务。

响应比=(等待时间+要求服务时间)/要求服务时间,即1+(等待时间/要求服务时间)

当等待时间很长时,分子较大,响应比高。当要求服务时间较小时,分母较小,响应比高。这样,等待时间长的和任务简单耗时少的进程都会有较高的优先级,综合了以上两种方法的优点。

算法思想:综合考虑进程的等待时间和要求服务的时间

算法规则:在每次调度时先计算各个作业/进程的响应比,选择响应比最高的服务

是否抢占:非抢占式算法,当前运行的作业主动放弃处理机时,计算所有就绪队列的进程的响应比,选择响应比最高的进程上处理机。

优点:综合考虑了等待时间和运行时间,综合了SJF和FCFS的优点。

缺点:无明显缺点,但作业的运行时间在实际运行前是估计值,不是精确值,可能会有影响。

是否会导致饥饿:不会,对于长作业来说,随着等待时间越来越久,其响应比也会越来越大。

以上三种算法都同时适用于作业调度和进程调度,主要关心对用户的公平性,平均周转时间、平均等待时间等评价系统整体性能的指标,但是不关心“响应时间”,也不区分任务的紧急程度,对于用户来说交互性很差,因此以上三种算法一般适用于早期的批处理操作系统。因为此时计算机非常昂贵,个人计算机较少,通常使用公用计算机,人们更追求系统的整体性能,而不是很在乎个人的使用体验如何。


适用于交互式系统的调度算法

时间片轮转(RR)

时间片轮转调度算法(RR,Round-Robin),时间片:操作系统规定的一定量的时间。

如果时间片太大,每个进程都能在一个时间片内完成,则RR算法会退化为先来先服务算法,失去了RR算法的意义。

另一方面,进程的调度、切换是有时间代价的(保存和恢复运行环境),如果时间片太小,会导致进程切换过于频繁,系统会花大量时间来处理进程切换,从而导致实际用于进程执行的时间比例减少。

算法思想:公平、轮流地为各个进程服务,让每个进程在一定的时间间隔内都可以得到响应

算法规则:按照各个进程到达就绪队列的顺序,轮流人各个进程执行一个时间片(如100ms),若在时间片内进程没有执行完,则剥夺处理机,将进程放到就绪队列尾重新排队,进行调度;若执行完,则主动下处理机,进行调度。每次调度时,选择就绪队列头的进程执行一个时间片。

如果在某一时刻当前进程的时间片用完,且刚好有新进程到达,则默认新到达的进程先进入就绪队列,轮转下来的进程后进入。

是否抢占:是,若进程未在时间片内运行完,会被剥夺处理机。

适用场景:仅用于进程调度,只有作业放入了内存建立了相应的进程后,才能被分配处理机时间片

优点:公平,响应快,适用于分时操作系统。

缺点:高频率的进程切换会导致一定的时间开销,不区分任务的紧急程度,只按时间片轮转。

是否会导致饥饿:不会,随着时间片轮转一定能轮转到每个等待的进程。

优先级调度

优先级调度算法

算法思想:随着实时操作系统的出现,一些应用场景需要根据任务的紧急程度来决定处理顺序。

算法规则:每个进程/作业都有各自的优先级,调度时选择优先级最高的进程/作业,如果是考试做题,题目中会给出进程/作业对应的优先数,优先数越大越优先。当优先级相同时,选择更早进入就绪队列的进程。

补充:

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

②根据优先级是否可以改变,可以分为静态优先级和动态优先级两种,静态优先级的优先数在创建进程时确定,之后不会改变,而动态优先级的进程在创建时有一个优先数的初始值,但之后会根据情况调整。

当使用动态优先级进程时,进程等待了很长时间,或频繁的进行I/O操作,就可以提升其优先级。当进程长时间占用处理机时,可以降低其优先级。

高响应比优先(HRRN)算法,在某种意义上来说,就是一种动态优先级调度算法。

③系统进程优先级高于用户进程,前台进程优先级高于后天进程,操作系统更偏好I/O繁忙型进程(与I/O繁忙型进程相对的是CPU繁忙型进程),因为I/O设备和CPU可以并行工作,如果优先让其运行,则越有可能让I/O设备尽早投入工作。

是否抢占:有抢占式和非抢占式两种版本,非抢占式只需要在进程主动放弃处理机时调度即可,而抢占式需要在每次就绪队列变化时检查是否会发生抢占。

适用场景:进程调度和作业调度,甚至包括I/O调度。

优点:可用优先级灵活区分紧急程度和重要程度,适用于实时操作系统,调度灵活。

缺点:可能会导致低优先级进程饥饿。

是否会导致饥饿:会,如果源源不断的有高优先级作业进入,会导致低优先级的进程饥饿。

 

思考:FCFS算法的有点是公平,SJF算法的优点是平均等待和周转时间小,RR算法能让各个进程得到及时的响应,优先级调度算法可以灵活的调度各种进程,那么能否对上面的算法做一个折中权衡,得到一个综合表现优秀的算法呢?

好消息:算法很优秀    坏消息:全缝了,超级缝合怪

多级反馈队列

多级反馈队列调度算法

算法思想:对其它调度算法的折中权衡

算法规则:1.设置多级就绪队列,各级队列优先级从高到低,时间片从小到大。(SJF

                  2.新进程到达时先进入第一级队列,按FCFS原则排队等待被分配时间片,若用完时间                        片以后进程还未结束,则进程进入下一级队列队尾,若已经在最下级队列,则放回队                       尾。(RR

                  3.只有k级队列为空时,才会为k+1级队头的进程分配时间片。(优先级

是否抢占:抢占式,在k级队列的进程运行过程中,若更上级的队列(1~k-1级)进入了新进程,由于新进程的优先级更高,会抢占处理机,原来运行的放回k级队列的队尾。

适用场景:仅用于进程调度

优点:相对公平(FCFS的优点);每个新到达的进程都可以很快得到响应(RR的优点);短进程只需要较少的时间就能完成(SJF的优点);不必估计进程的运行时间,可灵活调整对各类进程的偏好程度。(拓展:可以将因I/O而阻塞的进程放回原队列,而非降级队列,这样可以保证I/O进程的高优先级)

缺点:可能会导致低优先级的进程饥饿。

是否会导致饥饿:会,同SJF,如果源源不断的有短进程到达,高优先的前几级队列一直有进程,较低优先级的进程就会饥饿。

比起早期的批处理操作系统,由于计算机造价大幅降低,交互式操作系统(包括分时操作系统、实时操作系统等)更注重系统的响应时间、公平性、平衡性等指标,而这几种算法能较好的满足交互式系统的需求,比如UNIX使用的就是多级反馈队列调度算法。


 内容总结自王道计算机考研《操作系统》 和 人民邮电出版社《操作系统导论》

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1904909.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【论文解读】可灵(快手)|LivePortrait:具有拼接和重定向控制的高效肖像动画

📜 文献卡 英文题目: LivePortrait: Efficient Portrait Animation with Stitching and Retargeting Control;作者: Jianzhu Guo; Dingyun Zhang; Xiaoqiang Liu; Zhizhou Zhong; Yuan Zhang; Pengfei Wan; Di ZhangDOI: 10.48550/arXiv.2407.03168摘要翻译: *旨在…

为什么固定尺寸 AdSense 广告依旧会出现并非指定的尺寸广告?

经常在网站上投放谷歌 AdSense广告的站长应该都碰到过,明明投放的是固定尺寸的广告位里旧会出现并非指定尺寸的AdSense 广告,很诡异的感觉。其实这都是因为你的 AdSense 账号广告优化造成的,其中里面就包含了广告尺寸优化,只需要在…

嵌入式鸿蒙系统openharmony编译方法详解

大家好,时光如梭,今天主要给大家分享一下,鸿蒙系统的使用方法,以及源码该如何编译,其中要注意的细节有哪些? 第一:OpenHarmony系统简介 OpenHarmony 是由开放原子开源基金会(OpenAtom Foundation)孵化及运营的开源项目, 目标是面向全场景、全连接、全智能时代,基于…

浏览器插件利器-allWebPluginV2.0.0.14-stable版发布

allWebPlugin简介 allWebPlugin中间件是一款为用户提供安全、可靠、便捷的浏览器插件服务的中间件产品,致力于将浏览器插件重新应用到所有浏览器。它将现有ActiveX插件直接嵌入浏览器,实现插件加载、界面显示、接口调用、事件回调等。支持谷歌、火狐等浏…

puppeteer 爬虫初探

1. puppeteer 和 puppeteer-core 安装 puppeteer 会默认下载一个最新版本的 chrome 浏览器; 安装 puppeteer-core ,不会安装 chrome, 若要程序打开浏览器运行时,需手动指定电脑系统安装的 chrome 浏览器路径; 2. puppeteer-core …

【TB作品】51单片机 Proteus仿真 超声波读取+LCD1602显示仿真12MHZ

实验报告:51单片机 Proteus仿真 超声波读取LCD1602显示仿真 一、实验背景 本实验旨在使用51单片机(AT89C51)结合超声波传感器HC-SR04和LCD1602液晶显示屏,通过Proteus仿真平台实现超声波测距功能,并将测得的距离显示…

# [0705] Task06 DDPG 算法、PPO 算法、SAC 算法【理论 only】

easy-rl PDF版本 笔记整理 P5、P10 - P12 joyrl 比对 补充 P11 - P13 OpenAI 文档整理 ⭐ https://spinningup.openai.com/en/latest/index.html 最新版PDF下载 地址:https://github.com/datawhalechina/easy-rl/releases 国内地址(推荐国内读者使用): 链…

SAP已下发EWM的交货单修改下发状态

此种情况针对EWM未接收到ERP交货单时,可以使用此程序将ERP交货单调整为未分配状态,在进行调整数据后,然后使用VL06I(启用自动下发EWM配置,则在交货单修改保存后会立即下发EWM)重新下发EWM系统。 操作步骤如…

去O化神器 Exbase

随着去O化进程推动,很多旧业务依赖的oracle数据库,都需要实现做数据库的替换,当下能很好兼容Oracle,并实现异构数据库之间转换的工具并不多。这里给大家推荐一个商业工具数据库迁移工具exbase(北京海量)&am…

超高精电容传感器PCAP01调试+LABVIEW数据可视化调试手记

PCAP01超高精电容传感芯片STM32LabView可视化 文章目录 PCAP01超高精电容传感芯片STM32LabView可视化一、PCAP01介绍1.1、PCAP01引脚定义1.2、电容测量1.3、温度测量1.4、PCAP典型测试电路 二、PCAP01的STM32驱动2.1、SPI协议配置2.2、PCAP01浮空电容测量内部温度测量操作流程 …

秋招提前批面试经验分享(上)

⭐️感谢点开文章👋,欢迎来到我的微信公众号!我是恒心😊 一位热爱技术分享的博主。如果觉得本文能帮到您,劳烦点个赞、在看支持一下哈👍! ⭐️我叫恒心,一名喜欢书写博客的研究生在读…

【LVGL-SquareLine Studio】

LVGL-SquareLine Studio ■ SquareLine Studio-官网下载地址■ SquareLine Studio-参考博客■ SquareLine Studio-安装■ SquareLine Studio-汉化■ SquareLine Studio-■ SquareLine Studio-■ SquareLine Studio-■ SquareLine Studio-■ SquareLine Studio- ■ SquareLine S…

云动态摘要 2024-07-07

给您带来云厂商的最新动态,最新产品资讯和最新优惠更新。 最新优惠与活动 数据库上云优选 阿里云 2024-07-04 RDS、PolarDB、Redis、MongoDB 全系产品新用户低至首年6折起! [免费体验]智能助手ChatBI上线 腾讯云 2024-07-02 基于混元大模型打造,可通过对话方式生成可视化…

【vue组件库搭建06】组件库构建及npm发包

一、格式化目录结构 根据以下图片搭建组件库目录 index.js作为入口文件,将所有组件引入,并注册组件名称 import { EButton } from "./Button"; export * from "./Button"; import { ECard } from "./Card"; export * fr…

并查集(还有反集也在)

一.定义 定义: 并查集是一种树型的数据结构,用于处理一些不相交集合的合并及查询问题(即所谓的并、查)。比如说,我们可以用并查集来判断一个森林中有几棵树、某个节点是否属于某棵树等。 主要构成: 并查集…

如何将Grammarly内嵌到word中(超简单!)

1、下载 安装包下载链接见文章结尾 官网的grammarly好像只能作为单独软件使用,无法内嵌到word中🧐🧐🧐 2、双击安装包(安装之前把Office文件都关掉) 3、安装完成,在桌面新建个word文件并打开 注…

【Spring AOP 源码解析前篇】什么是 AOP | 通知类型 | 切点表达式| AOP 如何使用

前言(关于源码航行) 在准备面试和学习的过程中,我阅读了还算多的源码,比如 JUC、Spring、MyBatis,收获了很多代码的设计思想,也对平时调用的 API 有了更深入的理解;但过多散乱的笔记给我的整理…

PXIe-7976【K410T】

起售价 RMB 152,880.00 块RAM(BRAM): 28620 kbit 动态RAM(DRAM): 2 GB FPGA: Kintex-7 410T PXI背板链路: PCI-Express Gen2 x 8 FPGA片: 63550 DSP片: 1540

240707-Sphinx配置Pydata-Sphinx-Theme

Step A. 最终效果 Step B. 为什么选择Pydata-Sphinx-Theme主题 Gallery of sites using this theme — PyData Theme 0.15.4 documentation Step 1. 创建并激活Conda环境 conda create -n rtd_pydata python3.10 conda activate rtd_pydataStep 2. 安装默认的工具包 pip in…