操作系统原理 —— 七种常见的调度算法(十三)

news2024/11/15 14:04:23

大家都知道,学习这种类型的算法,在很多时候,我们只是学习它的一种思想,那有没有好的学习调度算法的思路呢?
我们可以基于一下路线,来学习调度算法:

  • 1、算法思想
  • 2、算法规则
  • 3、这种调度算法是用于 作业调度 还是 进程调度?
  • 4、抢占式,还是非抢占式?
  • 5、优点和缺点
  • 6、是否会导致饥饿(饥饿是指某个进程/作业长期得不到服务,一直处于等待状态)

那么我们就基于以上路线,来学习常见的调度算法:

先来先服务(FCFS)

算法思想:先来先服务算法主要是从"公平"的角度考虑,类似我们在生活中排队买东西一样,谁先来就谁先买到。

算法规则:按照作业/进程达到的先后顺序,按照顺序依次执行。

用于作业/进度调度:用于作业调度时,考虑的是哪个作业先到达后备队列;用于进程调度时,考虑的是哪个进程先到达就绪队列。

是否可抢占:由于这种算法的思想是从“公平”的角度考虑,所以当然是非抢占式,按照排队顺序依次执行。

优缺点:优点的话就是对于每个作业/进程都是公平的,算法实现简单。缺点的话就是排在长作业,或者长进程后面的短作业/进程来说,需要等待很长的时间,带权周转时间很大,对短作业来说用户体不好。 就比如说,我们都在排队买奶茶,我自己只需要买一杯,可是我前面那个大兄弟,他要买20杯,假设做一杯奶茶需要1分钟,那我至少需要等20分钟,才轮到我,而我自己本身就只买一杯奶茶,也就等1分钟就走了。但是现在由于先来先服务算法,所以我需要等20分钟以上。

是否会导致饥饿:不会,因为都是按顺序执行,好好排队,总会轮到你的。

短作业优先(SJF)

算法思想:这个算法追求最少的平均等待时间、最少的平均周转时间,最少的平均带权周转时间。

算法规则:最短的作业/进程优先得到服务,这里说的最短,指的是要求服务时间最短。

用于作业/进度调度:可用于作业调度,也可以用于进程调度,用于进程调度时,称之为”短进程优先“。

是否可抢占:有非抢占式的版本,也有抢占式的版本

优缺点:优点是 “最短的” 平均等待时间、平均周转时间,对于短作业/进程来说,可得到优先执行的机会。缺点就是不公平,对短作业有利,对长作业不利。可能会产生饥饿现象。

是否会导致饥饿:会,如果有源源不断的短作业/进程到来,可能会使得长作业/进程很长时间得不到服务,产生饥饿现象,如果一直得不到服务,则称之为饿死

高响应比优先(HRRN)

算法思想:针对上面两种算法来说,都有各自的优点和缺点,为了综合上面两种算法,所以要综合考虑作业/进程的等待时间和要求服务的时间。

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

image.png

用于作业/进度调度:可用于作业调度,也可以用于进程调度。

是否可抢占:非抢占式算法,因此只有当前运行的作业/进程主动放弃 CPU 时,才需要调度,计算响应比,从而选择响应比最高的作业/进程来执行。

优缺点:综合考虑了等待时间和运行时间,等待时间相同时,运行时间短的优先执行,运行时间相同时,等待时间长的优先执行,对于长作业来说,随着等待时间越来越久,其响应比也会越来越大,从而避免了长作业饥饿的问题。

是否会导致饥饿:不会。

上三种算法对比

在这里插入图片描述

时间片轮转

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

算法规则:按照各个进程到达就绪队列的顺序,轮流让各个进程执行一个时间片。。若进程未在一个时间片内执行完,则剥夺 CPU 资源,讲进程重新放到就绪队列队尾重新排队。

用于作业/进度调度:用于进程调度,只有作业放入到内存建立相对应的进程之后,才能被分配 CPU 时间片。

是否可抢占:若进程未能在时间片内运行完,将被强行剥夺 CPU 使用权,因此时间片轮转调度算法属于抢占式的算法。由时钟装置发出时钟中断来通知 CPU 时间片已到。

优缺点:优点是公平、响应快,适用于分时操作系统,缺点是由于高频率的进程切换,因此有一定的开销,而且不区分任务的紧急程度。

是否会导致饥饿:不会。

优先级调度

算法思想:随着计算机的发展,特别是实时操作系统的出现,越来越多的应用场景需要根据任务的紧急程度来决定处理顺序。

算法规则:调度时选择优先级最高的作业/进程。

用于作业/进度调度:可用于作业调度,也可以用于进度调度。

是否可抢占:抢占式、非抢占式都有,非抢占式只需要在进程主动放弃 CPU 执行权的时候进行调度,而抢占式当就绪队列变化时,检查是否发生抢占。

优缺点:优点就是用优先级区分紧急程度、重要程度、适用于实时操作系统。可灵活地调整对各种作业/进程偏好程度。缺点就是如果有不断的高优先级进程/作业进来,则会导致饥饿现象。

是否会导致饥饿:会。

多级反馈队列

算法思想:对其他调度算法的这种权衡。

算法规则:

1、设置多级就绪队列,各级队列优先级从高到低,时间片从小到大。

2、新进程达到时,先进入1级队列,按照先来先服务的规则排队等待被分配时间片,若时间片用完还未结束,则进程进入下一级队列队尾。 如果此时已经是在最下级的队列,则重新放回该队列的队尾。

3、只有1级队列为空时,才会为2级队列对头的进程重新分配时间片,以此类推。

用于作业/进度调度:用于进程调度。

是否可抢占:抢占式算法,假设在第2级队列的进程在运行过程中,突然1级队列进入了一个新的进程,则由于新进程处于优先级更高的队列中,因此新进程会占用 CPU 执行权,原来运行的进程会放回之前队列的队尾。

优缺点:对各类型进程相对公平,每个新到达的进程都可以很快就得到响应,段进程只用较少的时间就可以完成,不必实现估计进程的运行时间,可灵活地调整对各类进程的偏好程度,比如 CPU 密集型进程、I/O 密集型进程。

是否会导致饥饿:会。

上三种算法对比

在这里插入图片描述

多级队列调度

在这里插入图片描述

队列之间采取固定优先级,或者时间片划分。

固定优先级:高优先级空时,低优先级进程才能被调度。
时间片划分:如三个队列分配时间为第一个队列占时间片 50%、第一个队列占时间片 40%、第三个队列占时间片 10%。

各个队列可采用不同的调度策略,比如系统进程采用优先级调度,交互式进程才有时间片轮转,批处理进程采用先来先服务。

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

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

相关文章

Excel 冻结指定行 / 列

目录 假设你的表格是这样的: 1. 确定你要冻结的行列数 2. 计算下一个单元格的位置 3. 选中红框的单元格,视图 > 冻结窗格 > 冻结拆分窗格 4. 出现下面红框中的线即代表功能已经实现。 在使用 Excel 的过程中,经常会需要保持某一行 / 某…

【目标检测】入门教程之yolo v1理论与实战

every blog every motto: There’s only one corner of the universe you can be sure of improving, and that’s your own self. https://blog.csdn.net/weixin_39190382?spm1010.2135.3001.5343 0. 前言 目标检测入门实战教程 1. 正文 1.1 感性认识 我们想做的事&…

【shell脚本】数组

数组 一、数组1.1数组的定义方法1.2数组包括的数据类型1.3获取数组的元素1.4数组追加1.5向函数传入数组的值 二、排序算法2.1冒泡排序2.2直接选择排序2.3插入排序2.4反转排序 一、数组 1.1数组的定义方法 格式 方法一: 数组名(1 2 3 4 5)#…

Ubuntu本地快速搭建web小游戏网站,公网用户远程访问【内网穿透】

文章目录 前言1. 本地环境服务搭建2. 局域网测试访问3. 内网穿透3.1 ubuntu本地安装cpolar内网穿透3.2 创建隧道3.3 测试公网访问 4. 配置固定二级子域名4.1 保留一个二级子域名4.2 配置二级子域名4.3 测试访问公网固定二级子域名 转载自cpolar极点云的文章:在Ubunt…

一款国产开源数据同步中间件,支持多种数据源和预警功能

DBSyncer是一款开源的数据同步中间件,提供MySQL、Oracle、SqlServer、PostgreSQL、Elasticsearch(ES)、Kafka、File、SQL等同步场景。 支持上传插件自定义同步转换业务,提供监控全量和增量数据统计图、应用性能预警等。 特点 组合驱动,自定…

数据表的创建和管理 (数据库)

目录 一、数据表结构的创建 1、利用create命令创建表 2.关于创建表时运用约束的说明 (1)空值约束(NULL or NOT NULL) (2)主键约束(primary key constraint) &#x…

系统集成项目管理工程师知识点总结

项目经理的五种权利: 职位权力: 来源于管理者在组织中的职位和职权。罚权力: 使用降职、扣薪、惩罚、批评、威胁等负面手段的能力。奖励权力: 给予下属奖励的能力专家权力: 来源于个人的专业技能。参照(号…

Centos 搭建 不同的ftp用户对目录分级管理

目标: 建立ftp服务器目录 ftp_repository 使用用户名和密码登陆对它有读写权限,在该目录下建立子目录public可以匿名登陆,对其只有读权限 操作笔记: 通过创建用户时,创建ftp_repository 并且不能ssh telnet等工具登陆…

开关电源基础05:基本开关电源电感器设计(2)

说在开头:关于第五届索尔维会议(2) 索尔维会议的第四天休会,第五天开始自由讨论,大家都想站起来发言,会场一片混乱。大会主席洛伦兹不断拍桌子,让大家保持安静,可现场还是太乱&…

MATLAB实现人脸识别

本篇博文基于MATLAB实现人脸识别,基于几何特征的算法,对人脸从图像采集、预处理、到特征点定位提取,校验通过;主要利用YCbCr肤色模型,通过连通分量提取算法定位人脸;对RGB图像通过形态学图像处理算法选定区…

设置适合自己使用习惯的idea开发工具

一、配置方面 设置软件开启时候的最大内存128m够了,设置最大运行内存为8G,电脑配置好的一定要改,能极大的提升流畅性! 二、好用的插件 1.MyBatisLogFormat是一款用于将控制台中打印出的sql、参数拼装成完整sql语句的idea插件 …

头部企业走入无人区,国产数智化厂商挑大梁

本文转自数智前线 文|石兆 编|游勇 央国企数智化与信创化双重需求叠加,国产厂商挑大梁,助力企业升级数智化底座,实现价值化国产替代。 4月,在北京用友产业园的数智剧院里,近千位来自30个行业…

Maven 私服 Nexus 3.44 搭建

文章目录 1. 安装 Nexus2. Nexus 程序2.1. 启动 nexus 程序,添加运行参数 start2.2. 查看 nexus 程序运行状态,添加运行参数 status2.3. 停止 nexus 程序,添加运行参数 stop 3. 浏览器访问 Nexus GUI3.1. 默认端口3.2. 自定义端口3.3. 初次登…

安全从业人员职业发展和规划

文章来源于owasp,分享嘉宾t0data。 1、为什么做这次分享? 2、人生周期三模型 3、职业生涯阶段划分 4、通用职业发展路径 5、当前安全行业前景如何? 6、安全就业行情如何? 7、安全行业就业市场岗位划分 8、什么是相对比较好的履历…

如何系统全面的自学自动化测试?明确后我直接拿到了20K

玩自动化测试多年的老司机带你上车全面系统学习自动化测试,并且还能教你如何学习才能在今年拿到一份不错的offer。 说到系统全面,就是以目前绝大部分公司招聘要求的知识内容为基准,毕竟我们学习自动化测试都是为了高薪工作,《史记…

【异步电机系列】电机参数离线辨识(含源码实现)

【一、闲话 很久没有认真更新自己的博客了!正好这段时间在学习异步电机控制,所以把过程中的一些东西写下来,当是回顾也是备忘。本来想是把整个过程的问题和收获都记录下来的(包括硬件设计、mcu控制、算法等)&#xff0…

FFT变换后得到什么?

FFT FFT 快速傅里叶变换,是利用计算机计算DFT的高效、快速计算的方法的统称。 将信号从时域变换到频域范围内。 matlab中的fft 语法: Y fft(X) Y fft(X,n) Y fft(X,n,dim)说明 Y fft(X) 用快速傅里叶变换 (FFT) 算法计算 X 的离散傅里叶变换 (D…

ApiPost简单使用

目录 环境与变量 设置与使用 随机参数变量 内置Mock字段随机参数 自定义随机参数 全局参数 使用手册 apipost可支持一键压测和自动化接口测试 环境与变量 设置与使用 设置 环境变量可设置环境名称、变量名称、变量初始值、URL: 可以在请求变量或者接口 URL…

《精英的傲慢:好的社会该如何定义成功》笔记与摘录二

目录 ​编辑 笔记与摘录 1、阶层跃升的话语 2、优绩至上理念的核心 3、优绩为什么重要 4、不平等是制度的失败,还是你的失败? 5、一种思考什么样的社会是公正的社会的方法 6、赚很多钱意味着什么 7、当市场价值被看作社会贡献的代表后 8、当市…

FS7M0880YDTU专为离线SMPS设计,VN7040AJTR和VN7016AJTR器件是用于汽车转向指示器

FS7M0880YDTU 是专门为离线SMPS设计的,具有最小的外部组件。该Power Switch(FPS)器件由高压功率SenseFET和电流模式PWM控制器IC组成。PWM控制器包括集成固定振荡器、欠压锁出、前缘消隐块、优化栅极通/关断驱动器、热关断保护、过压保护、用于环路补偿的温度补偿精密…