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

news2024/10/6 18:36:54

在这里插入图片描述

🐌个人主页: 🐌 叶落闲庭
💨我的专栏:💨
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.coloradmin.cn/o/1048725.html

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

相关文章

使用cpolar端口映射的方法轻松实现在Linux环境下SVN服务器的搭建与公网访问

文章目录 前言1. Ubuntu安装SVN服务2. 修改配置文件2.1 修改svnserve.conf文件2.2 修改passwd文件2.3 修改authz文件 3. 启动svn服务4. 内网穿透4.1 安装cpolar内网穿透4.2 创建隧道映射本地端口 5. 测试公网访问6. 配置固定公网TCP端口地址6.1 保留一个固定的公网TCP端口地址6…

深入剖析ThreadLocal使用场景、实现原理、设计思想

前言 ThreadLocal可以用来存储线程的本地数据,做到线程数据的隔离 ThreadLocal的使用不当可能会导致内存泄漏,排查内存泄漏的问题,不仅需要熟悉JVM、利用好各种分析工具还耗费人工 如果能明白其原理并正确使用,就不会导致各种意…

【Verilog 教程】6.2Verilog任务

关键词:任务 任务与函数的区别 和函数一样,任务(task)可以用来描述共同的代码段,并在模块内任意位置被调用,让代码更加的直观易读。函数一般用于组合逻辑的各种转换和计算,而任务更像一个过程&a…

win10搭建Selenium环境+java+IDEA(2)

接着上一个搭建环境开始叙述:win10系统x64安装java环境以及搭建自动化测试环境_荟K的博客-CSDN博客 上一步结尾的浏览器驱动,本人后面改到了谷歌浏览器.exe文件夹下: 这里需要注意,这个新路径要加载到系统环境变量中。 上一步下…

2023-9-28 JZ26 树的子结构

题目链接:树的子结构 import java.util.*; /** public class TreeNode {int val 0;TreeNode left null;TreeNode right null;public TreeNode(int val) {this.val val;}} */ public class Solution {public boolean HasSubtree(TreeNode root1,TreeNode root2) …

吉利微型纯电,5 万元的快乐

熊猫骑士作为一款主打下层市场的迷你车型,吉利熊猫骑士剑指宝骏悦也,五菱宏光 MINI 等热门选手。 9 月 15 日,吉利熊猫骑士正式上市,售价为 5.39 万,限时优享价 4 .99 万元。价格和配置上对这个级别定位的战略车型有一…

力扣刷题-哈希表-判断两个字符串_其他中元素是否一致

242 有效的字母异位词 给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。 示例 1: 输入: s “anagram”, t “nagaram” 输出: true 示例 2: 输入: s “rat”, t “car” 输出: false 说明: 你可以假设字符串只包含小写字母。 解释&#x…

云安全之身份认证与授权机制介绍

认证与授权技术概述 认证,用于证实某事是否真实或有效的过程。认证一般由标识(ldentification)和鉴别(Authentication)两部分组成。 认证技术分类 身份认证:口令认证、生物特征识别 报文认证:报文源的认证、报文宿的认证、报文内容的认证…

网络爬虫--伪装浏览器

从用户请求的Headers反反爬 在访问某些网站的时候,网站通常会用判断访问是否带有头文件来鉴别该访问是否为爬虫,用来作为反爬取的一种策略。很多网站都会对Headers的User-Agent进行检测,还有一部分网站会对Referer进行检测(一些资…

MQ - 34 基础功能:在消息队列内核中支持WebSocket的设计

文章目录 导图概述WebSocket 是什么双工(双向)通信特点和应用场景客户端使用示例WebSocket 协议和消息队列内核中支持 WebSocket 协议支持功能生产消费协议设计支持 WebSocket Server主动消息推送RabbitMQ / Pulsar 如何支持 WebSocket 协议总结导图

Java基础面试题精选:深入探讨哈希表、链表和接口等

目录 1.ArrayList和LinkedList有什么区别?🔒 2.ArrayList和Vector有什么区别?🔒 3.抽象类和普通类有什么区别?🔒 4.抽象类和接口有什么区别?🔒 5.HashMap和Hashtable有什么区别&…

百数服务商——顶杰云,为建筑行业数字化转型“添砖加瓦”

杭州顶杰科技有限公司: 顶杰科技是国内一家行业领先的软件与信息技术服务提供商同时也是百数在建筑业的垂直领域服务商,通过低代码、云计算、AI大数据、IOT、区块链等先进的产品和技术,致力服务于政府、运营商、央国企、制造、金融、教育、能…

AI项目十:Swin Transformer目标检测环境搭建

若该文为原创文章,转载请注明原文出处。 Swin Transformer是做什么的这里不做介绍,主要是记录下学习的全过程,Swin Transformer在搭建和训练的过程中,折腾了很久,主要是在折腾环境。 一、AutoDL租用实例 个人没有GP…

多线程的学习中篇下

volatile 关键字 volatile 能保证内存可见性 volatile 修饰的变量, 能够保证 “内存可见性” 示例代码: 运行结果: 当输入1(1是非O)的时候,但是t1这个线程并沿有结束循环, 同时可以看到,t2这个线程已经执行完了,而t1线程还在继续循环. 这个情况,就叫做内存可见性问题 ~~ 这…

初识Java 11-2 函数式编程

目录 高阶函数 闭包 函数组合 柯里化和部分求值 本笔记参考自: 《On Java 中文版》 高阶函数 ||| 高阶函数的定义:一个能接受函数作为参数或能把函数当返回值的函数。 把函数当返回值的情况: import java.util.function.Function;inter…

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

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

Python接口自动化之unittest单元测试

以下主要介绍unittest特性、运行流程及实际案例。 一、单元测试三连问 1、什么是单元测试? 按照阶段来分,一般就是单元测试,集成测试,系统测试,验收测试。单元测试是对单个模块、单个类或者单个函数进行测试。 将…

迅为龙芯2K1000开发板通过汇编控制GPIO

上一小节,我们使用了 C 语言控制了 gpio,这一小节我们来看一下如何使用汇编来控制 gpio 呢?有的 同学可能会有疑问了,既然我们可以使用 C 语言来控制 gpio,为什么我们还要使用更底层的汇编语言呢, 如果我…

【Read View】Read View如何在MVCC里面工作、事务的隔离级别如何实现等重点知识汇总

目录 Read View 在 MVCC 里如何工作的 隔离级别如何实现的呢 Read View 在 MVCC 里如何工作的 ReadView用于管理事务之间的数据一致性,特别是在并发访问数据库时。 那 Read View 到底是个什么东西? Read View 有四个重要的字段: m_ids &…

Python函数:chr()和ord()

两个函数是基于Unicode编码表进行进行字符与字码之间的转换。 chr()函数是通过字码转换成字符: 如图,坐标(1,4e10)丑 使用chr需要线将坐标相加得到:4e11 chr默认传入10进制的字码. 如图是各进制的字码。 也可以传入其他进制,不过需要在前面传入的参数最前…