王道操作系统考研笔记——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工程师标准>>> 经历了寒冷的隆冬,阳春三月终于到来,在温暖如棉的风里,赶紧去户外走走吧,享受大自然赐予我们的无限美……春意盎然,正是赏花好时节,每天久坐电脑前的…

关于个人防火墙的真相

原文作者:MaD 原文标题:The truth aboutpersonal firewalls电子邮件:mad-factormail.ru作者国籍:俄罗斯声明:1、本人翻译水平有限,有不当之请大家理解。如部分看不懂可以和原文对照。 2、欢迎转…

NOI2015 程序自动分析

Luogu 写个并查集来维护就行了。先合并所有相等的变量,如果有两个不相等的变量相等,那么就输出NO。注意得先合并所有相等的变量,再来判断。因为如果两个操作一起搞的话,可能会有两个变量在某次查询的时候不相等,但后面…

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

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

Linux(Ubuntu 16) 下Java开发环境的配置(二)------Tomcat的配置及常见问题

前言 相比于java JDK的配置,Tomcat的配置简单的多,简直就相当于直接运行了,本文以Tomcat8.0为例进行配置1.Tomcat的下载 地址:https://tomcat.apache.org/download-80.cgi下载上图标示文件即可.然后解压到一个方便的文件夹即可.2.Tomcat的启动 如果你的Tomcat的JDK配置好的话,理…

王道操作系统考研笔记——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 单标志法 单标志法的算法思想是:两个进程在访问完临界区后会把使用临界区的…

js处理上下文代码的2个阶段

1、进入执行上下文 当进入执行上下文(代码执行之前)时,VO里已经包含了下列属性(前面已经说了): 函数的所有形参(如果我们是在函数执行上下文中) — 由名称和对应值组成的一个变量对象的属性被创建;没有传递对应参数的话,那么由名称…

deep learning入门学习

根据知乎的一些大牛的回答总结出的deep learning入门学习的一些material: BE NOTED THAT SOME VIDEOS ARE ON YOUTUBE! I BELIEVE THAT YOU KNOW HOW TO ACESS THEM. 1. Andrew Ng的机器学习前四章的内容(线性回归与逻辑回归) http://open.163.com/special/opencour…

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 中断屏蔽方法 利用开/关中断指令实现中断屏蔽方法,可以使得某进程开始访问临界区到结束期间不允许…

Python Web框架Tornado的异步处理代码演示样例

1. What is Tornado Tornado是一个轻量级但高性能的Python web框架,与还有一个流行的Python web框架Django相比。tornado不提供操作数据库的ORM接口及严格的MVC开发模式,但能够提供主要的web server功能。故它是轻量级的;它借助non-blocking …

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…

MYSQL的空间查询(转帖)

SELECT x(location),y(location) FROM frddata.points; 本文将向各位介绍如何使用MySql5.x中的空间数据库,并展示一下它高效的性能(前提是正确使用)。 本文适合于对SQL和MYSQL熟悉的人员。 步骤1:创建支持空间查询的表 首先来说一…

数据库杂谈(五)——关系数据库语言

文章目录5 关系数据库语言5.1 MySQL简介5.1.1 MySQL的发展历史5.1.2 数据库的用户接口5.1.3 SQL及其概念辨析5.1.4 SQL查询语言的分类5.2 入手5.2.1 回顾——基本和虚表5.2.2 数据准备5.2.3 常用命令5.2.4 导入数据5.2.5 简单的查询5.2.6 条件查询5.2.6.1 条件查询格式5.6.2.1 …

ansible---基础

ansible特点:不需要安装客户端,通过sshd去通信基于模块工作,模块可以由任何语言开发不仅支持命令行使用模块,也支持编写yaml格式的playbook支持sudo安装:yum install -y epel-releaseyum install -y ansible 配置文件&…

Suse 12 安装VMware tool

cd /run/media/root /VMware Tools 查看光盘目录mdkir tool chmod -R 777 /tool 赋予文件夹权限cp -rf /run/media/root /VMware Tools /toolcd /tooltar -zxvf VMwareTools-9.10.0-2476743.tar.gz cd vmware-tools-distrib/ ./vmware-install.pl 执行安装 转载于:https:…

css斜角覆盖阴影

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

Django 模型与 Mysql 数据类型对应

Django 1.11.9 文件路径:site-packages\django\db\backends\mysql\base.py–class DatabaseWrapper _data_types { ‘AutoField’: ‘integer AUTO_INCREMENT’, ‘BigAutoField’: ‘bigint AUTO_INCREMENT’, ‘BinaryField’: ‘longblob’, ‘BooleanFiel…

王道操作系统考研笔记——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 引入 用户进程可以通过使用操作系统提供…