从01开始 从01开始
首页
  • 计算机科学导论
  • 数字电路
  • 计算机组成原理

    • 计算机组成原理-北大网课
  • 操作系统
  • Linux
  • Docker
  • 计算机网络
  • 计算机常识
  • Git
  • JavaSE
  • Java高级
  • JavaEE

    • Ant
    • Maven
    • Log4j
    • Junit
    • JDBC
    • XML-JSON
  • JavaWeb

    • 服务器软件
    • Servlet
  • Spring
  • 主流框架

    • Redis
    • Mybatis
    • Lucene
    • Elasticsearch
    • RabbitMQ
    • MyCat
    • Lombok
  • SpringMVC
  • SpringBoot
  • 学习网课的心得
  • 输入法
  • 节假日TodoList
  • 其他
  • 关于本站
  • 网站日记
  • 友人帐
  • 如何搭建一个博客
GitHub (opens new window)

peterjxl

人生如逆旅,我亦是行人
首页
  • 计算机科学导论
  • 数字电路
  • 计算机组成原理

    • 计算机组成原理-北大网课
  • 操作系统
  • Linux
  • Docker
  • 计算机网络
  • 计算机常识
  • Git
  • JavaSE
  • Java高级
  • JavaEE

    • Ant
    • Maven
    • Log4j
    • Junit
    • JDBC
    • XML-JSON
  • JavaWeb

    • 服务器软件
    • Servlet
  • Spring
  • 主流框架

    • Redis
    • Mybatis
    • Lucene
    • Elasticsearch
    • RabbitMQ
    • MyCat
    • Lombok
  • SpringMVC
  • SpringBoot
  • 学习网课的心得
  • 输入法
  • 节假日TodoList
  • 其他
  • 关于本站
  • 网站日记
  • 友人帐
  • 如何搭建一个博客
GitHub (opens new window)
  • 计算机历史

  • 数字电路

  • 计算机组成原理

  • 汇编语言

  • C语言

  • 数据结构

  • 操作系统

    • 我的操作系统学习笔记

    • 我的操作系统实验笔记

    • 操作系统网课-王道考研

      • 0_课程白嫖指南
      • 1_1_操作系统的概念(定义)、功能和目标
      • 1_2_操作系统的特征
      • 1_3_操作系统的发展与分类
      • 1_4_操作系统的运行机制与体系结构
      • 1_5_中断和异常
      • 2_1_1_进程的定义、组成、组织方式、特征
      • 2_1_6_系统调用
      • 2_1_2_进程的状态与转换
      • 2_1_3_进程控制
      • 2_1_4_进程通信
      • 2_1_5_线程概念和多线程模型
      • 2_2_1_处理机调度的概念、层次
      • 2_2_2_进程调度的时机、切换与过程、方式
      • 2_2_3_调度算法的评价指标
        • CPU利用率
        • 系统吞吐量
        • 周转时间
        • 等待时间
        • 响应时间
        • 小结
      • 2_2_4_FCFS、SJF、HRRN调度算法
      • 2_2_5_调度算法:时间片轮转、优先级、多级反馈队列
      • 2_3_1_进程同步、进程互斥
      • 2_3_2_进程互斥的软件实现方法
      • 2_3_3_进程互斥的硬件实现方法
      • 2_3_4_信号量机制
      • 2_3_5_用信号量实现进程互斥、同步、前驱关系
      • 2_3_6_生产者-消费者问题
      • 2_3_7_多生产者-多消费者问题
      • 2_3_8_吸烟者问题
      • 2_3_9_读者-写者问题
      • 2_3_10_哲学家进餐问题
      • 2_3_11_管程
      • 2_4_1_死锁的概念(1)
      • 2_4_2_死锁的处理策略—预防死锁
      • 2_4_3_死锁的处理策略—避免死锁
      • 2_4_4_死锁的处理策略—检测和解除
      • 3_1_1_内存的基础知识
      • 3_1_2_内存管理的概念
      • 3_1_3_覆盖与交换
      • 3_1_4_连续分配管理方式
      • 3_1_5_动态分区分配算法
      • 3_1_6_基本分页存储管理的基本概念
      • 3_1_7_基本地址变换机构
      • 3_1_8_具有快表的地址变换机构
      • 3_1_9_两级页表
      • 43_3_1_10_基本分段存储管理方式
      • 3_1_11_段页式管理方式
      • 3_2_1_虚拟内存的基本概念
      • 3_2_2_请求分页管理方式
      • 3_2_3_页面置换算法
      • 3_2_4_页面分配策略
      • 4_1_1_初识文件管理
      • 4_1_2_文件的逻辑结构
      • 4_1_3_文件目录
      • 4_1_4_文件的物理结构(上)
      • 4_1_4_文件的物理结构(下)
      • 54_4_1_5_文件存储空间管理
      • 4_1_6_文件的基本操作
      • 4_1_7_文件共享
      • 4_1_8_文件保护
      • 4_1_9_文件系统的层次结构
      • 4_2_1_磁盘的结构
      • 4_2_2_磁盘调度算法
      • 4_2_3_减少磁盘延迟时间的方法
      • 4_2_4_磁盘的管理
      • 5_1.2_I-O控制器
      • 5_1.3_I-O控制方式
      • 65_5_1_1_I-O设备的概念和分类
      • 5_1_4_I-O软件层次结构
      • 5_1_5_I-O核心子系统
      • 5_1_6_假脱机技术
      • 5_1_7_设备的分配与回收
      • 5_1_8_缓冲区管理
    • 操作系统
  • Linux

  • 计算机网络

  • Git

  • 数据库

  • 计算机小知识

  • 编译原理

  • 名人堂

  • 计算机基础
  • 操作系统
  • 操作系统网课-王道考研
2023-05-15
目录

223_调度算法的评价指标

# 2.2_3_调度算法的评价指标

各位同学大家好。在这个小节中我们会学习一系列用于评价一个调度算法好坏的一些评价指标,包括CPU利用率、系统吞吐量、周转时间、等待时间和响应时间。   在学习的过程中,大家要注意理解各个指标为什么这么设计,并且要会计算每一个指标。

​

‍

# CPU利用率

首先来看一下什么是CPU利用率,其实在早期的计算机当中,计算机的造价是很昂贵的,特别是CPU部件的造价占了很大一部分,它这个东西基本上就是用钱堆出来的一个很奢侈的东西,并且在现代的这些计算机当中,其实CPU也不便宜,所以因为CPU这么贵,那么人们就会希望让CPU尽可能多的为人们工作,所以就设计了一个叫做CPU利用率的这样一个指标。这个指标用来表示CPU处于忙碌的时间,占总时间的比例,那么利用率就可以用忙碌的时间比上总时间就可以算出利用率。

但是有的题目它不仅仅是会让我们算CPU利用率,还会让我们算某种lO设备的利用率,比如说如果一个计算机当中它只支持单道程序,然后有个作业刚开始的时候需要在CPU运行5秒,然后打印输出5秒之后再执行5秒,然后就结束,

那么在这个过程中CPU利用率先刚开始运行了5秒,然后之后又运行了5秒,总共运行了10秒,CPU处于忙碌的时间是10秒,然后整个过程处理的时间是5+5+5,也就是15,那么就是66.66%。

然后打印机的利用率的话,就是打印机处于忙碌的时间,也就是5秒在比上总时间,那么就是33.33%。但是在真正的考研题目当中,通常会考察多道程序并发执行的情况,这种情况下大家可以用甘特图来辅助计算,这个地方先不展开,在课后习题会有遇到,并且也会有相应的讲解。

​

‍

‍

# 系统吞吐量

那么第二个评价的指标就是叫做系统吞吐量。那么对于计算机来说,肯定是希望用尽可能少的时间可以处理完尽可能多的作业,所以就设计了一个叫做系统吞吐量的指标,用来表示单位时间内完成了多少道作业,所以系统吞吐量可以用,总共完成了多少道作业,再除以总共花了多少时间就可以算的系统吞吐量。

‍

‍

比如说有个计算机处理完10道作业花了100秒,那么吞吐量就是10÷100,那么就是0.1道每秒,也就是平均每秒可以完成0.1道作业,这就是单位时间内完成的作业的数量,这就是系统吞吐量。

​

# 周转时间

第三个指标是周转时间,对于计算机的用户来说,这个用户肯定是很关心自己的作业从提交到完成总共花了多少时间,一般来说这个时间当然是花的越少越好,所以周转时间就是用来反映这样一个所花费时间的指标,就是只从作业被提交给系统开始,到作业完成为止,这段时间到底有多长。

那么它总共包作业周转时间总共包括4个部分,就是作业在外存的后备队列上等待被作业调度的时间,然后进程在就绪队列上的时间,还有进程处于运行态的时间,还有进程处于阻塞态的时间。后面的这三项就是就绪态、运行态和阻塞态这三项在整个作业的处理过程当中是会发生多次的,整个过程中只会有一次作业调度,咱们在之前的小节当中也有介绍过。所以一个作业的周转时间,我们可以用作业的完成时间减掉作业被提交给系统的时间,这样就可以简单的计算出来

另外对于操作系统来说,他肯定是会更关心整体系统的整体表现,所以他会更关心所有的作业周转时间的一个平均值,所以就有另外一个指标叫做平均周转时间,用各个作业的周转时间之和再除以再除以作业的数量。

那么我们再来思考一个这样的问题,对于各个用户提交的这些作业来说,有的作业它的运行时间是短的,有的作业运行时间是长的,所以说如果在周转时间相同的情况下,其实运行时间更长的那些作业,对于用户来说肯定感受会稍微更好一些。

举一个很直观的有味道的例子,比如说我们去排队等厕所,那么你本来只需要使用一分钟,但是你要排队排10分钟,总共整个周转过程你总共花了11分钟,这种感受肯定是很糟糕的,本来自己只需要用一会儿,但是又需要等待那么长的时间。不过对于另外一个人来说,他总共需要使用10分钟,但是他只需要等一分钟。所以另外这个人他的整个周转时间其实也是11分钟,只不过这11分钟当中只有一分钟是用来等待的,所以对于第二个人来说,这一分钟的等待其实对他来说感受没有那么糟糕。

​

‍

‍

所以这就是在周转时间相同的情况下,作业的实际运行时间长短不同所导致的对于用户的感受的这种区别。因此人们又提出了另外一个指标,叫做带权周转时间,就是指作业的周转时间,在比上作业实际运行的时间,因此可以看到对于周转时间相同的两个作业来说,如果哪个作业的实际运行时间更长,那么这个作业相应的被服务的时间所占的比例也就更多,那么带权的周转时间就会更小,用户满意度相应的也会更高,

而对于实际运行时间相同的两个作业来说,肯定是周转时间短的作业,对于用户来说他的满意度会更高,那么周转时间短的话,相应的带权周转时间也会更小,所以通过这个式子我们会发现带权周转时间它肯定是大于等于一的,因为周转时间包含了作业的实际运行时间,它肯定比实际运行时间要更大。那么带权周转时间和周转时间都是一样的,他们肯定都是越小,对于用户的体验来说就会越好。

相应的和平均周转时间一样,也会有一个所谓的平均带权周转时间,这个就是系统会比较关心的一个指标,把各个作业的带权周转时间给加合起来,最后再除以一个作业数。

​

‍

‍

那么这就是周转时间相关的4个指标。

‍

‍

‍

# 等待时间

接下来我们再来看下1个指标叫等待时间,对于计算机的用户来说,肯定是希望自己的作业尽可能少的等待处理机,那么等待时间就是用来度量用户的作业等待处理机,被等待,被服务的时间之和到底是多少,等待越长肯定用户的满意度就越低。

那么我们先来看一下,当一个作业刚开始被提交的时候,它是被放到了外存中的作业后备队列当中,作业在后备队列当中需要等待被服务,也就是被作业调度。

当它被调度以后,这个作业就会放到内存当中,并且建立起相应的进程。当进程建立了之后,它会被CPU服务,也会被 lO设备服务,当然也会有等待被服务的这样一些时间,一直到最后整个进程结束,然后把作业移出内存。

那么对于进程来说,一个进程的等待时间其实指的就是进程被建立起之后开始,开始累计他等待被服务的时间总和是多少,但是需要注意的是他在等待IO完成的期间,其实是正在被IO设备服务的,所以这种时间是不能算到等待时间里的。

另外对于作业来说,我们不仅要考虑它建立了相应的进程之后的这一系列的等待时间,我们还要加上它在外存的后备队列当中等待被调度的这一段时间。所以作业的等待时间和进程的等待时间计算起来是有一些不同的,稍微注意一下。

通过之后的课后习题大家会发现一个现象,一般来说一个作业它总共需要被CPU服务多久,被IO设备服务多久,这些总时间一般来说都是确定不变的,所以调度算法其实只会影响作业或者说进程的一等待时间,当然和之前的那些指标一样,等待时间也有一个对应的与它对应的指标叫做平均等待时间,把所有进程或者作业的等待时间做一个加和再除以作业的数量就可以了。

​

‍

# 响应时间

最后我们再来讲一个叫做响应时间的指标。对于计算机用户来说,如果说他提交了一个请求,比如说就是在键盘里输入了一个调试命令,那么他肯定是希望尽早的被系统服务被回应他提出的请求,所以响应时间指的就是用户从提出请求到首次产生响应所用的时间,这就是响应时间。

​

‍

‍

# 小结

那么我们再来回顾一下小节,我们介绍了5种用来评价调度算法的指标,那么大家要理解各个指标为什么这么设计,并且还要会计算各个指标。

其中CPU利用率和系统吞吐量咱们举了一两个比较简单的例子,后面的其他的这些指标我们会在之后的对于算法的讲解当中在不断的进行实践,所以这个地方暂时没给出具体的例子。

这个小节当中比较容易忘记的是带权周转时间和平均带权周转时间这两个指标,大家需要结合咱们举的比较有味道的例子来理解这个指标为什么这么设计,只要理解了,其实记住它就不难了。

​

‍

‍

‍

‍

‍

‍

‍

‍

在GitHub上编辑此页 (opens new window)
上次更新: 2023/5/16 10:03:43
2_2_2_进程调度的时机、切换与过程、方式
2_2_4_FCFS、SJF、HRRN调度算法

← 2_2_2_进程调度的时机、切换与过程、方式 2_2_4_FCFS、SJF、HRRN调度算法→

Theme by Vdoing | Copyright © 2022-2023 粤ICP备2022067627号-1 粤公网安备 44011302003646号
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式