王道操作系统考研笔记——2.1.9 调度算法

2.1.9 调度算法

知识总览

image-20220123152822105

学习各种调度算法的思路

  • 算法思想
  • 算法规则
  • 这种调度算法是用于作业调度还是进程调度?
  • 抢占式或是非抢占式
  • 优点和缺点
  • 是否会导致饥饿(某进程/作业长期得不到服务)

2.1.9.1 先来先服务

知识点说明
英文名FCFS,即First Come First Serve
算法思想主要从公平的角度来考虑,类似于我们生活上排队买东西的例子
用于进程/作业调度用于作业调度时,考虑的是哪个作业先到达后备队列;用于进程调度时,考虑的是哪个进程先到达就绪队列
是否可抢占?非抢占式算法
优缺点优点:公平、算法实现简单;缺点:排在长作业后面的短作业需要等待很长时间,带权周转时间很大,对短作业来说用户体验不好。
是否会导致饥饿

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

image-20220123153554169

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

P1 = 7-0 = 7 ; P2 = 11- 2 = 9 ; P3 = 12-4 = 8 ; P4 = 16-5 =11

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

P1 = 7/7 = 1;P2 = 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

这里需要注意的是,本例中的进程都是纯计算型的过程,一个进程到达后要么在等待,要么在运行。如果是又有计算、又有I/O操作的过程,其等待时间就是周转时间-运行时间-I/O操作的时间。

平均周转时间 = (7+9+8+11)/4 = 8.75

平均带权周转时间 = (1+2.25+8+2.75)/4 = 3.5

平均等待时间 = (0+5+7+7)/4 = 4.75


2.1.9.2 短作业优先

知识点说明
英文名SJF,即Shortest Job First
算法思想追求最少的平均等待时间,最少的平均周转时间、最少的平均带权周转时间。
用于进程/作业调度既可用于作业调度,也可用于进程调度。用于进程调度时被称为“短作业优先(SPF)算法”
是否可抢占?SJF和SPF是非抢占式的算法。但是也有抢占式的版本——最短剩余时间优先算法(SRTN,Shortest Remaining Time Next)
优缺点优点:“最短的”平均等待时间、平均周转时间。缺点:不公平。对短作业有利,对长作业不利。可能产生饥饿现象。另外,作业/进程的运行时间是由用户提供的,并不一定真实,不一定能做到真正的短作业优先
是否会导致饥饿会。如果源源不断地有短作业/进程到来,可能使长作业/进程长时间得不到服务,产生“饿死”现象。

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

image-20220123155710808

image-20220123155736441

相比于FCFS算法,显然SPF算法的平均等待/周转/带权周转时间都要更低。

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

注:抢占式的短作业优先算法又称为最短剩余时间优先算法(SRTN)

image-20220123160105018

image-20220126203229794

image-20220126203251502

相比于前两个算法,这个算法的指标更低。

经过上面的学习,我们可以知道一些知识。但是由于教材的不一,我们还有几个小细节需要注意:

  • 如果题目中没有特别说明,所提到的“短作业/进程优先算法”默认是非抢占式的。
  • 很多书上都会说“SJF调度算法的平均等待时间、平均周转时间最少”。严格来说这个表述的错误的,不严谨的。经过上面的学习我们可以知道最短剩余时间优先算法所得到的指标是最少的。如果仍然要用这里的表述,那我们可以加上前提条件:在所有进程都几乎同时到达时,采用SJF调度算法的平均等待时间、平均周转时间最少。
  • 虽然根据上面的例子,SJF指标比FCFS低,但是实际上并不是最少,因为SRTN更少嘛。但是这个如果在选择题中,没有错误的选项,可以选择“SJF算法的平均等待时间、平均周转时间最少”这个选项。

2.1.9.3 对上述两种算法的思考

FCFS算法是在每次调度的时候选择一个等待时间最长的作业(进程)为其服务。但是没有考虑到作业的运行时间,因此导致了对短作业不友好的问题。

SJF算法是选择一个执行时间最短的作业为其服务。但是又完全不考虑各个作业的等待时间,因此导致了对长作业不友好的问题,甚至会造成饥饿问题。

那么有没有一个算法,即考虑到各个作业的等待时间,又能兼顾运行时间呢?这就要引出来我们下面的算法了。


2.1.9.4 高响应比优先

知识点说明
英文名HRRN,Highest Response Ratio Next
算法思想在每次调度时先计算各个作业/进程的响应比,选择响应比最高的作业/进程为其服务。其中响应比的计算公式为响应比=等待时间+要求服务时间要求服务时间响应比 = \frac{等待时间+要求服务时间}{要求服务时间}=+
用于进程/作业调度既可用于作业调度,也可用于进程调度
是否可抢占?非抢占式的算法。因此只有当前运行的作业/进程主动放弃处理机时,才需要调度,才需要计算响应比。
优缺点综合考虑了等待时间和运行时间(要求服务时间)
是否会导致饥饿不会

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

image-20220126212714064

image-20220126213031446


2.1.9.5 小结

image-20220126213348695

这几种算法主要关心对用户的公平性、平均周转时间、平均等待时间等评价系统整体性能的指标,但是不关心“响应时间”,也并不区分任务的紧急程度,因此对于用户来说,交互性很糟糕。因此这三种算法一般适合用于早期的批处理系统,当然,FCFS算法也常结合其他的算法使用,在现在也扮演着很重要的角色。

在下一部分,我们会讲讲交互式系统的调度算法。

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

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

相关文章

程序员的春天来了,赏花去!说走就走

2019独角兽企业重金招聘Python工程师标准>>> 经历了寒冷的隆冬,阳春三月终于到来,在温暖如棉的风里,赶紧去户外走走吧,享受大自然赐予我们的无限美……春意盎然,正是赏花好时节,每天久坐电脑前的…

王道操作系统考研笔记——2.2.0 交互式系统调度算法

2.2.0 交互式系统调度算法 知识总览 2.2.0.1 时间片轮转 知识点说明英文名RR,Round-Robin算法思想公平地、轮流地为各个进程服务,让每个进程在一定时间间隔内都可以得到响应算法规则按照各进程到达就绪队列的顺序,轮流让各个进程执行一个时…

王道操作系统考研笔记——2.3.1 进程同步和进程互斥

文章目录2.3.1 进程同步和进程互斥2.3.1.1 什么是进程同步?2.3.1.2 什么是进程互斥2.3.1.3 小结2.3.1 进程同步和进程互斥 知识总览 2.3.1.1 什么是进程同步? 在前面,我们说过进程具有异步性的特征。 而我们想让进程执行的顺序是可预知的&…

王道操作系统考研笔记——2.3.2 进程互斥的软件实现方法

文章目录2.3.2 进程互斥的软件实现方法2.3.2.1 单标志法2.3.2.2 双标志先检查法2.3.2.3 双标志后检查法2.3.2.4 Peterson算法2.3.2.5 小结2.3.2 进程互斥的软件实现方法 知识总览 2.3.2.1 单标志法 单标志法的算法思想是:两个进程在访问完临界区后会把使用临界区的…

QTP基础学习(二)启动与设置

1、启动QTP选择要求的Add-in 默认带有3个Add-in,之后可以安装其他的Add-in,如.net的Add-in 2、设置QTP的选项 点击Tools-Options,弹出如下框: 3、建立记录和运行设置 点击Automatic-Record and Run Settings,如下图&am…

王道操作系统考研笔记——2.3.3 进程互斥的硬件实现方法

文章目录2.3.3 进程互斥的硬件实现方法2.3.3.1 中断屏蔽方法2.3.3.2 TestAndSet指令2.3.3.3 Swap指令2.3.3.4 小结2.3.3 进程互斥的硬件实现方法 知识总览 2.3.3.1 中断屏蔽方法 利用开/关中断指令实现中断屏蔽方法,可以使得某进程开始访问临界区到结束期间不允许…

Linux基础--MBR/GPT与parted

关于MBR和GPT这两种分区表,wiki上讲的很清楚。不过有些同学可能看不了,你需要先了解科学上网。这里我就只把它们的结构图贴上,简要说明了。https://zh.wikipedia.org/wiki/%E4%B8%BB%E5%BC%95%E5%AF%BC%E8%AE%B0%E5%BD%95https://zh.wikipedi…

css斜角覆盖阴影

Demo下载 效果如图: css: #box { width: 280px; height: 150px; background: #ff6565; padding: 20px; position: relative; overflow: hidden; } #content { width: 280px; height: 15…

王道操作系统考研笔记——2.3.4 信号量机制

文章目录2.3.4 信号量机制2.3.4.1 引入2.3.4.2 整型信号量2.3.4.3 记录型信号量2.3.4.4 小结2.3.4 信号量机制 知识总览 在1965年,荷兰学着Dijkstra提出了一种卓有成效的实现进程互斥、同步的方法——信号量机制。 2.3.4.1 引入 用户进程可以通过使用操作系统提供…

QT分析之WebKit

该文章整理自 网易博客 http://blog.163.com/net_worm/blog/static/12770241920101831312381/ 转载请注明出处 WebKit是QT4新整合的第三方构件。按照惯例动手分析之前,先了解大概 WebKit由三个模块组成:JavaScriptCore、WebCore 和 WebKit WebKit作为了整…

ViewPager循环

android.support.v4.view.ViewPager ViewPager的使用跟AbsListView,AbsSpinner类似,需要用一个adapter填充数据,同时实现了onPagerChangeListener接口。 ViewPager需要的adapter继承自android.support.v4.view.PageAdapter,getCount返回adapt…

MIT算法导论(一)——算法分析和引论

文章目录1 算法分析及引论1.1 算法1.2 排序1.2.1 插入排序1.2.1.1 插入排序原理1.2.1.2 时间复杂度1.2.1.3 渐进时间复杂度1.2.1.4 回到算法1.2.2 归并排序1.2.2.1 归并排序原理1.2.2.2 归并排序时间复杂度1 算法分析及引论 1.1 算法 算法是一门关注性能的学科,也…

使用Apache Tomcat Maven插件部署运行 Web 项目

2019独角兽企业重金招聘Python工程师标准>>> 什么是Apache Tomcat Maven Plugin? Maven Plugin 是Apache Tomcat 提供的一个Maven插件,它可以在你没有tomcat容器时将任何一个war项目文件部署在该插件上提供访问。 为什么要用Apache Tomcat Ma…

POJ2104 (平方分割)二分查找理解。

题意:任意区间求第k大数 思路: 预处理:利用平方分割(分桶法)把区间切割成B sqrt(n)大小的一块块,然后每个各自排序。 二分第k大数x,接着就需要求[l,r]区间中x的排名,与k比较&#x…

每日一题——leetcode237 删除链表中的结点

1 题目 237. 删除链表中的节点 难度简单 请编写一个函数,用于 删除单链表中某个特定节点 。在设计函数时需要注意,你无法访问链表的头节点 head ,只能直接访问 要被删除的节点 。 题目数据保证需要删除的节点 不是末尾节点 。 示例 1&am…

机器学习的练功心法(一)——机器学习概述

1 机器学习概述 文章目录1 机器学习概述1.1 学习方法1.2 什么是机器学习1.3 监督学习1.4 无监督学习1.5 强化学习1.6 机器学习的开发流程1.1 学习方法 引入:对于机器学习来说,我们需要有一个大局观,什么是大局观?你站的比别人高&…

项目管理规范

从鼬加入的那一周开始,四代就开始着手准备起草代码规范了。代码规范不可少很多人理直气壮的认为,创业团队,或者说人数少的团队根本不需要代码规范。他们的口头禅经常是:“没办法啊!我们需要快速的完成客户的需求啊&…

每日一题——王道考研2.2.4.1

1 题目 从顺序表中删除具有最小值的元素(假设唯一),并由函数返回被删元素的值。空出的位置由最后一个元素填补,若顺序表为空,则显示出错信息并退出运行。 ——出自王道书2023版2.2.4的第二大题第一小题 2 思路 既然…

批处理启动vm虚拟机服务 vm12启动无界面启动vm虚拟机系统 windows上如何操作服务 sc net启动关闭服务...

windows(win10)批处理脚本 打开vm虚拟机的服务,并且开启无界面虚拟机 echo off net start "vds" net start "VMAuthdService" net start "VMnetDHCP" net start "VMware NAT Service" net start "VMUSBArbService" net star…

机器学习的练功心法(二)——概述

2 概述 文章目录2 概述2.1 模型概述2.1.1 预测房价问题2.1.2 符号2.2 代价函数2.3 代价函数的用处2.4 回到问题2.5 梯度下降2.6 梯度下降知识点总结2.7 线性回归模型的梯度下降2.1 模型概述 2.1.1 预测房价问题 在我们要开始下面的问题前,我们先来看一些关于房价预…