当前位置: 首页 > news >正文

DJ3-4 实时调度

目录

3.4.1  实现实时调度的基本条件

1. 提供必要的信息

2. 系统的处理能力强

3. 采用抢占式调度机制

4. 具有快速切换机制

3.4.2  实时调度算法的分类

1. 非抢占式调度算法

2. 抢占式调度算法

3.4.3  常用的几种实时调度算法

1. 最早截止时间优先 EDF(Earliest Deadline First)算法

2. 最低松弛度优先 LLF(Least Laxity First)算法


3.4.1  实现实时调度的基本条件

1. 提供必要的信息

1)就绪时间。这是该任务成为就绪状态的起始时间。

2)开始截止时间和完成截止时间。

3)处理时间。一个任务从开始执行,直至完成所需的时间。  

4)资源要求。任务执行所需的一组资源。

5)优先级。

2. 系统的处理能力强

在实时系统中,通常都有着多个实时任务。若处理机的处理能力不够强,则有可能因处理机忙不过来而使某些实时任务不能得到及时处理。

解决的方法是提高系统的处理能力,其途径有二:

其一仍是采用单处理机系统,但须增强其处理能力,以显著地减少对每一个任务的处理时间;

需要花钱升级单处理机的处理能力

其二是采用多处理机系统。

3. 采用抢占式调度机制

在含有硬实时任务的实时系统中,广泛采用抢占机制。当一个优先权更高的任务到达时,允许将当前任务暂时挂起,而令高优先权任务立即投入运行,这样便可满足该硬实时任务对截止时间的要求。


 

4. 具有快速切换机制

  • 对外部中断的快速响应能力
  • 快速的任务分派能力

3.4.2  实时调度算法的分类

1. 非抢占式调度算法

1)非抢占式轮转调度算法

  1. 调度程序每次选择队列中的第一个任务投入运行
  2. 当该任务完成后,便把它挂在轮转队列的末尾,等待下次调度运行

2)非抢占式优先调度算法

如果在系统中存在着实时要求较为严格的任务,则可采用非抢占式优先调度算法,为这些任务赋予较高的优先级。

  • 当这些实时任务到达时,把它们安排在就绪队列的队首;
  • 等待当前任务自我终止或运行完成后,才能被调度执行

2. 抢占式调度算法

1)基于时钟中断的抢占式优先权调度算法

某实时任务到达后,如果该任务的优先级高于当前任务的优先级,这时并不立即抢占当前任务的处理机,而是等到时钟中断到来时,调度程序才剥夺当前任务的执行,将处理机分配给新到的高优先权任务。

调度时间 ≤ 两个时间中断之间的间隔时间

2)立即抢占的优先权调度算法

一旦出现外部中断,只要当前任务未处于临界区,便能立即剥夺当前任务的执行,把处理机分配给请求中断的紧迫任务。

只要当前进程执行完当前的那条机器指令,实时进程就立马把它踹了。

3.4.3  常用的几种实时调度算法

1. 最早截止时间优先 EDF(Earliest Deadline First)算法

该算法要求在系统中保持一个实时任务就绪队列:

  • 该队列按各任务截止时间的早晚排序
  • 具有最早截止时间的任务排在队列的最前面

调度程序总是选择就绪队列中的第一个任务,为之分配处理机,使之投入运行。

1)非抢占式调度 + EDF 算法

2)抢占式调度 + EDF 算法

  • 采用抢占式调度
  • 任务 A 和 B 周期分别为 20ms 和 50ms
  • 任务 A 和 B 每周期执行时间分别为 10ms 和 25ms

2. 最低松弛度优先 LLF(Least Laxity First)算法

1)LLF 算法

松弛度 = 完成截止时间 - 剩余运行时间 - 当前时间

该算法按照松弛度对实时任务的就绪队列进行排序。松弛度最小的任务排在队列最前面,调度程序总是选择就绪队列中的队首任务执行。

2)抢占式调度 + LLF 算法

  • 采用抢占式调度:但仅当松弛度 = 0 时才抢占
  • 任务 A 和 B 周期分别为 20ms 和 50ms
  • 任务 A 和 B 每周期执行时间分别为 10ms 和 25ms

分析过程:

任务切换时机:

  • 当前任务执行完毕时,选择松弛度最小的任务执行
  • 某一任务松弛度 = 0 时,选择该任务执行

注意:当某一新任务到达时,即使它的松弛度比当前任务的小,只要松弛度不为 0,就不能进行抢占!这样可以减少任务切换的开销。

执行顺序:

3)抢占方式和时机

① 当队列中等待的任务的松弛度 = 0 时才进行抢占。如:20ms 时,虽然 A2 的松弛度比 B1 的松弛度小,但是 A2 并没有抢占 B1 。

② 当任务执行结束或无任务执行时,再比较队列中等待的任务的松弛度,较小的先执行。

 

相关文章:

DJ3-4 实时调度

目录 3.4.1 实现实时调度的基本条件 1. 提供必要的信息 2. 系统的处理能力强 3. 采用抢占式调度机制 4. 具有快速切换机制 3.4.2 实时调度算法的分类 1. 非抢占式调度算法 2. 抢占式调度算法 3.4.3 常用的几种实时调度算法 1. 最早截止时间优先 EDF(Ea…...

Oracle之PL/SQL游标练习题(三)

游标练习题目1、定义游标:列出每个员工的姓名部门名称并编程显示第10个到第20个记录2、定义游标:从雇员表中显示工资大于3000的记录,只要姓名、部门编号和工资,编程显示其中的奇数记录3、用游标显示所有部门编号与名称&#xff0c…...

docker运行服务端性能监控系统Prometheus和数据分析系统Grafana

文章目录一、Prometheus的安装和运行1、使用docker拉取镜像2、创建prometheus.yml文件3、启动容器4、查看启动是否成功5、记录安装过程中出现的错误二、Grafana的安装和运行1、使用docker拉取镜像2、创建grafana3、运行grafana4、查看grafana运行日志5、登录grafana一、Prometh…...

【Linux】【应用层】多线程编程

一、线程创建 Linux 中的 pthread_create() 函数用来创建线程&#xff0c;它声明在<pthread.h>头文件中&#xff0c;语法格式如下&#xff1a; int pthread_create(pthread_t *thread,const pthread_attr_t *attr,void *(*start_routine) (void *),void *arg);各个参数…...

GameFramework 框架详解之 如何接入热更框架HybridCLR

一.前言 HybridCLR是一个特性完整、零成本、高性能、低内存的近乎完美的c#热更新方案 GameFramework是一个非常出色完整的基于Unity引擎的游戏框架,里面包含了非常多的模块,封装非常完整。 以前市面上的热更大多数都是Lua为主,后来出了一个ILRuntime的C#热更框架,虽然性能…...

全国青少年软件编程(Scratch)等级考试二级考试真题2023年3月——持续更新.....

一、单选题(共25题,共50分) 1. 小猫的程序如图所示,积木块的颜色与球的颜色一致。点击绿旗执行程序后,下列说法正确的是?( ) A.小猫一直在左右移动,嘴里一直说着“抓到了”。 B.小猫会碰到球,然后停止。 C.小猫一直在左右移动,嘴里一直说着“别跑” D.小猫会碰到球,…...

HTML2.1列表标签

列表标签种类 无序列表 有序列表 自定义列表 使用场景&#xff1a;在列表中按照行展示关联性内容。 特点&#xff1a;按照行的形式&#xff0c;整齐显示内容。 一、无序列表 标签名说明ul无序列表整体&#xff0c;用于包裹li标签li表示无序列表的每一项&#xff0c;用于包…...

在 Flutter 多人视频通话中实现虚拟背景、美颜与空间音效

前言 在之前的「基于声网 Flutter SDK 实现多人视频通话」里&#xff0c;我们通过 Flutter 声网 SDK 完美实现了跨平台和多人视频通话的效果&#xff0c;那么本篇我们将在之前例子的基础上进阶介绍一些常用的特效功能&#xff0c;包括虚拟背景、色彩增强、空间音频、基础变声…...

Ambari-web 架构

Ambari-web 使用的前端 Embar.js MVC 框架实现&#xff0c;Embar.js 是一个 TodoMVC 框架&#xff0c;涵盖了单页面应用&#xff08;single page application&#xff09;几乎所有的行为 Nodejs 是一个基于 Chrome JavaScript 运行时建立的一个平台&#xff0c;用来方便的搭建…...

对接百思买Best Buy EDI 的注意事项

在此前的文章&#xff1a;《Best Buy Drop Ship(Commerce hub) EDI业务测试常见报错及解决》中&#xff0c;我们介绍了在业务测试过程中遇到的常见报错及解决方案&#xff0c;以下在此基础上进行补充。 数据未能成功发送给Best Buy可能遇到的情况 Best Buy EDI项目传输业务报…...

2023年郑州重点建设项目名单公布,中创“算力数据中心”项目入选!

4月7日&#xff0c;郑州市人民政府网站公布2023年郑州市重点建设项目名单&#xff0c;名单共列项目680个&#xff0c;总投资1.08万亿元&#xff0c;年度计划投资2691亿元。 在创新驱动能力提升项目名单里&#xff0c;中创算力与人民网人民数据&#xff08;国家大数据灾备中心&a…...

Pytorch 容器 - 1. Module类介绍

目录 1. 基于Module构建自己的网络 2. Module的初始化变量 3. Modules中需要子类 forward() 4. Modules中其他内置函数 1. 基于Module构建自己的网络 torch.nn.Module是所有神经网络模块的基类&#xff0c;如何定义自已的网络&#xff1a; 由于 Module 是神经网络模块的基…...

百度墨卡托坐标转化笔记

一、墨卡托坐标转化 调研了python和java多种实现方式的转换&#xff0c;发现有的不符合需求&#xff0c;原因还没找到。 我是用百度地图返回的poi边界&#xff08;返回的是墨卡托坐标&#xff09; 转换的原理没有深入研究&#xff0c;直接拿来用的&#xff0c;测试可行&…...

每日学术速递4.12

CV - 计算机视觉 | ML - 机器学习 | RL - 强化学习 | NLP 自然语言处理 Subjects: cs.HC 随着新的“生成代理”论文的发布&#xff0c;LLM刚刚达到了一个重要的里程碑——通过使用 LLM&#xff0c;生成代理能够在受《模拟人生》启发的交互式沙箱中模拟类人行为。代理架构扩展…...

HarmonyOS/OpenHarmony公司级技术开发团队硬件基本配置清单

有朋友公司咨询进入HarmonyOS/OpenHarmony领域&#xff0c;组建技术团队&#xff0c;硬件设备的基本配置应该是怎么样的比较合适&#xff1f;这个是进入鸿蒙开发领域相关配置的第一步&#xff0c;我们以一个基本的团队配置为例说明&#xff0c;供想进入的团队参考。 HarmonyOS/…...

新一代信息技术赋能,安科瑞搭建智慧水务体系的新思路

随着新时期治水方针的逐步落实&#xff0c;水利现代化、智能化建设已开启&#xff0c;物联网、图像识别、数字孪生等新技术的成熟&#xff0c;也为智慧水务体系的搭建提供了技术保障&#xff0c;新时代治水新思路正逐步得到落实。本文对智慧水务的总体架构与包含的建设内容进行…...

37岁测试工程师被裁,120天没找到工作,无奈...

从短期来看&#xff0c;程序员的确算是个不错的工作&#xff0c;薪水也比一般岗位高很多&#xff0c;但是从长远来看&#xff0c;程序员的中年危机会比其他岗位来的更早&#xff0c;很多程序员只有到了35岁左右&#xff0c;才能真正认清楚互联网行业&#xff0c;尤其是被裁之后…...

Java容器使用注意点

前置&#xff1a;问题 判空集合转map集合遍历集合去重集合转数组数组转集合 一&#xff1a;集合判空 《阿里巴巴 Java 开发手册》的描述如下&#xff1a; 判断所有集合内部的元素是否为空&#xff0c;使用 isEmpty() 方法&#xff0c;而不是 size()0 的方式。 我们在开发中也…...

密文题解(图论+字典树)

题目大意 有一段长度为nnn的密文&#xff0c;密文的每一位都可以用一个非负整数来描述&#xff0c;并且每一位都有一个权值aia_iai​。你可以操作任意多次&#xff0c;每次操作可以选择任意一段密文&#xff0c;花费选择的所有位上权值的异或和的代价获得这段密文每一位的异或…...

Baumer工业相机堡盟工业相机如何通过BGAPISDK里的工具函数来计算工业相机的实时帧率(C#)

Baumer工业相机堡盟工业相机如何通过BGAPISDK里函数来计算相机的实时帧率&#xff08;C#&#xff09;Baumer工业相机Baumer工业相机的帧率的技术背景Baumer工业相机的帧率计算方式在BufferEvent声明显示FrameID设计显示帧率的函数Baumer工业相机通过BGAPI SDK计算帧率的优势​B…...

5分钟快速上手:LuckyLilliaBot QQ机器人完整部署指南

5分钟快速上手&#xff1a;LuckyLilliaBot QQ机器人完整部署指南 【免费下载链接】LuckyLilliaBot 支持 OneBot 11、Satori 和 Milky 协议 项目地址: https://gitcode.com/gh_mirrors/li/LuckyLilliaBot 你是否正在寻找一款简单易用、功能强大的QQ机器人框架&#xff1f…...

避开这3个坑,你的MAX30102心率数据才准确(Arduino实测经验)

避开这3个坑&#xff0c;你的MAX30102心率数据才准确&#xff08;Arduino实测经验&#xff09; 在可穿戴设备和健康监测领域&#xff0c;MAX30102传感器因其集成度高、体积小巧而广受欢迎。但许多开发者在使用过程中常遇到数据不稳定、读数漂移等问题。本文将基于实际项目经验&…...

告别Arduino IDE:在Visual Studio Code中搭建高效Arduino开发环境

1. 为什么选择VS Code开发Arduino项目 第一次接触Arduino开发时&#xff0c;大多数人都是从官方Arduino IDE开始的。这个简单的开发环境确实能快速上手&#xff0c;但随着项目复杂度增加&#xff0c;它的局限性就越来越明显&#xff1a;代码补全功能弱、项目管理混乱、调试工具…...

使用taotaokencli工具一键配置多开发环境下的ai代理

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 使用 TaoToken CLI 工具一键配置多开发环境下的 AI 代理 基础教程类&#xff0c;介绍如何通过 npx 或全局安装 TaoToken 提供的命令…...

深度学习入门实战:从PyTorch环境搭建到CNN模型调优全指南

1. 项目概述&#xff1a;一个面向初学者的深度学习实战指南 如果你刚刚踏入深度学习的大门&#xff0c;面对PyTorch、TensorFlow这些框架&#xff0c;以及各种复杂的模型代码感到无从下手&#xff0c;那么“datawhalechina/leedl-tutorial”这个开源项目&#xff0c;很可能就是…...

RAG 系统性能优化完全指南:从“答非所问“到“精准命中“的六步进化

&#x1f3af; RAG 系统性能优化完全指南&#xff1a;从"答非所问"到"精准命中"的六步进化 一句话总结&#xff1a;本文用餐厅备菜的类比&#xff0c;拆解 RAG 系统六大优化环节——从智能切菜、混合找料、精选食材到严控火候&#xff0c;让你的 AI 回答又…...

从赛场到职场:一份高职物联网技能大赛任务书的实战拆解与能力映射

1. 竞赛任务书背后的物联网技术全景 高职物联网技能大赛的任务书就像一份浓缩版的行业项目说明书&#xff0c;里面藏着物联网技术的完整技术栈。我第一次看到这份任务书时&#xff0c;发现它完美地覆盖了物联网的三大层级&#xff1a;感知层、传输层和应用层。 感知层设备选型与…...

2026年高口碑GNSS变形监测一体机推荐:提升水库安全解决方案

随着基础设施监测需求的上升&#xff0c;单北斗形变监测一体机逐渐成为各大工程的首选。利用GNSS桥梁形变监测技术、这些设备能够实时监控水库和大坝重要结构的安全情况。单北斗GNSS应用在数据传输和处理上&#xff0c;展现出高效性与可靠性。用户在选择时应关注不同型号的价格…...

CentOS 7服务器上,从零搞定NVIDIA驱动和CUDA 11.1的保姆级避坑指南

CentOS 7服务器NVIDIA驱动与CUDA 11.1实战避坑手册 接手一台老旧GPU服务器时&#xff0c;最令人头疼的莫过于搭建深度学习环境。那些看似简单的安装步骤背后&#xff0c;往往隐藏着无数个让新手崩溃的"坑"。本文将带你穿越雷区&#xff0c;用最稳妥的方式在CentOS 7上…...

Cursor Pro功能完全解锁指南:三步实现免费无限使用终极方案

Cursor Pro功能完全解锁指南&#xff1a;三步实现免费无限使用终极方案 【免费下载链接】cursor-free-vip [Support 0.45]&#xff08;Multi Language 多语言&#xff09;自动注册 Cursor Ai &#xff0c;自动重置机器ID &#xff0c; 免费升级使用Pro 功能: Youve reached you…...