高级分布式系统-第9讲 实时调度--静态调度与动态调度

静态调度

在静态调度中,任务组的调度表是通过离线计算得出的。在调度表的生成过程中,必须把所有任务的资源、优先级和同步要求考虑进去,并且确保所有的截止时间要求。这个调度表指明了各个任务的运行起始时间 ,一旦生成就不再变化。在系统运行期间 ,任务调度器只需要根据这张表在指定的时刻启动相应的任务 。

静态调度表是一个周期性的、时间触发的进度表。时间轴被分成一系列基本粒度,每个基本粒度被认为是一个基本循环时间(basic cycle time) 。

采用静态调度的系统只有一种中断 :周期性时钟中断。每个时钟中断都是一个基本粒度的起点。在分布式系统中 ,这种时钟中断必须是全局同步的,同步精度要明显高于基本粒度的持续时间。

在不同节点中运行的任务 ,它们之间的相互制约关系可用优先顺序图,利用优先顺序图很容易得到搜索树 。

动态调度

在动态调度中,大部分或全部调度决策是在系统运行时由任务调度器执行某种调度算法来决定的。也就是说,由动态调度算法在线确定“就绪”任务组中下一个必须服务的任务 。

独立任务的调度:

在利用单一CPU的系统里 ,对一组周期性的、相互独立的强实时任务进行调度的最佳算法是单调速率(Rate Monotonic, RM ) 算法、最早截止时间优先(Earliest Deadline First,EDF ) 算法和最小疏密度( Least

Laxity , LL ) 算法。

信号量:

用来协调不同进程间的数据对象,最主要的应用是共享内存方式的进程间通信。本质上,信号量是一个计数器(非负整数),用于记录对某个资源(如共享内存)的存取状况。一般说来,为了获得共享资源,进程需要执行下列操作:

(1)测试控制该资源的信号量。

(2)若此信号量的值为正,则允许进行使用该资源。进程将信号量减1。

(3)若此信号量为0,则该资源目前不可用,进程进入睡眠状态,直至信号量值大于0,进程被唤醒,转入步骤(1)。

(4)当进程不再使用一个信号量控制的资源时,信号量值加1。如果此时有进程正在睡眠等待此信号量,则唤醒此进程。

互斥量:

控制某一资源同时只允许一个访问者对其进行访问,具有唯一性和排它性。通常是0/1两个状态。

一个互斥量只能用于一个资源的互斥访问,它不能实现多个资源的多线程互斥问题。信号量可以实现多个同类资源的多线程互斥和同步。当信号量为单值信号量时,也可以完成一个资源的互斥访问。

非独立任务的调度:设任务组是由周期性任务形成的,每个任务都拥有共享资源的独占访问权,共享资源(如共享数据结构)是通过信号量(semaphore)进行保护的 ,可以用来实现任务间(inter-task)通信。当使用信号量来协调任务对共享资源的访问时 ,可能遇到两个同步问题 :死锁和优先级倒置 。

死锁问题

(1)优先级较高的任务T2正在运行 ,而任务T1处于就绪状态 。为了访问由信号量S1保护的共享资源(独占访问),T2锁定了S1。

(2)任务T2为了等待事件E的发生,自行转入等待状态。

(3)任务T1得以运行,并在运行中锁定了信号量S2(保护另外一些共享资源)。

(4)事件E发生了,由于T2的优先级高于T1, T2抢占T1,再次开始运行。

(5)假如T2 想要锁定信号量S2必然失败 ,因为S2已经被T1锁定。

(6)T2又进入了等待状态(直到S2 变成可锁定的),任务T1恢复运行。

(7)任务T1试图锁定信号量S1,但失败了 ,因为S1己经被T2锁定。

(8)T1 也进入等待状态(直到S1变成可锁定的)

优先级倒置问题

(1)在T2、T3和T4挂起期间,T1正在运行,并且锁定了信号量S(保护共享资源)。

(2)T2、T3和T4被激活,进入就绪状态,准备运行。

(3)由于T4的优先级最高 ,所以T4抢占T1获得运行权,其他任务进入就绪状态。

(4)T4在运行期间尝试锁定信号量S,由于S已经被T1锁定,T4的锁定操作失败 ,只能进入等待状态 。

(5)下一个高优先级任务T3开始运行,直至结束。然后T2运行至结束。之后T1又获得运行权 。

(6)T1在运行过程中释放了S,T4脱离等待状态 ,锁定信号量S并恢复运行。

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

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

相关文章

Linux:/proc/kmsg 与 /proc/sys/kernel/printk_xxx

目录 前言一、/proc/kmsg1、简介2、如何修改内核日志缓冲区3、dmesgklogctl 函数(来源于 man 手册) 4、扩展阅读 二、 /proc/sys/kernel/printk_xxx三、/dev/kmsg 前言 本篇文章将为大家介绍与 Linux 内核日志相关的一些控制文件,共同学习&am…

C语言经典算法之希尔排序算法

目录 前言 一、代码实现 二、算法的时空复杂度 时间复杂度: 空间复杂度: 前言 建议:1.学习算法最重要的是理解算法的每一步,而不是记住算法。 2.建议读者学习算法的时候,自己手动一步一步地运行算法。 tips:本算…

prometheus常用exporter

一、node-exporter node_exporter:用于监控Linux系统的指标采集器。 未在k8s集群内的linux机器监控 GitHub - prometheus/node_exporter: Exporter for machine metrics 常用指标: •CPU • 内存 • 硬盘 • 网络流量 • 文件描述符 • 系统负载 •…

黑马程序员 Java设计模式学习笔记(一)

目录 一、设计模式概述 1.1、23种设计模式有哪些? 1.2、软件设计模式的概念 1.3、学习设计模式的必要性 1.4、设计模式分类 二、UML图 2.1、类图概述 2.2、类图的作用 2.3、类图表示法 类的表示方式 类与类之间关系的表示方式 关联关系 聚合关系 组合…

记录汇川:H5U于Factory IO测试13

主程序: 子程序: IO映射 子程序: 辅助出料 子程序: 模式选择 子程序: 示教程序 子程序: 手动程序 子程序: 统计程序 子程序: 异常报警 子程序: 自动程序: F…

PXIe‑6378国产替代,16路AI(16位,3.5 MS/s/ch),4路AO,48路DIO,PXI多功能I/O模块

PXIe,16路AI(16位,3.5 MS/s/ch),4路AO,48路DIO,PXI多功能I/O模块 PXIe‑6378是一款同步采样的多功能DAQ设备。 该模块提供了模拟 I/O、数字I/O、四个32位计数器和模拟和数字触发。 板载NI‑STC3…

SIC单晶衬底的常用检测技术

碳化硅(SiC)作为第三代半导体材料,因其宽禁带宽度、高击穿电场强度和高热导率等优异性能,在众多高端应用领域表现出色,已成为半导体材料技术的重要发展方向之一。SiC衬底分为导电型和半绝缘型两种,各自适用…

c++ 开发生态环境、工作流程、生命周期-拾遗

拾遗 1 生态环境初识 当您使用Visual Studio 2019进行C开发时,您将进入C生态环境。以下是一些重要的概念和步骤: C程序的结构: 一个典型的C程序包括源文件(.cpp)、头文件(.h)、编译后的目标文…

javacv和opencv对图文视频编辑-裸眼3D图片制作

通过斗鸡眼,将左右两张相似的图片叠加到一起看,就会有3D效果。 3D图片,3D眼镜,3D视频等原理类似,都是通过两眼视觉差引起脑补产生3D效果。 图片: 图片来源: 一些我拍摄的真*裸眼3D照片 - 哔哩…

LeetCode-1523/1491/860/976

1.在区间范围内统计奇数数目(1523) 题目描述: 给你两个非负整数 low 和 high 。请你返回 low 和 high 之间(包括二者)奇数的数目。 思路一: 这里肯定会想到以low和high分别为上下限,然后遍历…

JS实现网页轮播图

轮播图也称为焦点图,是网页中比较常见的网页特效。 1、页面基本结构: 大盒子focus,里面包含 左右按钮ul 包含很多个li (每个li里面包含了图片)下面有很多个小圆圈 因为我们想要点击按钮,轮播图左右播放&a…

MCU最小系统原理图中四个问题详解——芯片中有很多电源管脚的原因(VDD/VSS/VBAT)、LC滤波、两级滤波、NC可切换元件

前言:本文对MCU最小系统原理图中的四个问题进行详解:芯片中有很多电源管脚的原因(VDD/VSS/VBAT)、LC滤波、两级滤波、NC可切换元件。本文以GD32F103C8T6最小系统原理图举例 目录: 芯片中有很多电源管脚的原因&#x…

ssh远程登录

ssh协议 ---基于 tcp 的 22 号端口 确认是否有ssh包: [rootserver ~] rpm -qa | grep sshopenssh-clients-8.7p1-24.el9_1.x86_64openssh-server-8.7p1-24.el9_1.x86_64 1、 ssh的验证过程 第一阶段:版本协商以及tcp三次握手 第二阶段:秘钥和…

WebServer 跑通/运行/测试(详解版)

👂 椿 - 沈以诚 - 单曲 - 网易云音乐 目录 🎂前言 🌼跑通 (1)系统环境 (2)克隆源码 (3)安装和配置 Mysql (4)写 sql 语句 (5&…

LeetCode114二叉树展开为链表(相关话题:后序遍历)

题目描述 给你二叉树的根结点 root ,请你将它展开为一个单链表: 展开后的单链表应该同样使用 TreeNode ,其中 right 子指针指向链表中下一个结点,而左子指针始终为 null 。展开后的单链表应该与二叉树 先序遍历 顺序相同。 示例…

LabVIEW通过视频识别开发布氏硬度机自动化测量系统

LabVIEW通过视频识别开发布氏硬度机自动化测量系统 概述: 在当前的工业检测与自动化领域,对于精确测量技术的需求日益增长。特别是在材料硬度测试领域,布氏硬度机的自动化测量出现在越来越多的使用中。展示了一个基于LabVIEW开发的布氏硬度…

工业异常检测AnomalyGPT-训练试跑及问题解决

写在前面,AnomalyGPT训练试跑遇到的坑大部分好解决,只有在保存模型失败的地方卡了一天才解决,本来是个小问题,昨天没解决的时候尝试放弃在单卡的4090上训练,但换一台机器又遇到了新的问题,最后决定还是回来…

详谈Python的开发工具

Python作为一种流行的编程语言,在开发过程中需要使用各种工具来提高效率、简化工作流程和改善开发体验。在本文中,我们将介绍一些常用的Python开发工具,包括文本编辑器、集成开发环境(IDE)、虚拟环境管理工具、包管理器…

【数据结构与算法】之数组系列-20240113

这里写目录标题 一、66. 加一二、121. 买卖股票的最佳时机三、136. 只出现一次的数字四、268. 丢失的数字五、350. 两个数组的交集 II 一、66. 加一 简单 给定一个由 整数 组成的 非空 数组所表示的非负整数,在该数的基础上加一。 最高位数字存放在数组的首位&…

这可能是最全面的Java集合面试八股文了

内容摘自我的学习网站:topjavaer.cn 常见的集合有哪些? Java集合类主要由两个接口Collection和Map派生出来的,Collection有三个子接口:List、Set、Queue。 Java集合框架图如下: List代表了有序可重复集合&#xff0c…