进程调度算法之时间片轮转调度(RR),优先级调度以及多级反馈队列调度
1.时间片轮转调度算法(RR)
round Robin
1.算法思想
公平地、轮流地为各个进程服务,让每个进程在一定时间间隔内都可以得到响应。
2.算法规则
按照各进程到达就绪队列的顺序,轮流让各个进程执行一个时间片(如100ms)。
若进程未在一个时间片内执行完,则剥夺处理机,将进程重新放到就绪队列队尾重新排队。
3.用于作业/进程调度
用于进程调度
(只有作业放入内存建立了相应的进程后,才能被分配处理机时间片)
4.是否可抢占
若进程未能在时间片内运行完,将被强行剥夺处理机使用权,因此时间片轮转调度算法属于抢占式的算法。
由时钟装置发出时钟中断来通知CPU时间片已到
5.优缺点
- 优点:公平;响应快,适用于分时操作系统;
- 缺点:由于高频率的进程切换,因此有一定开销;不区分任务的紧急程度。
6.是否会导致饥饿
不会
7.例题
各进程到达就绪队列的时间、需要的运行时间如下表所示。
使用时间片轮转调度算法,分析时间片大小分别是2、5时的进程运行情况。

时间片轮转调度算法:
轮流让就绪队列中的进程依次执行一个时间片(每次选择的都是排在就绪队列队头的进程)
1.时间片大小为2的情况:
(注:以下括号内表示当前时刻就绪队列中的进程、进程的剩余运行时间)




2.时间片大小为5的情况:

- 如果时间片太大,使得每个进程都可以在一个时间片内就完成,则时间片轮转调度算法退化为先来先服务调度算法,并且会增大进程响应时间。 因此时间片不能太大。
- 另一方面,进程调度、切换是有时间代价的(保存、恢复运行环境),因此如果时间片太小,会导致进程切换过于频繁,系统会花大量的时间来处理进程切换,从而导致实际用于进程执行的时间比例减少。可见时间片也不能太小。
一般来说,设计时间片时要让切换进程的开销占比不超过1%。
2.优先级调度算法
1.算法思想
随着计算机的发展,特别是实时操作系统的出现,越来越多的应用场景需要根据任务的紧急程度来决定处理顺序。
2.算法规则
每个作业/进程有各自的优先级,调度时选择优先级最高的作业/进程。
3.用于作业/进程调度
既可用于作业调度,也可用于进程调度。
甚至,还会用于在之后会学习的I/O调度中
4.是否可抢占
抢占式、非抢占式都有。
做题时的区别在于:
非抢占式只需在进程主动放弃处理机时进行调度即可,
而抢占式还需在就绪队列变化时,检查是否会发生抢占。
5.优缺点
- 优点:用优先级区分紧急程度、重要程度,适用于实时操作系统。可灵活地调整对各种作业/进程的偏好程度。
- 缺点:若源源不断地有高优先级进程到来,则可能导致饥饿
6.是否会导致饥饿
会
7.例题
1.题1:各进程到达就绪队列的时间、需要的运行时间、进程优先数如下表所示。
使用非抢占式的优先级调度算法,分析进程运行情况。(注:优先数越大,优先级越高)

非抢占式的优先级调度算法:
每次调度时选择当前已到达且优先级最高的进程。
当前进程主动放弃处理机时发生调度。

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

抢占式的优先级调度算法:
每次调度时选择当前已到达且优先级最高的进程。
当前进程主动放弃处理机时发生调度。
另外,当就绪队列发生改变时也需要检查是会发生抢占。

- 就绪队列未必只有一个,可以按照不同优先级来组织。另外,也可以把优先级高的进程排在更靠近队头的位置.
- 根据优先级是否可以动态改变,可将优先级分为静态优先级和动态优先级两种。
- 静态优先级:创建进程时确定,之后一直不变。
- 动态优先级:创建进程时有一个初始值,之后会根据情况动态地调整优先级。
8.如何合理设置各类进程的优先级:
- 系统进程优先级高于用户进程
- 前台进程优先级高于后台进程
- 操作系统更偏好l/O型进程(或称I/O繁忙型进程)
- 与l/O型进程相对的是计算型进程(或称CPU繁忙型进程)
I/O设备和CPU可以并行工作。
如果优先让I/O繁忙型进程优先运行的话,则越有可能让I/O设备尽早地投入工作,则资源利用率、系统吞吐量都会得到提升.
9.如果采用动态优先级,什么时候应该调整?
- 可以从追求公平、提升资源利用率等角度考虑
- 如果某进程在就绪队列中等待了很长时间,则可以适当提升其优先级
- 如果某进程占用处理机运行了很长时间,则可适当降低其优先级
- 如果发现一个进程频繁地进行l/O操作,则可适当提升其优先级
3.多级反馈队列调度算法
1.算法思想
对其他调度算法的折中权衡。
2.算法规则
- 设置多级就绪队列,各级队列优先级从高到低,时间片从小到大
- 新进程到达时先进入第1级队列,按FCFS原则排队等待被分配时间片,若用完时间片进程还未结束,则进程进入下一级队列队尾。如果此时已经是在最下级的队列,则重新放回该队列队尾。
- 只有第k级队列为空时,才会为k+1级队头的进程分配时间片
- 被抢占处理机的进程重新放回原队列队尾
3.用于作业/进程调度
用于进程调度
4.是否可抢占
抢占式的算法。
在 k 级队列的进程运行过程中,
若更上级的队列(1~k-1级)中进入了一个新进程,
则由于新进程处于优先级更高的队列中,
因此新进程会抢占处理机,原来运行的进程放回k级队列队尾。
5.优缺点
对各类型进程相对公平(FCFS的优点)﹔
每个新到达的进程都可以很快就得到响应(RR的优点)﹔
短进程只用较少的时间就可完成(SPF的优点);
不必实现估计进程的运行时间(避免用尸作假);
可灵活地调整对各类进程的偏好程度,比如CPU密集型进程、I/O密集型进程
(拓展:可以将因I/O而阻塞的进程重新放回原队列,这样I/O型进程就可以保持较高优先级)
6.是否会导致饥饿
会
7.例题
各进程到达就绪队列的时间、需要的运行时间如下表所示。
使用多级反馈队列调度算法,分析进程运行的过程。

根据算法规则:

注:
比起早期的批处理操作系统来说,由于计算机造价大幅降低,
因此之后出现的交互式操作系统(包括分时操作系统、实时操作系统等)更注重系统的响应时间、公平性、平衡性等指标。
而这几种算法恰好也能较好地满足交互式系统的需求。
因此这三种算法适合用于交互式系统。
(比如UNIX使用的就是多级反馈队列调度算法)
4.多级队列调度算法
系统中按进程类型设置多个队列,进程创建成功后插入某个队列。

1.队列之间可采取固定优先级,或时间片划分
- 固定优先级:高优先级空时低优先级进程才能被调度
- 时间片划分:如三个队列分配时间50%、40%、10%
2.各队列可采用不同的调度策略
如:
- 系统进程队列采用优先级调度
- 交互式队列采用RR
- 批处理队列采用FCFS
相关文章:
进程调度算法之时间片轮转调度(RR),优先级调度以及多级反馈队列调度
1.时间片轮转调度算法(RR) round Robin 1.算法思想 公平地、轮流地为各个进程服务,让每个进程在一定时间间隔内都可以得到响应。 2.算法规则 按照各进程到达就绪队列的顺序,轮流让各个进程执行一个时间片(如100ms)。 若进程未…...
ARMv8如何读取cache line中MESI 状态以及Tag信息(tag RAM dirty RAM)并以Cortex-A55示例
Cortex-A55 MESI 状态获取 一,系统寄存器以及读写指令二,Cortex-A55 Data cache的MESI信息获取(AARCH 64)2.1 将Set/way信息写入Data Cache Tag Read Operation Register2.2 读取Data Register 1和Data Register 0数据并解码 参考…...
密码技术 (6) - 证书
一. 前言 前面介绍的公钥密码和数字签名,都无法解决一个问题,那就是判断自己获取的公钥是否期望的,不能确定公钥是否被中间攻击人掉包。所以,证书的作用是用来证明公钥是否合法的。本文介绍的证书就是解决证书的可靠性的技术。 二…...
【算法学习】-【双指针】-【盛水最多的容器】
LeetCode原题链接:盛水最多的容器 下面是题目描述: 给定一个长度为 n 的整数数组 height 。有 n 条垂线,第 i 条线的两个端点是 (i, 0) 和 (i, height[i]) 。 找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。…...
JAVA面经整理(8)
一)为什么要有区,段,页? 1)页是内存和磁盘之间交互的基本单位内存中的值修改之后刷到磁盘的时候还是以页为单位的索引结构给程序员提供了高效的索引实现方式,不过索引信息以及数据记录都是记录在文件上面的,确切来说是…...
【Java 进阶篇】JDBC数据库连接池Druid详解
在Java应用程序中,与数据库进行交互是一个常见的任务。为了更有效地管理数据库连接并提高性能,数据库连接池是一种常见的解决方案。Druid是一个流行的JDBC数据库连接池,它具有丰富的功能和高性能。本博客将详细介绍Druid连接池,包…...
Linux——指令初识
Linux下基本指令 前言一、 ls 指令二、 pwd命令三、cd 指令四、 touch指令五、mkdir指令六、rmdir指令 && rm 指令七、man指令八、cp指令九、mv指令十、cat指令十一、.more指令十二、less指令十三、head指令十四、tail指令总结 前言 linux的学习开始啦! 今…...
专题一:双指针【优选算法】
双指针应用场景: 数组划分、数组分块 目录 一、移动0 二、复写0 从后向前 三、快乐数 链表带环 四、盛水最多的容器 单调性双指针 五、有效三角形个数 单调性双指针 六、和为s的两个数字 七、三数之和 细节多 需再练 一、移动0 class Solution { public:void move…...
蓝桥等考Python组别十二级007
第一部分:选择题 1、Python L12 (15分) 运行下面程序,输出的结果是( )。 lis = [A, B, C, D, E, F] print(lis[0 : 3]) [A, B, C][A, B][A, B, C, D][B, C, D]正确答案:A 2...
全方位介绍工厂的MES质量检验管理系统
一、MES质量检验管理系统的定义: MES质量检验管理系统是基于制造执行系统的框架和功能,专注于产品质量的控制和管理。它通过整合和优化质量检验流程,提供实时的数据采集、分析和反馈,帮助工厂实现高效的质量管理。该系统涵盖了从…...
避免风险,亚马逊、沃尔玛、阿里国际站选择什么样的测评方式最安全?
亚马逊、沃尔玛、速卖通、阿里国际站上做测评是最有效的推广手段之一,而测评又存在很大的风险。但是测评的风险来自哪里?什么样的测评方式才安全呢? 因为平台大数据风控点很多,根据洪哥六七年的测评经验,风控包括以下…...
【C语言】语法--联合体union详解
本文参考博客: https://blog.csdn.net/m0_57180439/article/details/120417270 定义及示例: 联合是一种特殊的自定义类型,该种类型定义的变量也包含一系列的成员,特征是这些成员共用同一块空间,所以联合体也被称为共用体。 #include<stdio.h> union Un//联合类型…...
接口测试复习
一。基本概念 接口概念:系统与系统之间 数据交互的通道。 接⼝测试概念:校验 预期结果 与 实际结果 是否⼀致。 特征: 测试⻚⾯测试发现不了的问题。(因为:接⼝测试 绕过前端界⾯。 ) 符合质量控制前移理…...
获取医疗器械板块的个股列表
获取医疗器械板块的个股列表,用python爬虫做到(数据网址:板块 - 医疗器械概念 - 股票行情中心 - 搜狐证券) import requests from bs4 import BeautifulSoup # 获取医疗器械概念个股列表url "https://q.stock.sohu.com/cn/…...
1026 程序运行时间
要获得一个 C 语言程序的运行时间,常用的方法是调用头文件 time.h,其中提供了 clock() 函数,可以捕捉从程序开始运行到 clock() 被调用时所耗费的时间。这个时间单位是 clock tick,即“时钟打点”。同时还有一个常数 CLK_TCK&…...
博途1200/1500 ALT指令
SMART PLC的ALT指令实现代码,请查看下面文章博客 SMART PLC如何构造ALT指令_smart200类似alt指令-CSDN博客单按钮启停这些老生常谈的问题,很多人感兴趣。这篇博文讨论下不同的实现方法,希望对大家有所帮助。指令虽然简单,但是在编程的时候合理使用对我们高效率编程帮助还是…...
11、视频分类建议
8、绩效看板与日清计划 9、大小屏分离与精细化审核 10、质量审核的设立与合并 视频分类印象深刻,因为这是我亲手做的第一个增效工具。 审核的其中一个任务是保证视频分类信息的准确性,账号本身是有一个缺省分类的,内容上传之后默认使用账号…...
【计算机组成原理】考研真题攻克与重点知识点剖析 - 第 2 篇:数据的表示和运算
前言 本文基础知识部分来自于b站:分享笔记的好人儿的思维导图与王道考研课程,感谢大佬的开源精神,习题来自老师划的重点以及考研真题。此前我尝试了完全使用Python或是结合大语言模型对考研真题进行数据清洗与可视化分析,本人技术…...
使用maven框架搭建一个IDEA插件项目
以下是使用 Maven 框架搭建 IDEA 插件项目的步骤: 打开 IDEA,点击 File -> New -> Project,选择 Maven。 在弹出的 New Project 窗口中,选择 Maven,然后选择 Create from archetype,找到 Maven 插件…...
第二届全国高校计算机技能竞赛——C++赛道 题解
Powered by:NEFU AB-IN Link 文章目录 第二届全国高校计算机技能竞赛——C赛道A 互不侵犯题意思路代码 B 奖学金题意思路代码 C 领导者题意思路代码 D 空调题意思路代码 E 字符操作变换题意思路代码 第二届全国高校计算机技能竞赛——C赛道 A 互不侵犯 题意 在象棋中ÿ…...
大话软工笔记—需求分析概述
需求分析,就是要对需求调研收集到的资料信息逐个地进行拆分、研究,从大量的不确定“需求”中确定出哪些需求最终要转换为确定的“功能需求”。 需求分析的作用非常重要,后续设计的依据主要来自于需求分析的成果,包括: 项目的目的…...
2025年能源电力系统与流体力学国际会议 (EPSFD 2025)
2025年能源电力系统与流体力学国际会议(EPSFD 2025)将于本年度在美丽的杭州盛大召开。作为全球能源、电力系统以及流体力学领域的顶级盛会,EPSFD 2025旨在为来自世界各地的科学家、工程师和研究人员提供一个展示最新研究成果、分享实践经验及…...
阿里云ACP云计算备考笔记 (5)——弹性伸缩
目录 第一章 概述 第二章 弹性伸缩简介 1、弹性伸缩 2、垂直伸缩 3、优势 4、应用场景 ① 无规律的业务量波动 ② 有规律的业务量波动 ③ 无明显业务量波动 ④ 混合型业务 ⑤ 消息通知 ⑥ 生命周期挂钩 ⑦ 自定义方式 ⑧ 滚的升级 5、使用限制 第三章 主要定义 …...
以下是对华为 HarmonyOS NETX 5属性动画(ArkTS)文档的结构化整理,通过层级标题、表格和代码块提升可读性:
一、属性动画概述NETX 作用:实现组件通用属性的渐变过渡效果,提升用户体验。支持属性:width、height、backgroundColor、opacity、scale、rotate、translate等。注意事项: 布局类属性(如宽高)变化时&#…...
dedecms 织梦自定义表单留言增加ajax验证码功能
增加ajax功能模块,用户不点击提交按钮,只要输入框失去焦点,就会提前提示验证码是否正确。 一,模板上增加验证码 <input name"vdcode"id"vdcode" placeholder"请输入验证码" type"text&quo…...
【OSG学习笔记】Day 16: 骨骼动画与蒙皮(osgAnimation)
骨骼动画基础 骨骼动画是 3D 计算机图形中常用的技术,它通过以下两个主要组件实现角色动画。 骨骼系统 (Skeleton):由层级结构的骨头组成,类似于人体骨骼蒙皮 (Mesh Skinning):将模型网格顶点绑定到骨骼上,使骨骼移动…...
Java求职者面试指南:计算机基础与源码原理深度解析
Java求职者面试指南:计算机基础与源码原理深度解析 第一轮提问:基础概念问题 1. 请解释什么是进程和线程的区别? 面试官:进程是程序的一次执行过程,是系统进行资源分配和调度的基本单位;而线程是进程中的…...
GO协程(Goroutine)问题总结
在使用Go语言来编写代码时,遇到的一些问题总结一下 [参考文档]:https://www.topgoer.com/%E5%B9%B6%E5%8F%91%E7%BC%96%E7%A8%8B/goroutine.html 1. main()函数默认的Goroutine 场景再现: 今天在看到这个教程的时候,在自己的电…...
学习一下用鸿蒙DevEco Studio HarmonyOS5实现百度地图
在鸿蒙(HarmonyOS5)中集成百度地图,可以通过以下步骤和技术方案实现。结合鸿蒙的分布式能力和百度地图的API,可以构建跨设备的定位、导航和地图展示功能。 1. 鸿蒙环境准备 开发工具:下载安装 De…...
EasyRTC音视频实时通话功能在WebRTC与智能硬件整合中的应用与优势
一、WebRTC与智能硬件整合趋势 随着物联网和实时通信需求的爆发式增长,WebRTC作为开源实时通信技术,为浏览器与移动应用提供免插件的音视频通信能力,在智能硬件领域的融合应用已成必然趋势。智能硬件不再局限于单一功能,对实时…...
