计算机网络-调度算法-2(时间片轮转 优先级调度算法 多级反馈队列调度算法 多级队列调度算法)

文章目录

  • 总览
  • 时间片轮转
    • 时间片大小为2
    • 时间片大小为5
    • 若按照先来先服务算法
  • 优先级调度算法
    • 例题( 非抢占式优先级调度算法)
    • 例题( 抢占式优先级调度算法)
    • 补充
  • 思考
  • 多级反馈队列调度算法
    • 例题
  • 小结
  • 多级队列调度算法

总览

在这里插入图片描述

时间片轮转

分时操作系统是一种允许多个用户共享一台计算机资源的操作系统,它通过时间片轮转的方式为每个用户提供服务
注意其调度算法没有区分任务的紧急程度
在这里插入图片描述

时间片大小为2

在这里插入图片描述
注意此时默认新到达的进程先进入就绪队列,下处理机的进程后进入就绪队列
在这里插入图片描述
P2上处理机,下处理机,此时P3也刚进入就绪队列
在这里插入图片描述
此时P1上处理机,时间片内P4进入就绪队列
在这里插入图片描述
P1时间片结束,进入就绪队列
在这里插入图片描述
P3上时间片,此时时间片内主动放弃,此时也会发生调度
在这里插入图片描述
P2上处理机
在这里插入图片描述
P4上时间片,结束后再放入就绪队列
在这里插入图片描述
P1上处理机,时间片内完成,主动放弃,此时P4上处理机
在这里插入图片描述
此时由于就绪队列为空,所以继续执行P4一个时间片
在这里插入图片描述

时间片大小为5

在这里插入图片描述

若按照先来先服务算法

在这里插入图片描述
先来先服务(FCFS)算法可能会导致进程响应时间增大的原因是缺乏优先级考虑:FCFS算法在选择进程时,仅仅基于进程到达的顺序,而不考虑进程的优先级或者所需的服务时间。这意味着一些需要快速响应的短进程可能会因为排在长进程后面而被延迟处理。

在这里插入图片描述

优先级调度算法

实时操作系统(RTOS)是一种专门为满足实时性要求而设计的操作系统,它能够在外部事件发生时快速接受并处理相应的数据,确保在规定的时间内完成任务并做出响应

在这里插入图片描述

例题( 非抢占式优先级调度算法)

在这里插入图片描述

例题( 抢占式优先级调度算法)

在这里插入图片描述

补充

就绪队列未必只有一个,可以按照不同优先级来组织:有些操作系统可以设置多个就绪队列,每个队列对应不同的优先级。
把优先级高的进程排在更靠近队头的位置:有些操作系统会按照优先级高低在一个就绪队列中动态排队

频繁IO型操作的进程提升其优先级可使得让IO设备尽早投入工作,从而提高资源利用率
在这里插入图片描述

思考

- [ ] List item

多级反馈队列调度算法

实际应用中也可能是非抢占式的

公平:每个进程刚进来都是优先级最高的(优先被处理的)
及时响应:每个新到达的进程都是优先级最高,都会很快被响应
短进程花费时间更少:短进程经过的队列少,相比于长进程,其总共用的时间也少些
不必实现估计进程的运行时间:因为不会按照用户自己定义的时间来决定谁优先执行,都是统一按照队列的流动来的,直接会执行,所以用户造假也没用
灵活调整优先级:如使得IO密集型进程执行完该级的时间后,再将该进程放入原队列,保持其优先级

饥饿:源源不断短进程到来会导致长进程无法得到服务

在这里插入图片描述

例题

P0进入第1级队列,第一级队列的时间片大小只有一个时间片大小,P1执行完一个时间片后,此时还没有结束,便进入下一级队列,
在这里插入图片描述
此时P2到达第一级队列,由于第一级队列此时不为空,处理第一级,处理一个时间片后进入下一级队列,放在队尾
在这里插入图片描述
此时第一级队列为空,会给第二级队列分配时间片,第二级队列队头P1出队,此时分配的时间是两个时间片,此时P1的运行时间还没有全部结束,会被放到第三级队列

在这里插入图片描述
此时第二级队列不为空,P2出队列,运行P2,此时运行一个时间片后,P3进入第一级队列,由于此时第一级队列不为空,此时P2的进程被P1强占,然后P3上处理机
在这里插入图片描述
P3运行一个时间片后,运行完成,被调出内存,然后第二级队列队头P2继续运行,此时运行两个时间片总共运行完成
在这里插入图片描述
此时第一二级队列都空,第三级队列的进程上处理机,此时是四个时间片,此时P1运行完四个时间片后还剩一个时间才能运行2完成

在这里插入图片描述
由于此时P1已经在最下面,此时没办法再往下级队列走了,只会放回原队列队尾,然后再次调入
在这里插入图片描述
然后P1再使用四个时间片中的一个时间片即可完成
在这里插入图片描述

小结

在这里插入图片描述

多级队列调度算法

创建进程后根据分类插入某个队列

交互式进程需要及时的响应,所以优先级高于批处理进程
在这里插入图片描述
固定优先级:高优先级队列不空就先运行高优先级,这样会导致如果系统进程内有内容,那么交互式进程就永远不会被响应
时间片划分:每个时间片分为多个部分,然后分给各个队列中的某个进程执行,那么在时间片片内,任何一类的进程都会响应一次

注意这里各个类型队列中还有不同的调度方法,下列是一个举例(各个队列还可以采用不同的调度算法)
系统进程队列中依然存在许多优先级不同的进程,此时系统进程队列采用优先级调度,此时依然会选择优先级高的进程执行
交互式队列采用时间片轮转调度保证各个各个进程都在一定时间内被响应到
批处理队列:先来先服务,因为不关心响应时间

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

ESP32 LED PWM 控制器

ESP32 具有 LED PWM 控制器,具有 16 个独立通道,可配置为生成具有不同属性的 PWM 信号。 使用 Arduino IDE 通过 PWM 对 LED 进行调光时必须遵循以下步骤: 1.首先,您需要选择一个PWM通道。从 0 到 15 有 16 个通道,一…

初谈C++:引用

文章目录 前言概述引用特性应用场景做参数做返回值 传值、传引用效率比较引用和指针的区别 前言 在学习C语言的时候会遇到指针,会有一级指针、二级指针…很容易让人头昏脑胀。在C里面,引入了引用的概念,会减少对指针的使用。引用相当于给一个…

【FFmpeg】ffplay 命令行参数 ① ( 设置播放分辨率 | 禁用 音频 / 视频 / 字幕 选项 )

文章目录 一、ffplay 命令行参数 - 设置播放分辨率1、强制设置通用播放分辨率 -x -y 参数2、命令行示例 - 正常播放视频3、命令行示例 - 强制设置播放分辨率4、设置 YUV 播放分辨率 -video_size 和 像素设置 -pixel_format5、全屏播放 -fs 参数 二、ffplay 命令行参数 - 禁用 音…

跨境卖家:如何利用自养号测评抢占市场先机?

在当今的跨境电商领域,产品的销量和评价是影响产品在市场上的表现的关键因素。对于卖家而言,自行养号进行产品测评不仅有助于提升销量,更成为了他们在这个竞争激烈的市场中保持竞争力的必备策略。 相较于一些卖家仍然依赖于服务商进行测评&a…

【网络】 WireShark实现TCP三次握手和四次挥手

目录 一、WireShark介绍 二、什么是TCP 三、TCP三次握手 四、TCP四次挥手 一、WireShark介绍 WireShark是一个开源的网络分析工具,用于捕获和分析网络数据包。它可以在多个操作系统上运行,包括Windows、Mac OS和Linux。 使用WireShark,…

【体验有奖】5 分钟函数计算部署 AI 艺术字应用,晒姓氏头像赢 Cherry 键盘!

作者:姜曦(筱姜) 目前,大多数开发者使用的 AI 绘画项目 Stable Diffusion WebUI 难以适应企业多用户、多场景的复杂需求,用户急需一套成熟解决方案去进行基于 Stable Diffusion 的 AI 绘画创业,本实验基于…

【lesson3】高并发内存池的三层框架介绍

文章目录 高并发内存池需要考虑的问题高并发内存池的3个核心部分thread cachecentral cachepage cache 高并发内存池需要考虑的问题 现代很多的开发环境都是多核多线程,在申请内存的场景下,必然存在激烈的锁竞争问题。malloc本身其实已经很优秀&#xf…

代码随想录 Leetcode538. 把二叉搜索树转换为累加树

题目: 代码(首刷看解析 2024年1月31日): class Solution { public:int pre 0;TreeNode* convertBST(TreeNode* root) {if (!root) return nullptr;root->right convertBST(root->right);if (pre 0) {pre root->val;}else {root…

万物简单AIoT 端云一体实战案例学习 之 智能小车

学物联网,来万物简单IoT物联网!! 下图是本案的3步导学,每个步骤中实现的功能请参考图中的说明。 1、简介 1.1、背景 市面上各种遥控的小车很多,小车的性能不同具备的能力也不一样,大概实现的逻辑就是通过遥控器控制小车的前进、后退、左转或者右转。遥控小车具备一定…

【lesson4】高并发内存池ThreadCache(线程缓存)层实现

文章目录 ThreadCache层的结构申请内存逻辑释放内存逻辑自由链表的实现自由链表的成员变量自由链表的成员函数自由链表的完整实现 ThreadCache申请内存过程的实现ThreadCache需要的成员变量ThreadCache需要的成员函数ThreadCache.h文件代码Allocate的实现Deallocate的实现 封装…

实验3:利用Linux的消息队列通信机制实现三个线程间的通信

调用原型 POSIX信号量–无名信号量 POSIX信号量是Pthread线程库提供的一种同步机制,包括无名信号量和有名信号量两种机制。无名信号量,常用于多线程间的同步,也可用于相关进程间的同步(需置于相关进程间的共享内存区中&#xff…

自定义vue通用左侧菜单组件(未完善版本)

使用到的技术&#xff1a; vue3、pinia、view-ui-plus 实现的功能&#xff1a; 传入一个菜单数组数据&#xff0c;自动生成一个左侧菜单栏。菜单栏可以添加、删除、展开、重命名&#xff0c;拖动插入位置等。 效果预览&#xff1a; 代码&#xff1a; c-menu-wrap.vue <t…

模拟电路之运放

滞回比较器&#xff1a; 小幅度波动时候不受影响&#xff0c;除非超过一点范围 当输入信号慢慢增加到UT&#xff0c;就变成负电压 当输入信号慢慢减压到—UT&#xff0c;就变成正电压 电路反向接信号 正反馈&#xff0c;串联电阻接地 调整回差的方法 1.调整电阻的分压 2.…

学习在微信小程序使用富文本修改图片大小的代码,超简单

学习在微信小程序使用富文本修改图片大小的代码&#xff0c;超简单 前言代码 前言 自带img图片或大或小&#xff0c;不适应小程序页面 代码 1、replace方法全局添加图片img标签的style样式 let txt www.qipa250.com //富文本内容 txt txt.replace(/<img/gi,<img s…

c++ 字符串切分split

c 字符串切分split 的举例实现 一共给出了四种方式 1、 strtok 2、 stringstream 3、 字符串查找 4、 基于封装的方式&#xff0c;提供了 c11 foreach 接口 代码 vector<string> split(string s) {vector<string> res;const char *p strtok((char *) s.c_str(),…

linux平台 LED情报板网关项目总结

LED情报板目前已经基本稳定 主要存在两个版本LED1.5 和LED2 两个版本的主要差别是 &#xff1a; 1.1.5的配置文件存在本地 2.0的存在平台 需要通过接口从平台获取 2.1.5的下发消息的时候需要同步返回 2.0的是异步返回&#xff0c;所以1.5的要尽可能完成 不然会导致发 布平台…

C++指针比较

内存中各个数据的存放方式。 数组str1、str2、str3、str4都是在栈中分配的&#xff0c;内存中的内容都为“abc”加一个“\0”&#xff0c;但是他们的位置是不同的&#xff0c;因此代码第15行和第16行输出的都是0. 指针str5、str6、str7、str8也是在栈中分配的&#xff0c;他们…

oj赛(双周赛第二十次)

目录 碰碰车 小码哥与机器人 小码哥的跳棋游戏 竖直打印机 排队 邮箱地址 碰碰车 难度:钻石 占用内存:128 M时间限制:1秒 游乐园玩碰碰车&#xff0c;其中有一种碰碰车是在一条直线上行驶。该碰碰车有一个初始朝向和初始位置&#xff0c;并且以每秒一个单位的速度向初始方…

网络原理-TCP_IP(2)

TCP协议 TCP全称为"传输控制协议(Transmission Control Protocol)".协议如其名,要对数据的传输进行一个详细的控制. TCP协议段格式 源/目的端口号:表示数据从哪个进程来,到哪个进程去. 32位序号/32位确认序号:后面详细讲. 4位TCP报头长度:表示该TCP头部有多少个32位…

【JS逆向实战-入门篇】某gov网站加密参数分析与Python算法还原

文章目录 1. 写在前面2. 请求分析3. 断点分析4. 算法还原 【作者主页】&#xff1a;吴秋霖 【作者介绍】&#xff1a;Python领域优质创作者、阿里云博客专家、华为云享专家。长期致力于Python与爬虫领域研究与开发工作&#xff01; 【作者推荐】&#xff1a;对JS逆向感兴趣的朋…