【操作系统】调度算法的评价指标和三种调度算法


在这里插入图片描述

🐌个人主页: 🐌 叶落闲庭
💨我的专栏:💨
c语言
数据结构
javaEE
操作系统
Redis

石可破也,而不可夺坚;丹可磨也,而不可夺赤。


操作系统

  • 一、调度算法的评价指标
    • 1.1 CPU利用率
    • 1.2 系统吞吐量
    • 1.3 周转时间
    • 1.4 等待时间
    • 1.5 响应时间
  • 二、 调度算法
    • 2.1 先来先服务(FCFS)
    • 2.2 短作业优先(SJF)
    • 2.3 高响应比优先(HRRN)

一、调度算法的评价指标

1.1 CPU利用率

  • 由于早期的CPU造价极其昂贵,因此人们会希望让CPU尽可能多地工作
  • CPU利用率:指CPU“忙碌”的时间占总时间的比例。
  • 利用率 = 忙碌的时间 / 总时间
  • Eg:某计算机只支持单道程序,某个作业刚开始需要在CPU上运行5秒再用打印机打印输出5秒,之后再执行5秒,才能结束。在此过程中,CPU利用率、打印机利用率分别是多少?
    • CPU利用率 = (5 + 5) / (5 + 5 + 5) = 66.66%
    • 打印机利用率 = 5 / (5 + 5 + 5 ) = 33.33%

1.2 系统吞吐量

  • 对于计算机来说,希望能用尽可能少的时间处理完尽可能多的作业
  • 系统吞吐量:单位时间内完成作业的数量
  • 系统吞吐量 = 总共完成了多少道作业 / 总共花了多少时间
    • Eg:某计算机系统处理完10道作业,共花费100秒,则系统吞吐量为?
      • 10/100=0.1道/秒

1.3 周转时间

  • 对于计算机的用户来说,他很关心自己的作业从提交到完成花了多少时间。
  • 周转时间,是指从作业被提交给系统开始,到作业完成为止的这段时间间隔。
  • 它包括四个部分:作业在外存后备队列上等待作业调度(高级调度)的时间、进程在就绪队列上等待进程调度(低级调度)的时间、进程在CPU上执行的时间、进程等待/O操作完成的时间。后三项在一个作业的整个处理过程中,可能发生多次。
  • (作业)周转时间 = 作业完成时间 - 作业提交时间
  • 对于用户来说,更关心自己的单个作业的周转时间
  • 平均周转时间= 各作业周转时间之和 / 作业数
  • 对于操作系统来说,更关心系统的整体表现,因此更关心所有作业周转时间的平均值
  • 带权周转时间 = 作业周转时间 / 作业实际运行的时间 = (作业完成时间 - 作业提交时间)/ 作业实际运行的时间
  • 对于周转时间相同的两个作业,实际运行时间长的作业在相同时间内被服务的时间更多带权周转时间更小,用户满意度更高
  • 对于实际运行时间相同的两个作业,周转时间短的带权周转时间更小,用户满意度更高
  • 平均带权周转时间 = 各作业带权周转时间之和 / 作业数

1.4 等待时间

  • 计算机的用户希望自己的作业尽可能少的等待处理机
  • 等待时间,指进程/作业处于等待处理机状态时间之和,等待时间越长,用户满意度越低。
  • 对于进程来说,等待时间就是指进程建立后等待被服务的时间之和,在等待/O完成的期间其实进程也是在被服务的,所以不计入等待时间。
  • 一个作业总共需要被CU服务多久,被I/O设备服务多久一般是确定不变的,因此调度算法其实只会影响作业/进程的等待时间。当然,与前面指标类似,也有“平均等待时间”来评价整体性能。

1.5 响应时间

  • 对于计算机用户来说,会希望自己的提交的请求(比如通过键盘输入了一个调试命令)尽早地开始被系
    统服务、回应。
  • 响应时间,指从用户提交请求到首次产生响应所用的时间。

二、 调度算法

2.1 先来先服务(FCFS)

例题:各进程到达就绪队列的时间、需要的运行时间如下表示。使用先来先服务调度算法,计算各进程的等待时间、平均等待时间、周转时间、平均周转时间、带权周转时间、平均带权周转时间。

进程到达时间运行时间
P107
P224
P341
P454
  • 先来先服务调度算法:按照到达的先后顺序调度,事实上就是等待时间越久的越优先得到服务。
  • 因此,调度顺序为:P1→P2→P3→P4

在这里插入图片描述


  • 周转时间 = 完成时间 - 到达时间
  • 周转时间: P1=7-0=7;P2=11-2=9:P3=12-4=8;P4=16-5=11
  • 带权周转时间 = 周转时间 / 运行时间
  • 带权周转时间:P1=7/7=1;2=9/4=2.25;P3=8/1=8;P4=11/4=2.75
  • 等待时间 = 周转时间 - 运行时间
  • 等待时间:P1=7-7=0;P2=9-4=5;P3=8-1=7;P4=11-4=7
  • 平均周转时间=(7+9+8+11)/4=8.75
  • 平均带权周转时间=(1+2.25+8+2.75)/4=3.5
  • 平均等待时间=(0+5+7+7)/4=4.75

  • 优点:公平、算法实现简单
  • 缺点:排在长作业(进程)后面的短作业需要等待很长时间,带权周转时间很大,对短作业来说用户体验不好。即,FCFS算法对长作业有利,对短作业不利

2.2 短作业优先(SJF)

  • 算法思想:
    • 追求最少的平均等待时间,最少的平均周转时间、最少的平均平均带权周转时间
  • 算法规则:
    • 最短的作业/进程优先得到服务(所谓“最短”,是指要求服务时间最短)
  • 用于作业/进程调度:
    • 即可用于作业调度,也可用于进程调度。用于进程调度时称为“短进程优先(SPE,Shortest Process First)算法”
  • SJF和SPF是非抢占式的算法。但是也有抢占式的版本一一最短剩余时间优先算法(SRTN,Shortest Remaining Time Next)

例题:各进程到达就绪队列的时间、需要的运行时间如下表示。使用非抢占式的短作业优先调度算法,计算各进程的等待时间、平均等待时间、周转时间、平均周转时间、带权周转时间、平均带权周转时间。

进程到达时间运行时间
P107
P224
P341
P454
  • 短作业/进程优先调度算法:每次调度时选择当前己到达且运行时间最短的作业/进程。
  • 因此,调度顺序为:P1→P3→P2→P4

在这里插入图片描述


  • 周转时间 = 完成时间 - 到达时间

  • 周转时间:P1=7-0=7;P3=8-4=4:P2=12-2=10:P4=16-5=11
    Access token invalid or no longer valid

  • 带权周转时间 = 周转时间 / 运行时间

  • 带权周转时间:P1=7/7=1;P3=4/1=4;P2=10/4=2.5;P4=11/4=2.75

  • 等待时间 = 周转时间 - 运行时间

  • 等待时间:P1=7-7=0:P3=4-1=3;P2=10-4=6;P4=11-4=7

  • 平均周转时间=(7+4+10+11)/4=8

  • 平均带权周转时间=(1+4+2.5+2.75)/4=2.56

  • 平均等待时间=(0+3+6+7)/4=4


例题:各进程到达就绪队列的时间、需要的运行时间如下表示。使用抢占式的短作业优先调度算法,计算各进程的等待时间、平均等待时间、周转时间、平均周转时间、带权周转时间、平均带权周转时间。

进程到达时间运行时间
P107
P224
P341
P454
  • 最短剩余时间优先算法:每当有进程加入就绪队列改变时就需要调度,如果新到达的进程剩余时间比当前运行的进程剩余时间更短,则由新进程抢占处理机,当前运行进程重新回到就绪队列。另外,当一个进程完成时也需要调度

在这里插入图片描述


  • 周转时间=完成时间-到达时间
  • 周转时间:P1=16-0=16:P2=7-2=5:P3=5-4=1:P4=11-5=6
  • 带权周转时间=周转时间/运行时间
  • 带权周转时间:P1=16/7=2.28;P2=5/4=1.25;P3=1/1=1;P4=6/4=1.5
  • 等待时间=周转时间-运行时间
  • 等待时间:P1=16-7=9:P2=5-4=1;P3=1-1=0;P4=6-4=2
  • 平均周转时间=(16+5+1+6)/4=7
  • 平均带权周转时间=(2.28+1.25+1+1.5)/4=1.5
  • 平均等待时间=(9+1+0+2)/4=3

  • 优点:“最短的”平均等待时间、平均周转时间
  • 缺点:不公平。对短作业有利,对长作业不利。可能产生饥饿现象。另外,作业/进程的运行时间是由用户提供的,并不一定真实,不一定能做到真正的短作业优先
  • 会导致饥饿,如果源源不断地有短作业/进程到来,可能使长作业/进程长时间得不到服务,产生“饥饿”现象。如果一直得不到服务,则称为“饿死”

2.3 高响应比优先(HRRN)

  • 算法思想:
  • 要综合考虑作业/进程的等待时间和要求服务的时间
  • 算法规则:
  • 在每次调度时先计算各个作业/进程的响应比,选择响应比最高的作业/进程为其服务
  • 既可用于作业调度,也可用于进程调度
  • 非抢占式的算法。因此只有当前运行的作业/进程主动放弃处理机时,才需要调度,才需要计算响应比
  • 响应比 = (等待时间+要求服务时间)/ 要求服务时间

例题:各进程到达就绪队列的时间、需要的运行时间如下表示。使用高响应比优先调度算法,计算各进程的等待时间、平均等待时间、周转时间、平均周转时间、带权周转时间、平均带权周转时间。

进程到达时间运行时间
P107
P224
P341
P454
  • 高响应比优先算法:非抢占式的调度算法,只有当前运行的进程主动放弃CPU时(正常/异常完成,或主动阻塞),才需要进行调度,调度时计算所有就绪进程的响应比,选响应比最高的进程上处理机。
  • 0时刻:只有P1到达就绪队列,P1上处理机
  • 7时刻(P1主动放弃CPU):就绪队列中有P2(响应比=(5+4)/4=2.25)、P3(3+1)/1=4)、P4(2+4)/4=1.5),
  • 8时刻(P3完成):P2(2.5)、P4(1.75)
  • 12时刻(P2完成):就绪队列中只剩下P4

在这里插入图片描述


  • 综合考虑了等待时间和运行时间(要求服务时间)
  • 等待时间相同时,要求服务时间短的优先(SF的优点)
  • 要求服务时间相同时,等待时间长的优先(FCFS的优点)
  • 对于长作业来说,随着等待时间越来越久,其响应比也会越来越大,从而避免了长作业饥饿的问题

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

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

相关文章

从小白到精通,十九项案例实践丨全流程HEC-RAS 1D/2D水动力与水环境模拟

水动力与水环境模型的数值模拟是实现水资源规划、环境影响分析、防洪规划以及未来气候变化下预测和分析的主要手段。然而,一方面水动力和水环境模型的使用非常复杂,理论繁复;另一方面,免费的水动力和水环境软件往往缺少重要功能&a…

ros使用rviz订阅Image类型话题,显示yolov7目标检测结果

开发板深度相机系统Xavierrealsense D455ubuntu18.04 1、首先启动yolov7的ros节点,发布话题/image。 2、终端输入rviz,回车打开rviz,Add——>Image: 3、展开Image选项,选择要订阅的topic,左下角就显示出…

朴素贝叶斯深度解码:从原理到深度学习应用

目录 一、简介贝叶斯定理的历史和重要性定义例子 朴素贝叶斯分类器的应用场景定义例子常见应用场景 二、贝叶斯定理基础条件概率定义例子 贝叶斯公式定义例子 三、朴素贝叶斯算法原理基本构成定义例子 分类过程定义例子 不同变体定义例子 四、朴素贝叶斯的种类高斯朴素贝叶斯&a…

RocketMQ Promethus Exporter

介绍​ Rocketmq-exporter 是用于监控 RocketMQ broker 端和客户端所有相关指标的系统,通过 mqAdmin 从 broker 端获取指标值后封装成 87 个 cache。 警告 过去版本曾是 87 个 concurrentHashMap,由于 Map 不会删除过期指标,所以一旦有 la…

美美游玩规划

2023年的国庆 游玩规划: 时间安排是9月29日到10月2日上午; 可以有三个整天加一个上午,上午可以去一个近一点的地方; 可能要去的景点: 天安门广场、颐和园、西单购物中心、故宫、天坛公园、 毛主席纪念堂(2…

C++之list成员函数应用总结(二百三十七)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 人生格言: 人生…

数据库管理-第108期 因Exadata存储节点操作系统空间异常的紧急处理(20230928)

数据库管理-第108期 因Exadata存储节点操作系统空间异常的紧急处理(20230928) 众所周知,明天放假了,本着对客户数据库软硬件负责任的态度,进行了一次深入彻底的软硬件巡检(就是检查包括计算节点、存储节点…

PyTorch - Dataset 迭代数据接口 __getitem__ 异常处理

欢迎关注我的CSDN:https://spike.blog.csdn.net/ 本文地址:https://spike.blog.csdn.net/article/details/133378772 在模型训练的过程中,加载数据部分,极其容易出现异常,以及不可控的因素,需要通过异常捕获…

k8s1.19使用ceph14

一、静态 pv &#xff08;rbd&#xff09;方式 1、所有k8s节点安装依赖组件 注意&#xff1a;安装ceph-common软件包推荐使用软件包源与Ceph集群源相同&#xff0c;软件版本一致。 cat > /etc/yum.repos.d/ceph.repo << EOF [ceph] nameceph baseurlhttp://mirrors…

【网络协议】TCP报文格式

1.源端口和目的端口 源端口字段占16比特&#xff0c;用来写入源端口号。源端口号用来标识发送该TCP报文段的应用进程。 目的端口字段占16比特&#xff0c;用来写入目的端口号。目的端口号用来标识接收该TCP报文段的应用进程。 2.序号 当序号增加到最后一个时&#xff0c;下…

封装JDBC,实现简单ORM框架

本文将封装JDBC的操作&#xff0c;实现简单的ORM框架&#xff0c;提供3种风格的api来给用户使用&#xff08;1.原生jdbcSqlBuilder&#xff1b;2.类似jpa和mp的&#xff1b;3.注解接口方法&#xff09; 代码仓库&#xff1a;malred/IFullORM 1. 原生JDBCsql构建器 第一步&…

26551-2011 畜牧机械 粗饲料切碎机

声明 本文是学习GB-T 26551-2011 畜牧机械 粗饲料切碎机. 而整理的学习笔记,分享出来希望更多人受益,如果存在侵权请及时联系我们 1 范围 本标准规定了粗饲料切碎机的产品型号、技术要求、试验方法、检验规则、标志、包装、运输与贮存。 本标准适用于加工农作物秸秆等粗饲料…

Docker(一)、linux环境安装Docker

linux环境安装Docker 1、自动下载安装&#xff1a;2、指定yum的安装源3、安装docker社区版4、启动docker5、验证6、demo:从国外自动抽取下载hello-world镜像&#xff0c;并启动6、卸载docker7、安装的时候&#xff0c;会出现Error: Failed to download metadata for repo base:…

Python 3.10.9 Mac m1 无法安装grpc的解决办法

pip install airavata-mft-cli python3.10 -m venv venv source venv/bin/activate pip install grpcio1.47.0rc1 pip install grpcio-tools1.47.0rc1 然后就成了 python -m grpc_tools.protoc -I --python_out. --grpc_python_out. message.proto 参考文章&#xff1a; …

Mysql生产随笔

目录 1. Mysql批量Kill删除processlist 1.1查看进程、拼接、导出、执行 1.2常见错误解决方案 2.关于时区 3.内存占用优化 记录一下生产过程中的一些场景和命令使用方法&#xff0c;不定期进行更新 1. Mysql批量Kill删除processlist 1.1查看进程、拼接、导出、执行 sho…

【AIPOD案例操作教程】斜流风扇轮毂优化

AIPOD是由天洑软件自主研发的一款通用的智能优化设计软件&#xff0c;致力于解决能耗更少、成本更低、重量更轻、散热更好、速度更快等目标的工程设计寻优问题。针对工业设计领域的自动化程度低、数值模拟计算成本高等痛点&#xff0c;基于人工智能技术、自研先进的智能代理学习…

Tableau/Power BI 是什么

目录 1. Tableau 是什么?1.1. Tableau 组件1.2. Tableau 的优劣势 2. Power BI2.1. Power BI 的组成部分2.2. Power BI 概念2.2.1. 容量2.2.2. 工作区2.2.3. 数据集2.2.4. 共享数据集2.2.5. 报表2.2.6. 仪表板2.2.7. 模板应用 1. Tableau 是什么? Tableau 是 Tableau 公司推…

前端架构师之01_ES6_基础

1 初识ES6 简单来说&#xff0c;ECMAScript是JavaScript语言的国际标准&#xff0c;JavaScript是实现ECMAScript标准的脚本语言。 2011年&#xff0c;ECMA国际标准化组织在发布ECMAScript 5.1版本之后&#xff0c;就开始着手制定第6版规范。 存在的问题&#xff1a;这个版本…

linux部署页面内容

/bin&#xff1a;该目录包含了常用的二进制可执行文件&#xff0c;如ls、cp、mv、rm等等。 /boot&#xff1a;该目录包含了启动Linux系统所需的文件&#xff0c;如内核文件和引导加载程序。 /dev&#xff1a;该目录包含了所有设备文件&#xff0c;如硬盘、光驱、鼠标、键盘等等…

新手十分钟也能完成的Unity小游戏打砖块

由Siki学院打砖块游戏启发完成一个非常非常简单&#xff0c;纯新手也能十分钟做出来的小游戏——打砖块。 一.搭建场景 首先我们先在一个空白的3D项目中创建一个Plane平面&#xff0c;将其放置于世界中央位置&#xff0c;长宽设置为2&#xff0c;并为其添加一个材质Material&am…