OS之作业调度算法

news2024/10/6 2:31:04

目录

一、基本概念

二、先来先服务算法(FCFS)

三、短作业算法(SJF/SPF)

四、轮转调度算法(RR)

五、优先级调度算法

六、多级反馈队列调度算法

一、基本概念

T(周转)=T(完成)-T(到达)

二、先来先服务算法(FCFS)

不利于短作业,非抢占式算法

算法思想:从公平的角度考虑,类似于排队购物、打饭等。
算法规则:按照作业或者进程到达的先后顺序进行服务。
方法用于作业/进程调度:用于作业调度时,考虑的是哪个作业先到达后备队列;用于进程调度时,考虑的是哪个进程先到达就绪队列

案例如下:

 优缺点:优点是算法公平且实现简单;缺点是排队在长作业或长进程后面的短作业或短进程需要等待很长的时间,带权周转时间很大,对短作业或进程的用户体验不好。所以先来先服务算法对长作业有利,对短作业不利。

三、短作业算法(SJF/SPF)

算法思想:追求最少的平均等待时间,最少的平均周转时间,最少的平均带权周转时间。
算法规则:最短的作业或者进程优先得到服务,这里的最短指的是要求服务的时间最短

作业越短,其优先级就越高,但要注意先执行到达时间为0的进程!!!

方法用于作业/进程调度:即可用于作业调度,也可以用于进程调度,用于进程调度时称为最短进程优先算法(SPF, Shortest Process First)。
进程调度的方式:最短时间优先和最短进程优先是非抢占式算法,但也有抢占式的算法——最短剩余时间优先算法。

非抢占式SJF案例:

在这里插入图片描述

 抢占式SJF案例:

 上方案例时刻分析:

优缺点:优点是有较短的平均等待时间和平均周转时间;缺点是必须预知作业的运行时间,不太公平,对短作业有利,对长作业不利,长作业的周转时间明显增长,可能产生饥饿现象,此外,作业或者进程的运行时间是由用户提供的,人—机无法实现交互并不一定真实,所以不一定能做到真正的短作业优先。

四、轮转调度算法(RR)

算法思想:公平地、轮流地为各个进程服务,让每个进程在一定时间间隔内都可以得到响应。
算法规则:按照各个进程到达就绪队列的顺序,轮流让各个进程执行一个时间片,若进程未在一个时间片内执行完,则剥夺处理机,将进程重新放到就绪队列队尾重新排队

方法用于作业/进程调度:只能用于进程调度,只有作业放入内存建立了相应的进程后,才能被分配处理机时间片。
进程调度的方式:抢占式算法,由时钟装置发出时钟中断来通知 CPU 时间片已到。

RR算法案例:

 时间片大小为2时:

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


五、优先级调度算法

算法思想:随着计算机的发展,特别是实时操作系统系统的出现,越来越多的应用场景需要根据任务的紧急程度来决定处理顺序。
算法规则:每个作业或进程有各自的优先级,调度时选择优先级最高的作业或进程

进程调度的方式:抢占式和非抢占式都有,区别在于非抢占式只需要在进程主动放弃处理机时进行调度,而抢占式的还需要在就绪队列变化时检查是否会发生抢占。

非抢占式优先级调度案例:

 抢占式优先调度算法案例:

在这里插入图片描述

 优缺点:优点是用优先级区分紧急程度、重要程度,适用于实时操作系统,可灵活地调整对各种作业或进程的偏好程度;缺点是若源源不断地有高优先级进程到来,则可能导致饥饿。

六、多级反馈队列调度算法

算法思想:对其他调度算法的折中权衡。
算法规则:设置多级就绪队列,各级队列优先级从高到低,时间片从小到大;新进程到达时先进入第一级队列,按 FCFS 原则排队等待被分配时间片,若用完时间片进程还未结束,则进程进入下一级队列队尾,如果此时已经是在最下级的队列,则重新放回该队列队尾;只有第 k 级队列为空时,才会为 k+1 级队列头的进程分配时间片;被抢占处理机的进程重新放回原队列队尾。
方法用于作业/进程调度:只用于进程调度。
进程调度的方式:抢占式算法,在 k 级队列的进程运行过程中,若更上级的队列中进入了一个新进程,则由于新进程处于优先级更高的队列中,因此新进程会抢占处理机,原来运行的进程放回 k 级队列队尾。

请添加图片描述

 注意在执行的过程中,每执行完一个级别的时间片,若进程没有执行完,则该进程优先级下降,移动到下一级队列的队尾,当然在运行的时候,如果更高级别进入了一个新进程,即使当前运行的进程时间片还没运行完,也会被剥夺处理机,该进程在原队列队尾等待更高优先级的进程运行完成。

优缺点:优点是对于各类型进程相对公平(FCFS 的优点);每个新到达的进程都可以很快就得到响应(RR 的优点);短进程只用较少的时间就可完成(SPF 的优点);不必实现估计进程的运行时间(避免用户作假);可灵活地调整对各类进程的偏好程度,比如 CPU 密集型进程、I/O 密集型进程 (可以将因 I/O 而阻塞的进程重新放回到原队列而不是优先级更低的下一级队列,这样 I/O 型进程就可以保持较高的优先级) 。缺点是可能会导致饥饿。

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

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

相关文章

Linux日志文件服务器搭建

文章目录 Linux日志文件服务器搭建节点规划案例实施(1)修改主机名(2)配置日志服务器(3)重新启动查看rsyslogd(4)配置客户端(5)测试 Linux日志文件服务器搭建 节点规划 IP主机名节点192.168.100.10serverlog日志服务器192.168.100.20clientlog日志客户端 必须两台机器可以ping…

IPv6之组播地址分类

本文目录 1、IPv6组播地址的结构2、特殊的预留地址和预留组播地址 1、IPv6组播地址的结构 IPv6组播地址是由固定的8bit地址前缀FF::/8,4bit的标志位,4bit组播范围和112bit多播组标识符(组ID)组成 FF::/8 IPv6的组播地址的最高8bi…

linux环境下设置python定时任务

linux环境下设置python定时任务 Linux 系统提供了使用者控制计划任务的命令 :crontab 命令 1、在linux环境执行命令,进入编辑界面 crontab -e2、按键盘 i 键,进入编辑模式,输入以下内容,设置2个定时任务 定时任务1:每隔10分钟执…

MindFusion.JavaScript Pack 2023.R1 Crack

图表控件添加了径向树布局和套索缩放工具。 2023年5月17日-10:53新版 特征 JavaScript图表中的新增功能 径向树布局-添加了新的类,它将树级别排列在围绕根的同心圆中。 套索缩放工具-控件现在支持使用套索工具进行缩放的几种方法: 可以将行为属性设置为…

单点登录协议

认证和授权 认证:确认该用户的身份是他所声明的那个人 授权:根据用户身份授予他访问特定资源的权限 当用户登录应用系统时,系统需要先认证用户身份,然后依据用户身份再进行授权。认证与授权需要联合使用,才能让用户真…

浏览器网络请求——HTTP详解

文章目录 HTTP 是什么HTTP 发展历程HTTP 1.0HTTP 1.1HTTP 2.0 常用方法头部信息 (Headers)请求头(request Headers响应头(response Headers) 状态码HTTP无状态理解:cookie与session总结 HTTP 是什么 HTTP(Hyper Text T…

【Linux】2.4 第一个小程序——进度条(C语言)

文章目录 character缓冲区的问题:ps. sleep 函数 倒计时进度条1.打印进度条2.让进度条“动起来”3.预留进度条的位置并用提示符显示进度条的状态4.颜色打印只用颜色来表示进度条 character 回车 与 换行 键盘上的 Enter 键: 换行的过程: …

程序员如何成为一名独立开发者?

这里有一个最简单粗暴的方式让你确定你是否能成为一个独立的开发者。 Lv.1 顺畅地完成一个独立外包项目 一个最低成本的试错方式就是去独立地完成一个外包项目,一般来说外包项目的难度较低,但也具有作为开发者必备的大多数流程,如果不确定自…

ChatGPT+小红书爆文,牛!

随着AI技术的不断发展,它已经逐渐渗透到了我们的生活之中,包括内容营销领域。 我们通过AI算法生成文本、优化搜索引擎排名、提高用户体验等,现在AI已逐渐在改变时代的进步,AI也将成为下一个十年的一个变革。我们每个创业者、内容…

Go的开发工具

Go的开发工具 1.VSCode 开源地址: GitHub - microsoft/vscode: Visual Studio Code 官网:https://code.visualstudio.com 好处是免费的,插件多!!! 2.GoLand 收费,是和IDEA是类似的,非常强。…

零基础转行从事云计算运维工作,不得不掌握的几项技能

转行云计算运维已成为今年热门话题之一,面对内卷严重的Java领域,虽然高薪有前景,但是很多人都是望而止步,自己的实力不允许自己卷入这场“高薪职业争夺战”。于是新的IT热门转行职业云计算被重点关注,它会不会成为下一…

如何使用SCQA模型提高表达能力

SCQA架构是“结构化表达”工具。 一、什么是“SCQA架构”?‍ S(Situation)情景——由熟悉的情境或事实引入 C(Complication)冲突——指出实际面临的困境或冲突 Q(Question)疑问——你如何分析…

【开发日志】2023.05 NormalMap Back To Sphere

【开发日志】2023.03.04 ZENO----SimpleGeometry----CreateSphere_EndlessDaydream的博客-CSDN博客CreateSpherehttps://blog.csdn.net/Angelloveyatou/article/details/129178914(4条消息) 【开发日志】2023.04 ZENO----Composite----CompNormalMap_EndlessDaydream的博客-CSD…

Linux-CentOS7安装Oracle11g 11.2.0.1.0

CentOS7安装Oracle11g 下载yum包更新RPM包解压安装包至tmp目录关闭selinux关闭防火墙创建Oracle用户修改内核配置文件创建安装目录和设置文件权限设置环境变量编辑静默安装响应文件安装打开一个新终端使用root用户登录启动监听建立数据库进程查询查看监听状态sqlplus登录设置开…

pgzero所有知识点详解

目录 什么是pgzero? pgzero的安装 4,正式开始! 1,调整背景色 2,导入角色 3,鼠标事件 5,按键事件 6,刷新功能 1,角色属性 2,功能介绍 7,…

Java面试 异常

文章目录 1. Java 异常类层次结构概览图2. Exception 和 Error 有什么区别?3. Checked Exception 和 Unchecked Exception 有什么区别?4. Throwable 类常用方法有哪些?5. try-catch-finally 如何使用?6. finally 中的代码一定会执…

chatGPT VS 科大讯飞星火大模型 使用初体验,到底谁更胜一筹?

下午这会有时间,正好之前申请了讯飞星火大模型的体验,这里就想着简单使用体验对比一下chatGPT和星火大模型的差异,废话不多说这里直接上图: 【诺特兰德叶黄素与纯天然蔬菜中的叶黄素有什么区别】 【今年六月份我就要参加高考了&am…

Python实战案例03

文章目录 1、归并排序2、角谷猜想3、兔子数列4、学生管理系统5、饮品自动售货机6、信息安全策略——文件备份7、用户账户管理1、归并排序 先将待排序的序列划分成若干长度为 1 的子序列,依次将两个子序列排序后合并成长度为 2 的子序列;再依次将两个子序列排序后合并成长度为…

基于Yolov8的道路缺陷检测,加入PConv、WIOU 、DCNV2提升检测精度

1.数据集介绍 缺陷类型:crack 数据集数量:195张 1.1数据增强,扩充数据集 通过medianBlur、GaussianBlur、Blur3倍扩充得到780张图片 按照train、val、test进行8:1:1进行划分 1.1.1 通过split_train_val.py得到trainval.txt、val.txt、test.txt # coding:utf-8import…

事件轮询EventLoop

JS 是一门单线程语言 (换句话说: 一个时间内我只能做一件事), 异步操作都是放到事件循环队列中, 等待主执行栈来执行 JS 是如何执行的 (执行顺序) ●从上往下, 一行一行执行 ●如果中间的某一行书写有误, 那么程序在运行到这一行会报错并停止向下继续运行 ●先把所有的同步代码…