常见操作系统调度算法研究(1)

FIFO

FIFO全称是first in first out,是操作系统里面常见的一种算法,他就好比是一堆人在排一个队伍,按照先进先出的规则,谁首先排队谁就可以第一个出去。
它的缺点显而易见,如果第一个进去的家伙任务量过大,就会导致处理时间过长,以至于其他人都在他后面排队等待,这样就会导致平均处理任务时间过长。显然,当遇到任务量之间差别过大的情况下,使用FIFO不是一个机智的选择。

SJF

SJF的全称是shortest job first,它的理念与上面的FIFIO恰好相反,不讲究先来后到了,为了效率,先让任务量小的处理,这样就能缩短总等待时间和平均等待时间。
在这里插入图片描述
以下图为例,处理ABC三个程序,显然A的任务量过大,在考虑平均周转时间的前提下,SJF算法显然优于FIFO算法。但是,由于现代的调度程序几乎都是抢占式的,假设有这样一种情况,目前系统刚接受的一批任务,经过SJF算法的筛选,选出来最小的那个正在处理,这时候又来了一批程序,按照抢占式的调度规则,后面来的那一批程序选出一个在它们那一批中最小的,但是仍然比之前SJF算法选出来的任务要大得多,这种情况该如何处理?这里就要涉及到下一个我们要介绍的STCF算法;

STCF算法

如果我们可以解决每当有新的任务加入的时候比较加入的任务与之前处理的任务的大小这个问题,那我我们就不用担心后面来一个很大的任务的时候,由于现代操作系统的调度机制,而造成后来居上从而引发堵塞的情况出现。
在这里插入图片描述

响应时间

说完以上三种便会发现,我们在比较以上三种算法调度时间的快慢的时候用到了平均执行时间与单次执行时间来作为指标进行比较,但是这种算法往往会受限于特定的任务场景造成误差,我们在这里使用了响应时间来作为我们判断操作系统调度快慢的一种方式,响应时间指的是一个任务进入系统直到开始处理的时间之差,它能够较好的客观反映出这个操作系统的调度快慢,但是拿它也不要作为唯一的指标去批判一个操作系统的调度能力,那么我们刚刚的STCF算法便不会那么占优势,但是它确实在防止抢占式系统的调度方式上功勋卓越。

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

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

相关文章

struts2 mysql 乱码_struts2项目插入中文到mysql数据库乱码的解决方法

项目又出了一些小问题,在更新/插入中文数据到mysql数据库时会显示问号。我做了如下工作解决了问题:1. 检查页面编码将所有的jsp页面编码方式、字符集更改为2. 更改数据库字符集/编码方式将mysql配置文件my.ini相关内容改为[mysql]default-character-setu…

常见操作系统调度算法研究(2)

轮转策略 轮转策略(Round-Robin)简称为RR,在RR里面,每个准备就绪的任务只能在有限的时间内运行,也就是说不管这个任务完成与否,都会切换任务到下一个。 由于它要频繁的切换队列,我们可以把准备…

使用Apache Ignite优化Spark作业性能(第1部分)

快来看看他们是如何工作的! 本文的某些部分摘自我的书《 Apache Ignite的高性能内存计算》 。 如果您对这篇文章感兴趣,请查看本书的其余部分,以获取更多有用的信息。 Apache Ignite提供了几种提高Spark作业性能的方法:Ignite RD…

centos8.2安装mysql_为CentOS 8操作系统安装MySQL的方法,以安装MySQL 8为例

在本文中,我们将向你展示如何在CentOS 8操作系统上安装MySQL 8.0,可从默认的CentOS 8存储库中安装最新版本的MySQL数据库服务器8.0版,CentOS 8还提供了MariaDB 10.3,它是MySQL 5.7的直接替代品,但有一些限制&#xff0…

rust中的堆和栈

堆和栈定义: 在数据结构中,栈是一种可以实现“先进后出”(或者称为“后进先出”)的存储结构。假设给定栈 S(a0,a1,…,an-1),则称 a0 为栈底,an-1…

mysql查看索引创建进度_SQL Server查看索引重建、重组索引进度

相信很多SQL Server DBA或开发人员在重建或重组大表索引时,都会相当郁闷,不知道索引重建的进度,这个对于DBA完全是一个黑盒子,对于系统负载非常大的系统或维护窗口较短的系统,你会遇到一些挑战。例如,你创建…

rust中函数 变量 控制结构

变量相关 不可变 let x可变 let nut x常量 const x:T value静态变量 static x:TT::new();可变的静态变量 static mut x:TT::new(); 可能要使用到lazy_static()变量函数体 fn x(a1;T1…) -T{} 如果函数没有返回值 那么返回值就会为unit结构体 struct S {…} 1.元组结构体 struc…

选择Java密码算法第1部分-散列

抽象 这是涵盖Java加密算法的三部分博客系列的第1部分。 本系列介绍如何实现以下目标: 使用SHA–512散列 使用AES–256的单密钥对称加密 使用RSA–4096的公钥/私钥非对称加密 这第一篇文章详细介绍了如何实现SHA–512哈希。 让我们开始吧。 免责声明 这篇文章仅…

mysql order by date_Best practice question for MySQL: order by id or date?

问题This is kind of a noobish question, but its one that Ive never been given a straight answer on.Suppose I have a DB table with the following fields and values:| id | date_added | balance |------------------------------------| 1 | 2009-12-01 19:43:22 | 1…

坚实原则:单一责任原则

单一责任原则是首字母缩写词的第一原则。 “一个班级只有一个改变的理由。” 每个模块或类都应对软件提供的功能的单个部分负责,并且该责任应由类完全封装。 例如,想象一下导航软件的场景。 我们根据给定的方向(北,南&#xf…

rust的项目管理

cargo cargo是rust的包管理工具 创建的一个项目 cargo new expr编写完代码之后记得编译一下,然后运行 cargo build运行项目cargo run 当我们觉得项目编译起来太慢了的时候可以将项目编辑成release版本 cargo run --releasecrate 在 Rust 里,一个项目…

宋利兵 mysql_《MySQL 5.7 Replication新特性》分享之互动问题解答

分享主题《MySQL 5.7 Replication新特性》嘉宾介绍宋利兵,MySQL研发工程师。2009年加入MySQL全球研发团队,从事MySQL复制相关功能的开发。主题介绍主要分享在MySQL 5.7中,Replication(复制)相关的一些新特性,比如多源复制、增强半同步复制、并…

使用Eclipse Deeplearning4j构建简单的神经网络

神经网络导论 深度学习既包含深度神经网络又包含深度强化学习,这是机器学习的子集,而机器学习本身就是人工智能的子集。 广义上讲,深度神经网络执行机器感知,该机器感知从原始数据中提取重要特征,并对每个观察结果做出…

mysql 注入 绕过防火墙_绕过阿里云防火墙继续扫描探测和SQL注入

前言如今的互联网,WAF泛滥的年代,实在让我等脚本小子苦恼ing,尤其是阿里云服务器的自带防护,那不是一般的叫人牙疼,十个站8个站都是阿里云....最近遇到几个站都是阿里云的服务器,比如:泛微e-col…

坚实原则:依赖倒置原则

到目前为止,我们只研究了单一职责 , 打开/关闭 , liskov替换和接口隔离原则。 依赖倒置是我们要研究的最后一个原理之一。 该原则指出 答:高级模块不应依赖于低级模块。 两者都应依赖抽象。 B.抽象不应依赖细节。 细节应取决于…

python处理中文字符串_python字符串中的中文处理

LeetCode 374. Guess Number Higher or LowerWe are playing the Guess Game. The game is as follows: I pick a number from 1 to n. You have to gues ...【HDU】1693 Eat the Treeshttp://acm.hdu.edu.cn/showproblem.php?pid1693 题意:nm的棋盘求简单回路(可以…

java创建类的三个步骤_3个简单步骤即可测试Java 8

java创建类的三个步骤即将发布的Java 8版本为Java开发人员带来了许多新功能,但是升级时始终存在代码破裂的风险。 我们都记得Java 7出厂时有一系列非常严重的错误 。 当然,我们所有人都可以帮助避免在Java 8中出现相同的问题。我今天要介绍的方法是使用…

mybatis嵌套查询和嵌套结果有什么区别_Java面试专题之九:Mybatis面试5个大概率被问到的问题...

1、为什么说 Mybatis 是半自动 ORM 映射工具?它与全自动的区别在哪里?Hibernate 属于全自动 ORM 映射工具,使用 Hibernate 查询关联对象或者关联集合对象时,可以根据对象关系模型直接获取,所以它是全自动的。而 Mybati…

使用Pargon-neo进行5G sync相关的测试

前言 Paragon-neo是Calnex旗下的一款测试仪器,主要用于5G的高精度场景下的PTP与SyncE的测试,它可以提供高达100GbE的测试速度,可以用在ITU-T G.8273.2 C/D类边界时钟测试,符合O-RAN的O-DU和O-RU设备,以及设计和部署5G…

功能Java示例 第1部分–从命令式到声明式

函数式编程(FP)的目的是避免重新分配变量,避免可变的数据结构,避免状态并全程支持函数。 如果将功能性技术应用于日常Java代码,我们可以从FP中学到什么? 在这个名为“ Functional Java by Example”的系列…