操作系统中调度算法(FCFS、RR、SPN、SRT、HRRN)

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/xieminyao123/article/details/79116985

决策模式

决策模式说明选择函数在执行的瞬间的处理方式,通常分为以下两类:

非抢占:一旦进入运行状态,就不会终止直到运行结束。

抢占:当前正在运行的进程可以被打断,并转移到就绪态。

 一个调度算法是否能抢占,对进程的顺序有着极大的影响。

先来先服务FCFS

  先来先服务是最简单的策略,也成为先进先出FIFO。首先它是一个非抢占的。如字面的意思,它根据进程到达时间决定先运行哪一个进程。

  这里给出一个实际的例子。以表格的形式表现出在FIFO策略下各进程的情况。

简单说就是依次执行完成,从时间轴上来看


以表格的形式展现:

 

其中开始时间是上一个进程的结束时间

      结束时间=开始时间+服务/执行时间

      周转周期=结束时间-到达时间

      带权周转时间=周转时间/服务时间

最短进程优先SPN

也称最短作业优先(Short Job First,SJF)。它也是一个非抢占的。是根据服务的时间经行选择。在这里要注意下到达时间的顺序。比如实例中单纯以大小来排序的话是E-A-C-D-B,但正确的排序一定是A-B为开头。以时间为顺序:

 

例子中A运行结束时间为3,这时只有B进程等待。所以A运行结束后直接运行B。B结束后时间点到9,CDE都在等待。这个时候就选择服务时间最少的E,然后是较少的C,最后是D。以表格的形式展示:

 

最短剩余时间优先SRT

SRT是针对SPN增加了抢占机制的版本,就好比例子中B运行时间非常长,在这期间其他所有的进程都在等待,如果将其中断,先处理所需时间少的,运行效率会有显著提升。一定要先明确SRT是抢占的。先给出时间为顺序的图:

 

1. A先运行至2,B到达等待。

2. A运行到3结束,B开始运行。

3. B开始运行,运行到4时,C进程到达,且C只需要4,此时B还需要5。所以先运行C,B继续等待。

4. C运行时间点到达6时,D到达,D需要5,进入等待,排在B后。

5. C运行结束,此时时间点是8,E到达,运行时间只要2,小于等待的BD,直接运行。

6. C运行结束,B开始运行。

7. B运行结束,D开始运行。

以表格的形式展现:

 

 

轮转RR

轮转也称时间片技术(time slicing,SL),对于轮转法,最重要的是时间片的长度。轮转算法以一个周期(q)产生中断,当中断发生时,当前运行的程序置于就绪队列(队尾)中,然后基于FCFS选择下一个就绪作业运行。在这里我们以时间片q=1举例。

q=1,所以一次只能运行一个时间片。

0:A1运转(右标表示运行了几个)

1:A2运转

2:B1运转,A3等待(B开始)

3:A3运转,B2等待

4:B2运转,C1等待,(A结束)

5:C1运转,B3等待(C开始)

6:B3运转,D1等待,C2等待

7:D1运转,C2等待,B4等待(D开始)

8:C2运行,B4等待,E1等待,D2等待

9:B4运行,E1等待,D2等待,C3等待

10:E1运行,D2等待,C3等待,B5等待(E开始)

11:D2运行,C3等待,B5等待,E2等待

12:C3运行,B5等待,E2等待,D3等待

13:B5运行,E2等待,D3等待,C4等待

14:E2运行,D3等待,C4等待,B6等待

15:D3运行,C4等待,B6等待(E结束)

16:C4运行,B6等待,D4等待

17:B6运行,D4等待(C结束)

18:D5运行,D6等待(B结束)

19:D6运行

20:D结束

表格展示:

 

 

高响应比优先HRRN

高响应比优先调度算法

高响应比优先调度算法主要用于作业调度,该算法是对FCFS调度算法和SJF调度算法的一种综合平衡,同时考虑每个作业的等待时间和估计的运行时间。在每次进行作业调度时,先计算后备作业队列中每个作业的响应比,从中选出响应比最高的作业投入运行。 

响应比的变化规律可描述为:

响应比=(等待时间+服务时间)/服务时间

根据公式可知:

当作业的等待时间相同时,则要求服务时间越短,其响应比越高,有利于短作业。

当要求服务时间相同时,作业的响应比由其等待时间决定,等待时间越长,其响应比越高,因而它实现的是先来先服务。

对于长作业,作业的响应比可以随等待时间的增加而提高,当其等待时间足够长时,其响应比便可升到很高,从而也可获得处理机。克服了饥饿状态,兼顾了长作业。






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

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

相关文章

操作系统学习总结(超赞!!!)

我是技术搬运工,好东西当然要和大家分享啦.原文地址 操作系统基本特征 1. 并发 并发性是指宏观上在一段时间内能同时运行多个程序,而并行性则指同一时刻能运行多个指令。 并行需要硬件支持,如多流水线或者多处理器。 操作系统通过引入进程和线程&#xf…

Eclipse安装

1.下载Eclipse及其语言包 打开http://www.eclipse.org/downloads/,下载相应的文件。如下载Eclipse Classic版 打开http://www.eclipse.org/babel/下载相应语言包 2.安装Eclipse Eclipse直接解压,语言包直接解压后覆盖Eclipse解压出来的文件夹中的同名文件…

操作系统的SPOOLING技术

SPOOLING技术(Simultaneous Peripheral Operating On Line) 同时联机外围操作技术,它是关于慢速字符设备如何与计算机主机进行数据交换的一种技术,通常又称假脱机技术。 在多道程序环境下,利用多道程序中的一道或者两道程序来模拟…

每日学习记录5.5

今天把帝国cms的sitmap问题解决了,通过实际操作,感觉对网页前台布局还是有了一定的了解。今天的学习是继续进行DIVCSS的初步学习。以适合公司网站改版。同时从今天起的学习期间,保证一天一篇至少50字的流水账。近日准备发表博客:“…

独立磁盘冗余阵列:RAID

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.csdn.net/fsx2550553488/article/details/79819164 RAID RAID:独立磁盘冗余阵列(Redun…

使用south实现Django的数据库升级迁移

Technorati 标签: django,south,数据库迁移Ruby有牛哄哄的Rails Migration实现数据的升级和迁移,django呢? 有south。 已有的应用要支持south(开发版) 编辑settings.py , 把 ‘south’ 放到INSTALLED_APPS 中 manage.py syncdb 把…

task2 EDA数据分析

目标 了解,验证数据集 了解变量关系,与预测值之间关系 数据处理、特征工程 数据探索性分析 EDA探索性数据分析 通过EDA可实现: 1. 得到数据的直观表现 2. 发现潜在的结构 3. 提取重要的变量 4. 处理异常值 5. 检验统计假设 6. 建立初步…

lua中文教程(第一章 起点)

一 全局变量 全局变量不需要声明,给一个变量赋值后即创建了这个全局变量,访问一个没有初始化的全局变量也不会出错,只不过得到的结果是:nil 如果想删除一个全局变量,只需要将变量赋值为nil 二 词法约定 1 标识符:字母或…

task2 EDA探索性数据分析

1、赛题数据赛题以预测二手车的交易价格为任务,数据集报名后可见并可下载,该数据来自某交易平台的二手车交易记录,总数据量超过40w,包含31列变量信息,其中15列为匿名变量。为了保证比赛的公平性,将会从中抽…

Liaoning Province--保三成功

现在做什么事情怎么都有遗憾,从小到大,每件事情都有遗憾...... 周六,在东电宾馆报道的,刚进宾馆,接待人员对我说有个人认识你,我诧异,看到后我挨个想,我想出来他是天之痕了&#xff…

2021-06-10

局部搜索算法是一种简单的贪心搜索算法,是解决最优化问题的一种启发式算法,该算法每次从当前解的临近解空间中根据启发函数选择一个最优解(也不一定是最优解)作为当前解,直到达到一个局部最优解。本文以求解八皇后问题…

用JavaScript嵌入你的SWF

用JavaScript嵌入你的SWFswfobject.embedSWF(swfUrl, id, width, height, version, expressInstallSwfurl, flashvars, params, attributes)有5个必须的参数和4个可选的参数:swfUrl(String,必须的)指定SWF的URL。 id(S…

.NET(C#) Internals: 以一个数组填充的例子初步了解.NET 4.0中的并行(二)

引言 随着CPU多核的普及,编程时充分利用这个特性越显重要。上篇首先用传统的嵌套循环进行数组填充,然后用.NET 4.0中的System.Threading.Tasks提供的Parallel Class来并行地进行填充,最后对比他们的性能。本文将深入分析Parallel Class并借机…

Ghost安装之后,键盘出现字符出现乱码

今天我安装了G版本的WinServer2003,安装完成之后键盘打字出现乱字符,后来终于发现原来我的输入法模式为数字模式,按FN+insert可以切换回来,问题就解决了.转载于:https://blog.51cto.com/yaojian/314847

.net框架读书笔记---CLR内存管理\垃圾收集(二)

前几天学习了CLR垃圾收集原理和基本算法,但是那些是仅仅相对于托管堆而言的,任何非托管资源的类型,例如文件、网络资源等,都必须支持一种称为终止化(finalization)的操作。 终止化 终止化操作允许一种资源在…

关于三极管偏置电路的思考

最近在做十年前应该做的事情,从最基本的模拟电路实验开始,了解电子的基本概念。还好,对事物的理解,随着阅历增加,理解的程度也不一样。从三极管偏置电路,我想到了人的自我修养和调整。当电路调整到一个合适…

搜索引擎指令站长常用搜索引擎命令汇总

身为一个网站管理员用好各大搜索引擎一些特殊指令,是最基本的网站SEO。逅客百度Google取经看到有前人整理的几个搜索引擎常用指令,单独使用是最基本,能综合使用就会体验搜索的另类魅力。以下搜索引擎指令都以学海网(www.xuehai.net)为例。 一…

Socket源码相关——SocketAddress和InetSocketAddress

目录我的学习过程我的心路历程思考总结我的学习过程 昨天学习qiujuer老师的《Socket网络编程进阶与实战》实战课程中,写了一个简易的client-server聊天项目。我的学习方法是根据课程的一部分思路提示后,自己独自进行编写,出现了很多问题&…

三轮哥

灰太狼发现自从有了犀利哥开始,什么什么哥越来越流行了,就跟当初的各种“门”一样,这不,网上盛传许久的三轮哥,灰太狼今天才有幸看到。 不过话说回来,类似三轮哥这样的人物还是少出一点的好,这玩…

重构手法——提炼函数、搬移函数、以多态取代条件表达式

目录我的心路历程我的学习概括Extract Method(提炼函数)动机*--做法动机--做法*Move Method(搬移函数)动机*--做法动机--做法*Replace Conditional with Polymorphism(以多态取代条件表达式)动机*--做法动机…