高级分布式系统-第9讲 实时调度--可调度性分析

news2025/4/21 15:34:00

调度的目的:

分布式实时系统中,很多任务同时尝试访问共享资源(如处理器和网络),调度试图有效地利用这些资源来解决问题,以保证系统是正确的,换句话说是保证系统符合其所有的时间限制。

调度的运行可以采取操作系统形式,由操作系统直接控制硬件;也可采用中间件形式,中间件位于操作系统和应用程序之间。

调度的定义:

针对给定的系统资源和一组实时任务,确定每个任务何时何处执行的整个过程称为调度。

实时调度理论中,主要研究任务实时调度算法和可调度性分析。

实时调度的分类

静态调度与动态调度: 根据调度器做出调度决策的时刻进行区分。

静态调度

静态调度——调度器的调度决策是在编译时做出的,那么这种调度器是静态的(运行前的),调度器退化为分派器。

动态调度

动态调度——调度器的调度决策是在运行期间做出的,即从多个处于“就绪”状态的任务里选择一个任务。动态调度器非常灵活,适合在任务情形不断变化的情况下使用。

任务通常为进程和线程的统称,是实时操作系统获取资源、进行调度的基本单位。

非抢占式调度与抢占式调度: 以任务优先级为依据的两种调度方法

非抢占式调度——一旦处理器给予某个任务,这个任务就一直运行下去,不会被其他任务( 即使其他任务的优先级更高 ) 抢占,直到该任务自己释放处理器。

优先级:许多任务调度是以任务的优先级为基础的。在这种系统中 每 个任 务 都 与 优先 级 编 号 (priority number )相联系 ,优先级编号一般为整数 ,可以是固定的,也可以是变化的 。如下图(非抢占式):

低优先级任务 T1

高优先级任务 T2

抢占式调度——如果优先级高于当前运行任务的新任务准备运行,那么当前运行的任务可以被抢占(被中断),即可以切换到优先级更高的新任务 。

优先级:许多任务调度是以任务的优先级为基础的。在这种系统中每个任务都与优先级编号(priority number )相联系 ,优先级编号一般为整数 ,可以是固定的,也可以是变化的 。如左图(抢占式):

低优先级任务 T1

高优先级任务 T2

可调度性分析

可调度性分析:对于一组给定的任务,如果所有任务都能满足截止时间要求,那么这些任务是可调度的。当系统采用动态调度算法时,若有新任务需要加入系统,则应该进行可调度性分析。可调度性是评价任务调度算法优劣的重要指标 。

基于CPU利用率的分析

基于CPU利用率的分析——首先计算处理器利用率,然后通过一个与该利用率相关的测试条件来判定系统的可调度性。

基于最大响应时间的分析方法

基于最大响应时间的分析方法——将整个分析过程分为两个阶段:分析和判定。分析阶段分析各个任务的最大响应时间,判定阶段将分析阶段得到的任务最大响应时间与该任务的截止时间进行比较。如果所有任务的最大响应时间都不大于其截止时间,则系统是可调度的。

调度测试

基于CPU利用率的测试:一组处于“就绪”状态的任务是否可以通过调度,使得每个任务满足其截止时间要求,可以通过基于CPU利用率的分析方法进行判定,这种方法又称为可调度性测试。

可调度性测试分为三类:充要的(exact)、充分的(sufficient)和必要的( necessary)。

充要可调度性测试算法的复杂性属于一类NP完全(NP-complete) 问题,即使只有一个共享资源也难以实现。一般只做必要性、充分性测试。

任务分类:周期性的、零星的、不定期的

周期性任务按一定的周期到达并请求执行。

零星任务的请求时间是不可预知的,但任意两个请求时间之间存在一个最小时间间隔,可以将零星任务当成周期性任务处理,其任务周期为最小时间间隔。

不定期任务的请求时间不能预先确定,无规律可言。

周期性任务的可调度性测试:

【定理1】如果某任务组中的任务是周期性的,那么必要可调度性测试的条件是任务组里的各个任务的利用系数之和必须满足:u=\sum^n_{i=1}c_i/p_i\le m

其中n为任务数,m为处理器个数。

零星任务和不定期任务的可调度性测试

零星任务可以按【定理1】进行必要可调度性测试,任务周期设置为任意两个请求时间之间的最小时间间隔。不定期任务的请求时间没有任何约束,前面介绍的必要可调度性测试条件无效 。

一般情况下,通过必要可调度性测试得到的肯定结论并不具备充分性。

不同性能调度器导致(a)不可调度,(b)可调度;不满足充分条件!

基于最大响应时间的分析方法

【定理2】任务间的关联关系得到满足的情况下,若任务的最大响应时间不大于任务的截止时间,则该任务称为可调度的。如果任务组中的所有任务都是可调度的,那么该任务组是可调度的。

1)排列最低优先级任务(本例为T4)的持续时间(周期)和截止时间。

2)画出能够抢占最低优先级任务的任务/ISR,并根据抢占情况移动低优先级任务。

3)确定每个任务和ISR可能发生的抢占,并进行恰当移动。

4)重复上述过程,直到最低优先级任务的持续时间结束。

5)判断每个任务是否满足其截止时间要求。

【定理3】设某任务组中的任务是相互独立的、周期性的。在所有任务同时到达的最坏情形下,如果每个任务满足其第一个截止时间要求,那么所有任务的截止时间将始终得到满足。

[例2]设任务组由表中的3个相互独立的任务构成,T1的优先级最高,T3的优先级最低。试判断系统的可调度性

【定理3】续:每个任务的响应时间为Ri。计算推导如下:

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

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

相关文章

Webpack模块打包工具

目录 Webpack模块打包工具知识点自测01.Webpack 简介以及体验目标讲解小结 02.Webpack 修改入口和出口目标讲解小结 03.案例-用户登录-长度判断目标讲解小结 04.Webpack 自动生成 html 文件目标讲解小结 05.Webpack-打包 css 代码目标讲解小结 06.优化-提取 css 代码目标讲解小…

吐血整理,性能测试重要指标+设计真实负载(详细总结)

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 1、性能测试之重要…

8年老鸟,自动化测试经验,测试数据管理分析总结,一篇打通...

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 问题:…

2024年软件测试行发展趋势,“我“如何成为全栈测试工程师?

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 1、测试行业的现状…

26.9K Star,漫画阅读 APP 开源了

今天推荐是一款适用于 Android 6.0 及更高版本的免费开源漫画阅读器,基于 Kotlin 开发的。这款 APP 完全免费、好用、无广告,自带上千个全球漫画源,在线阅读和下载都很方便,是漫画爱好者必备! 它以插件的形式提供了来自…

服务器出现500、502、503错误的原因以及解决方法

服务器我们经常会遇到访问不了的情况有的时候是因为我们服务器被入侵了所以访问不了,有的时候是因为出现了服务器配置问题,或者软硬件出现问题导致的无法访问的问题,这时候会出现500、502、503等错误代码。基于以上问题我们第一步可以先重启服…

uniapp微信小程序投票系统实战 (SpringBoot2+vue3.2+element plus ) -关于我们页面实现

锋哥原创的uniapp微信小程序投票系统实战: uniapp微信小程序投票系统实战课程 (SpringBoot2vue3.2element plus ) ( 火爆连载更新中... )_哔哩哔哩_bilibiliuniapp微信小程序投票系统实战课程 (SpringBoot2vue3.2element plus ) ( 火爆连载更新中... )共计21条视频…

C#,求最长回文字符串的马拉车(Manacher)算法的源代码

一、回文字符串(Palindromic String) 回文字符串(Palindromic String)是指前、后向读起来完全相同的字符串。 回文字符串除了答题似乎没有什么用处 :P 二、求解思路 求解字符串的回文子串的基本思路: 1、遍历每个位…

基于SpringBoot的房屋交易平台的设计与实现

🍅点赞收藏关注 → 私信领取本源代码、数据库🍅 本人在Java毕业设计领域有多年的经验,陆续会更新更多优质的Java实战项目希望你能有所收获,少走一些弯路。🍅关注我不迷路🍅一 、设计说明 1.1 研究背景 互…

深入浅出理解SPP、ASPP、DSPP、MDSPP空间金字塔池化系列结构(综合版)

一、参考资料 目标检测:SPP-net SPP原理及实现 金字塔池化系列的理解SPP、ASPP SPP,PPM、ASPP和FPN结构理解和总结 二、空间金字塔池化(SPP) 原始论文:[1] 1. 引言 传统的卷积神经网络中,池化层通常采用固定的池化层级和固定…

高校站群内容管理系统开发语言各有优势

站群管理系统开发可以选择多种编程语言,具体选择哪种语言最好需要考虑多个因素,包括开发团队的技术栈、项目需求、性能要求、安全性等。下面列举一些常见的编程语言及其适用场景: PHP:PHP是一种广泛使用的服务器端脚本语言&#…

QT通过QPdfWriter类实现pdf文件生成与输出

一.QPdfWriter类介绍 本文代码工程下载地址: https://download.csdn.net/download/xieliru/88736664?spm1001.2014.3001.5503 QPdfWrite是一个用于创建PDF文件的类,它是Qt库的一部分。它提供了一些方法和功能,使您能够创建和写入PDF文件。…

MySQL修炼手册4:分组与聚合:GROUP BY与HAVING的应用

写在开头 MySQL数据库的强大功能为我们提供了丰富的数据处理工具,其中GROUP BY与HAVING的应用使得数据的分组与聚合变得更加灵活和高效。在本篇博客中,我们将深入研究GROUP BY与HAVING的基础知识,并通过实际案例,展示它们在数据分…

select...for update锁详解

select…for update锁详解 select…for update的作用就是:如果A事务中执行了select…for update,那么在其提交或回滚事务之前,B,C,D…事务是无法操作(写)A事务select…for update所命中的数据的…

游戏找不到emp.dll,无法运行的5种解决方法

游戏在运行过程中提示找不到emp.dll文件,这一现象的原因可能涉及到多个层面。首先,emp.dll是一个动态链接库文件,对于特定的游戏运行至关重要,它可能包含了游戏运行所必需的函数、资源或其他关键信息。当系统在加载游戏时无法找到…

【AI】Pytorch 系列:预训练模型使用

1. 模型下载 import re import os import glob import torch from torch.hub import download_url_to_file from torch.hub import urlparse import torchvision.models as modelsdef download_

k8s云原生环境搭建笔记——第二篇

目录 1、使用普通方式安装prometheus和grafana1.1、安装kube-state-metrics容器1.1.1、下载并修改yaml文件1.1.2、导入kube-state-metrics镜像1.1.3、执行yaml文件目录 1.2、安装node-exploer1.2.1、创建名称空间prometheus1.2.2、执行yaml 1.3、安装prometheus1.3.1、创建集群…

【洛谷千题详解】P1980 [NOIP2013 普及组] 计数问题

#include<bits/stdc.h> using namespace std; int main() {int n,x,ans0;cin>>n>>x;for(int i1;i<n;i){int numberi;while(number){int anumber%10;number/10;if(ax) ans;}}cout<<ans<<endl;return 0; }

ssm基于java的自助医疗服务系统的设计与实现+jsp论文

摘 要 现代经济快节奏发展以及不断完善升级的信息化技术&#xff0c;让传统数据信息的管理升级为软件存储&#xff0c;归纳&#xff0c;集中处理数据信息的管理方式。本自助医疗服务系统就是在这样的大环境下诞生&#xff0c;其可以帮助管理者在短时间内处理完毕庞大的数据信息…

代码随想录 Leetcode142. 环形链表 II

题目&#xff1a; 代码(首刷看解析 2024年1月13日&#xff09;&#xff1a; class Solution { public:ListNode *detectCycle(ListNode *head) {if (head nullptr) return nullptr;ListNode* fast head;ListNode* slow head;while (true) {if(fast->next nullptr || fa…