操作系统:进程调度算法(FCFS、SJF、HRRN、RR、HPF、MFQ)

进程调度算法也称 CPU 调度算法,毕竟进程是由 CPU 调度的。 

  • 非抢占式调度:当进程正在运行时,它就会一直运行,直到该进程完成或发生某个事件而被阻塞时,才会把 CPU 让给其他进程。
  • 抢占式调度:进程正在运行的时,可以被打断,使其把 CPU 让给其他进程。

1、先来先服务调度算法(FCFS)

这个算法顾名思义,先来先运行,每次都从就绪队列中选取最先到的进程任务让CPU处理,直至这个进程完成或者被阻塞,才会继续从就绪队列中选取第一个进入的进程继续执行。

这个算法对于长作业有利,但对于短作业不利,假如有个长作业排在第一个,则后面的进程要等待很久。它也比较适合CPU繁忙作业的系统,因为这个的话它就不需要频繁的放弃CPU重新排队,能提高CPU的吞吐量。

如果一个进程是I/O繁忙型的,那么它会经常地放弃CPU,进入阻塞状态,等待I/O完成后再进入就绪队列的队尾,这样就会导致它的等待时间和周转时间很长,它会降低I/O的利用率和效率。

2、最短作业优先调度算法(SJF)

前面那个算法对长作业有利,那么这个算法就是对短作业有利。它每次从就绪队列中会选择运行时间最短的进程来运行,这个可以提高CPU的吞吐量(一定时间内完成任务的数量)。

这个算法可以看出它对于长作业是很不利的,可能会导致一些长作业根本不会被选中或者要等待很长时间才能被选中。导致长作业的运转周期变长。

3、高响应比优先调度算法(HRRN

上面两个算法都是比较绝对的执行顺序,对于短作业和长作业并没有平衡它两之间的关系,而这个高响应比调度算法是就解决了这弊端,它是通过计算动态得出此次要从就绪队列中选择哪个进程。

当两个进程的等待时间相同时,需要服务时间短的进程它的优先级高,则此时短作业容易被选中。

当两个进程需要的运行时间相同时,等待时间越长则优先级越高,则会选择等待时间长的进程。

从这样的模式可以兼顾长作业,当等待时间增加时,优先级也会增加,到一定程度其优先级也会很高了,就会获得运行时间,这样的模式有个缺点就是需要进行计算,有点耗费资源。

4、时间片轮转调度算法(RR)

        这的基本思想是将CPU的时间分割成若干个小的时间段,称为时间片,将这个时间片分给每一个进程,在这段时间内这个进程会在CPU中执行。

在这个算法 中有两种情况程序会让出CPU:

  • 当时间片用完了之后这个进程的程序还没有执行完毕,则会让出CPU重新进入就绪队列等待被选中,CPU会继续从就绪队列中选择下一个进程执行。
  •  当时间片还没用完,程序发生阻塞或者执行完毕,也会立即让出CPU。

在这个算法中时间片的大小很重要,要是太小则会导致CPU上下文切换频繁,浪费资源。太长则则对短作业不利,使其等待时间过长,CPU吞吐量下降。

5、最高优先级调度算法(HPF)

这个算法就是给每个进程都设定一个优先级,让优先级高的进程先运行。这个算法可以用在多用户计算机系统,例如有一个用户的是VIP用户,其他是普通用户,那么就是这个VIP用户的优先级要高,它的进程要优先被执行。这个就是最高优先级调度算法。这而这个优先级的设计方式有各种各样。

  • 静态优先级:再创建进程时就已经设定好了进程的优先级,再运行过程中并不会再改变。
  • 动态优先级:再运行的过程中动态的调整进程的优先级,例如程序运行时间增加,则降低其优先级,用户级别降低,降低优先级等等。

这个算法不光有优先级的分别,还有抢占式和非抢占式的区别。

  • 抢占式:一旦就绪队列中有优先级高的进程,则CPU会立即当前正在运行的程序挂起,转而去运行优先级高的那个。
  • 非抢占式:即使就绪队列中有优先级更高的进程,CPU也是将此时这个程序运行完成后再去运行那个优先级高的进程

6、多级反馈队列调度算法(MFQ)

        这个多级反馈队列调度算法是时间片轮转最高优先级两个算法的结合体。

从图中我们可以看到有多个队列,并赋予每个队列不同的优先级,每个队列的优先级从高到低,同时优先级越高的队列时间片分配的越短。 

我们来看看它的工作流程:

  • 新的进程会被放入到第一级队列的末尾,按先来先服务的原则排队等待被调度,如果在第一级队列规定的时间片没运行完成,则将其转入到第二级队列的末尾,以此类推,直至完成;
  • 当较高优先级的队列为空,才调度较低优先级的队列中的进程运行。如果进程运行时,有新进程进入较高优先级的队列,则停止当前运行的进程并将其移入到原队列末尾,接着让较高优先级的进程运行;

可以发现,对于短作业可能可以在第一级队列很快被处理完。对于长作业,如果在第一级队列处理不完,可以移入下次队列等待被执行,虽然等待的时间变长了,但是运行时间也会更长了,所以该算法很好的兼顾了长短作业,同时有较好的响应时间。

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

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

相关文章

离线数仓构建案例一

数据采集 日志数据(文件)到Kafka 自己写个程序模拟一些用户的行为数据,这些数据存在一个文件夹中。 接着使用flume监控采集这些文件,然后发送给kafka中待消费。 1、flume采集配置文件 监控文件将数据发给kafka的flume配置文件…

JAVAEE初阶相关内容第十六弹--网络原理之TCP_IP

目录 1. TCP-IP五层模型 2. UDP协议 2.1 特点 2.2 UDP协议端格式 2.3 校验和 3. TCP协议 3.1 特点 3.2 TCP协议段格式 3.2.1 首部长度 3.2.2 选项 3.2.3 保留6位 3.3 TCP内部的工作机制 3.3.1 确认应答 (1)应答报文ack (2&…

Redis5新特性-stream

Stream队列 Redis5.0 最大的新特性就是多出了一个数据结构 Stream,它是一个新的强大的 支持多播的可持久化的消息队列,作者声明 Redis Stream 地借鉴了 Kafka 的设计。 生产者 xadd 追加消息 xdel 删除消息,这里的删除仅仅是设置了标志位&am…

深入理解和使用volatile关键字

第1章:引言 大家好!今天小黑要和大家聊聊Java并发编程的一个重要话题——volatile关键字。在Java的世界里,掌握并发编程是一项必备技能,尤其是当咱们处理多线程应用时。你可能听说过这样的情况:即使你的代码看起来毫无…

【IEEE独立出版|Ei会议征稿中】第五届信息科学与并行、分布式处理国际学术会议(ISPDS 2024)

第五届信息科学与并行、分布式处理国际学术会议(ISPDS 2023) 2023 5th International Conference on Information Science, Parallel and Distributed Systems 第五届信息科学与并行、分布式处理国际学术会议(ISPDS 2023)定于20…

Cesium 顶点吸附和区域拾取

Cesium 顶点吸附和区域拾取 基于深度实现可以自定义拾取范围大小 // 顶点吸附// const result pickAreaHelper.pickNearest(viewer.scene, movement.endPosition, 32, 32);// 区域拾取const result pickAreaHelper.pickArea(viewer.scene, movement.endPosition, 32, 32);顶…

关系型数据库的数据隔离级别Read Committed与Repeatable Read

一、背景 数据库隔离级别会影响到我们的查询,本文试图以生产中的示例,给你一个直观的认识。 所谓,理论要结合实践,才能让我们理解得更加透彻。 另外,隔离级别的知识面很大,本文也不可能俱全,…

Python+OpenCV实现最强自动扫雷

文章目录 准备实现思路窗体截取雷块分割雷块识别扫雷算法实现关于Python技术储备一、Python所有方向的学习路线二、Python基础学习视频三、精品Python学习书籍四、Python工具包项目源码合集①Python工具包②Python实战案例③Python小游戏源码五、面试资料六、Python兼职渠道 用…

平价的开放式耳机怎么选?推荐几款平价好用的耳机,亲测对比

是不是也在为如何在有限的预算内找到一款性价比高的开放式耳机而烦恼呢?别着急,小编为你精心挑选了几款平价好用的开放式耳机,并亲自进行了对比测试,在这个音乐时代,不需要花大价钱就能拥有高品质的音乐体验&#xff0…

YOLOv8 区域计数 | 入侵检测 | 人员闯入

大家好,昨天的 YOLOv8 新增加了一个功能,区域计数,用这个功能我们能实现很多的任务, 比如入侵检测,流量统计,人员闯入等,使用方式也非常的方便,但是一定要使用最新版的 YOLOv8 代码(2023/12/03更新的代码)。 低版本是不具备这个功能的,上面是演示效果。 使用非常的方…

多要素环境监测一体机-生态环境的守护者

随着人类活动的不断增加,环境问题日益凸显。为了实时了解环境状况,保护生态环境,一款多要素环境监测一体机应运而生。 一、实时监测,掌握环境动态 WX-CSQX12 多要素环境监测一体机能够实时监测空气质量、温湿度、噪音、风速等多…

为什么SSL证书要设有有效期?

在当今的数字化时代,网络安全已经成为了每个企业和个人都必须关注的重要问题。为了保护网站数据的安全传输,SSL证书应运而生。然而,你是否注意到,SSL证书并不是永久有效的,而是有一定的有效期。那么,为什么…