当前位置: 首页 > news >正文

《操作系统 - 清华大学》 9 -2:进程调度:调度原则

进程调度策略:原则、指标与权衡

在计算机系统中,进程调度策略至关重要。我们讲的就是有不同的这种调度策略,那么调度的原则是什么呢?原则就是选择某一个进程执行的依据,即要基于什么样的标准来挑选最合适的进程去执行,这便是调度的原则。

在考虑进程调度时,有诸多因素需要关注。首先,我们要了解进程在计算机系统中的运行状态。进程主要做的事情是访问内存以及让CPU进行计算。从计算机系统层面看,以CPU为例,会呈现出一种波动现象。在某个时刻,CPU占用百分比可能很高,比如进程在进行复杂、频繁的计算;而有时又会突然下降,这是因为进程可能要进行I/O操作。例如读取硬盘中的文件,数据从硬盘传输到内存需要较长时间,此时CPU空闲无事可做,导致占用率下降。

我们期望在CPU空闲时,也就是某个进程等待I/O操作完成后,让其他处于就绪态的进程能够占用CPU资源继续运行,从而使CPU尽量保持忙碌状态,提高系统资源的利用率。而要做到这一点,就需要合理安排CPU繁忙型进程和I/O繁忙型进程,协调好这些进程,让它们充分利用资源,进而提高整个系统的效率。

这就涉及到调度算法的评价指标。在选择调度方法时,我们需要明确评价指标,常见的指标有CPU利用率、吞吐量、周转时间、等待时间和响应时间

  • CPU利用率:CPU利用率越高,通常认为当前系统的效率越高。如果在一段时间内,整体CPU利用率一直保持较高水平,那么可以说进程调度执行得不错。
  • 吞吐量:对于像Web服务器的网络请求、数据库事务处理这类场景,会涉及到单位时间内完成事情的数量,我们用吞吐量(throughput)来表示。吞吐量越高,意味着进程的效率越好。我们希望系统中的不同进程,或者多个进程的整体吞吐量都很高,这样的调度算法对系统吞吐量的支持就更好。
  • 周转时间:从进程最开始启动(创建进程并使其可以运行),到最后完成工作,这个全过程所花费的时间就是周转时间(turn around time)。它由等待时间和服务时间组成,我们希望周转时间越小越好。因为如果一个进程等待时间很长,而服务时间很短,周转时间就会变长,这是我们不希望看到的情况。
  • 等待时间:这里的等待时间是指处于就绪态的进程,等待变为运行态去占用CPU执行的时间,而非阻塞态进程等待被唤醒的时间。我们期望就绪态进程的等待时间越短越好,这样它们就能更快地在CPU上执行任务。
  • 响应时间:从用户或外部设备发出请求,到该请求被进程处理完毕的这段时间,就是响应时间(response time)。显然,响应时间越快越好,特别是对于交互式应用,比如用户按下键盘,系统需要迅速响应。

这些指标可用于评测和分析调度算法,对其进行量化分析。一般人们希望进程或进程提供的服务能更快,但“快”这个概念比较含糊,而上述常用指标能够对“快”进行量化。需要注意的是,这些指标之间往往相互矛盾,很难同时满足所有指标的最优情况。例如,最小响应时间和最大吞吐量就很难同时实现。因此,我们需要寻找一种调度算法,在这些矛盾的指标之间进行平衡,找到一个折中的状态。

在日常生活中,以对水的需求为例可以帮助我们理解。打开水龙头喝水时,希望一打开就迅速有水出来,这体现的是响应时间快;而用粗水管浇花时,打开水龙头后虽然水流到土地的时间较长,但单位时间出水量大,即吞吐量高。这两种情况都是对“快”的不同需求体现,对应着不同的指标。所以在衡量调度算法时,应尽量采用量化方法,避免使用含糊的表述,以免引起误解 。

对于调度算法,我们期望它能达到以下效果:响应时间越小越好,即提出请求能马上得到反馈;响应时间的波动越小越好,避免出现一会儿快一会儿慢的情况;吞吐量越大越好,比如快速完成文件传输;等待时间越小越好,让程序启动后能马上执行 。

由于这些指标相互矛盾,在设计调度算法时,需要有所侧重,进行权衡。不同的应用场合对调度算法的要求也不同。桌面系统更强调交互性,对调度策略的要求较高;数据中心的服务器则更注重吞吐量,需要提供较大带宽来满足视频等服务请求

以Linux系统为例,它针对桌面(desktop)和服务器(server)的调度设置就不一样,会根据不同的应用需求选择更合适的调度策略和算法。

除了上述指标,还有一个重要的衡量因素——公平。在操作系统中,如今进程数量众多,为确保每个进程都能得到CPU的响应和服务,不能让某个进程占用过多的CPU时间,而其他进程很少。公平性体现在每个进程占用CPU的服务时间大致公平,等待占用CPU执行的等待时间也大致公平。基于公平性,也有相应的调度算法,比如公平共享算法,专门用于保证多用户或多进程系统中,各个进程能公平地享受计算资源。

相关文章:

  • 嵌入式系统中总线、指令集与ARM架构解析
  • 智慧校园平台在学生学习与生活中的应用
  • 一周热点:基于向量的推理,而非文本
  • 【最后203篇系列】010 关于矩阵的一点思考
  • PostgreSQL 创建表格
  • JDK17安装方法/如何安装JDK17/环境变量配置
  • Android Activity启动流程详解
  • 第四章 activiti流程 “BPMN2.0规范解密室”
  • Transformer 代码剖析10 - TransformerEmbedding (pytorch实现)
  • 大白话css第五章CSS新特性与前沿技术、跨平台与跨设备适配
  • FakeApp 技术浅析(二):生成对抗网络
  • 传承式的传统企业新零售数字化转型的逆袭之路!
  • 在已安装二进制movit2的情况下使用自编译moveit2
  • Redis分布式锁的实现(Redission)
  • 弱监督语义分割学习计划(2)-使用CoT进行Open Vocabulary Label简单实现类激活图
  • 【AD】3-10 原理图PDF导出
  • 【多模态大模型论文精读】MOSHI:双工实时语音对话大模型
  • java之运算符
  • 大白话TypeScript 第九章:TypeScript 项目的优化、测试与发布
  • 计算机网络概述
  • 专家一对一免费咨询/seo搜索引擎优化书籍
  • 如今做知乎类网站怎么样/百度网络营销的概念
  • 哪个网站做农产品/制作自己的网页
  • 门户cms系统/杭州企业seo
  • 网站建设网站模板/互联网营销师课程
  • 苏州高端网站制作机构/百度app下载安装