第4讲 实时软件设计方法 主讲 : 黎忠文

61
4 4 第第第第第第第第 第第第第第第第第 主主 : 主主主

Upload: cynthia-mcmahon

Post on 02-Jan-2016

104 views

Category:

Documents


6 download

DESCRIPTION

第4讲 实时软件设计方法 主讲 : 黎忠文. 内容提要 本讲首先讲述了 RSTAD 的一些相关概念,并以行驶监控系统案例介绍了其应用步骤和方法。 介绍了 DARTS 的相关知识,并以行驶监控系统案例介绍其使用步骤和方法。 对本讲中介绍的各种并发和实时软件设计方法进行比较。 最后概述了使用性能模型和应用实时调度理论进行软件设计性能分析的过程。. 目 录 4.1 实时系统的结构化分析与设计 4.2 实时系统设计方法 4.3 并发和实时软件设计方法的比较 4.4 并发与实时系统软件设计性能分析. 4.1 实时系统的结构化分析与设计. 4.1.1 基本概念. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: 第4讲  实时软件设计方法 主讲 :   黎忠文

第第 44 讲 实时软件设计方法讲 实时软件设计方法

主讲 : 黎忠文

Page 2: 第4讲  实时软件设计方法 主讲 :   黎忠文

23/4/2023/4/20 22

内容提要

• 本讲首先讲述了 RSTAD 的一些相关概念,并以行驶监控系统案例介绍了其应用步骤和方法。

• 介绍了 DARTS 的相关知识,并以行驶监控系统案例介绍其使用步骤和方法。

• 对本讲中介绍的各种并发和实时软件设计方法进行比较。

• 最后概述了使用性能模型和应用实时调度理论进行软件设计性能分析的过程。

Page 3: 第4讲  实时软件设计方法 主讲 :   黎忠文

23/4/2023/4/20 33

目 录

4.1 4.1 实时系统的结构化分析与设计实时系统的结构化分析与设计

4.2 4.2 实时系统设计方法实时系统设计方法

4.3 4.3 并发和实时软件设计方法的比较并发和实时软件设计方法的比较

4.4 4.4 并发与实时系统软件设计性能分析并发与实时系统软件设计性能分析

Page 4: 第4讲  实时软件设计方法 主讲 :   黎忠文

23/4/2023/4/20 44

• 转换可以是数据转换或控制转换。• 在设计过程中,功能被映射为模块。• 以状态转换图形时表示的有限状态机用于定义系统的行

为特征。• 控制转换表示的是状态转换图的执行过程。 • 实体关系( ER )模型用于显示系统中数据存储之间的关

系模型。 • 模块内聚在模块分解过程中作为一种标准来使用,用于

确定模块内部的强度或统一性。 • 模块耦合在模块分解过程中作为一种标准来使用,用于

判断模块间连接性的程度。

4.1 实时系统的结构化分析与设计4.1.1 基本概念

Page 5: 第4讲  实时软件设计方法 主讲 :   黎忠文

23/4/2023/4/20 55

4.1.2 表示法

4.1 实时系统的结构化分析与设计

• 实时结构化分析中使用了数据流 / 控制流图。图 4-1 中显示的是用于数据流 / 控制流图的 Ward/Mellor 表示法。• 状态转换图是有限状态机的图形表示法。• 实体关系图是E-R 模型的图形表示法。• 结构图用于显示程序分解为模块的方式,还用于显示模块间的接口。

图 4-1 实时结构化分析表示法

Page 6: 第4讲  实时软件设计方法 主讲 :   黎忠文

23/4/2023/4/20 66

4.1.3 使用方法的步骤

实时结构化分析 在实时结构化分析阶段,将会发生以下活动 :a) 开发系统环境图。b) 实现数据流 / 控制流的分解——系统要分解为多个功能并

且要以数据流或控制流的形式定义功能间的接口。c) 开 发 控 制 转 换 ( Ward/Mellor ) 或 控 制 规 范

( Boeing/Hatley )——对结构化分析主要的实时扩展是引入了对控制问题的考虑,以定义系统的行为特征。

d) 定义小说明( mini-specifications, 或过程规范)——通常使用的是结构化的英语。

e) 开发数据字典——数据字典用于定义所有的数据流、事件流、数据存储。

4.1 实时系统的结构化分析与设计

Page 7: 第4讲  实时软件设计方法 主讲 :   黎忠文

23/4/2023/4/20 77

实时设计• 在 RTSA 阶段之后, Boeing/Hatley 方法使用了系统

构架图。 Ward/Mellor 方法则继续采用以下步骤: f) 将转换分配到各个处理器中。 g) 将转换分配到各个任务中——每个处理器的转换都被

分配到并发任务中。 h) 结构化设计——指定任务中的转换使用结构化设计分

解为多个模块。• 转换分析是用于将数据流图映射为结构图的一种策略,

其重要的流程是输入 - 处理 - 输出流。• 在模块分解过程中,功能内聚和信息内聚被认为是最强

的内聚形式。数据耦合是耦合的最低形式。

4.1 实时系统的结构化分析与设计

Page 8: 第4讲  实时软件设计方法 主讲 :   黎忠文

23/4/2023/4/20 88

4.1.4 设计过程的成果 实时结构化分析——应用 RTSA 所产生的规范包括以下

内容: • 系统环境图; • 数据流 / 控制流图的层次集合; • 数据字典; • 小说明。 • 定义每种控制转换或控制规范的状态转换图。 结构化设计——对于每个程序来说,都有一个结构图来

显示将其分解为模块的方式。

4.1 实时系统的结构化分析与设计

Page 9: 第4讲  实时软件设计方法 主讲 :   黎忠文

23/4/2023/4/20 99

4.1.5 行驶监控系统案例研究 实时结构化分析 实时结构化分析规范包括系统环境图、数据流 / 控制流图

的层次集合以及状态转换图。如图 4-2 ~ 4-11 所示。这个方案使用了 Ward/Mellor 表示法。

开发系统环境图

4.1 实时系统的结构化分析与设计

图 4-2 显示的是系统环境图,每个外部实体由一个终端表示。

图 4-2 行使控制系统环境图

Page 10: 第4讲  实时软件设计方法 主讲 :   黎忠文

23/4/2023/4/20 1010

分解系统环境图 图 4-3 为顶级数据流 / 控制流图,其中系统环境图分解

为两个主要功能——行驶控制功能和监视功能。

4.1 实时系统的结构化分析与设计

图 4-3 分解为子系统

Page 11: 第4讲  实时软件设计方法 主讲 :   黎忠文

23/4/2023/4/20 1111

实现汽车行驶控制 实现汽车行驶控制(图 4-3 )分解为图 4-4 所示的数据

流图。有 3 个数据转换在监视汽车的传感器。

4.1 实时系统的结构化分析与设计

图 4-4 实现汽车行驶控制

Page 12: 第4讲  实时软件设计方法 主讲 :   黎忠文

23/4/2023/4/20 1212

行驶控制状态转换图• 控制速度数据转换(图 4-4 )分解为数据流 / 控制流图。图 4-5

中的行驶控制状态转换图由图 4-6 中的【行驶控制】控制转换来执行。

4.1 实时系统的结构化分析与设计

在使用图 4-5 中的实时 结构化分析约定时,其中的矩形表示状态,带有标签的箭头表示状态转换。在直线的上方是可以引起状态转换的输入事件。在直线的下方是在发生转换时生成的输出事件。输出事件触发( T )、启动( E )或禁止( D )数据转换,然后执行指定操作。 图 4-5 行驶控制状态转换图

Page 13: 第4讲  实时软件设计方法 主讲 :   黎忠文

23/4/2023/4/20 1313

从行驶控制的角度来看,汽车的不同状态包括:

• 停机。• 开始“非制动” 。• 开始“制动”。• 加速。• 巡行。• 巡行关闭非制动。 • 巡行关闭制动。• 恢复巡行。

4.1 实时系统的结构化分析与设计

输出事件如下所示:•E1 启动“增加速度”•D5 禁止“维持速度”•D2 禁止“增加速度”•E6 启动“恢复巡行速度”•T3 触发“选择所需速度”•D7 禁止“恢复巡行速度”•E4 启动“维持速度” •T8 触发“清除所需速度”

Page 14: 第4讲  实时软件设计方法 主讲 :   黎忠文

23/4/2023/4/20 1414

控制速度

• 经触发的转换是一次性函数。

• 在整个状态的过程中启动的转换很可能是可以循环的。

4.1 实时系统的结构化分析与设计

在状态转换时,触发、启动或禁止控制速度(图 4-6 )过程中DFD 上的数据转换。

图 4-6 控制速度

Page 15: 第4讲  实时软件设计方法 主讲 :   黎忠文

23/4/2023/4/20 1515

测量距离和速度 图 4-4 中的【测量距离和速度】数据转换可以分解为图 4-7中的数据流图。

4.1 实时系统的结构化分析与设计

图 4-7 测量距离和速度

Page 16: 第4讲  实时软件设计方法 主讲 :   黎忠文

23/4/2023/4/20 1616

4.1 实时系统的结构化分析与设计【控制校准】是使用图 4-8 所示的状态转换图来定义的。

图 4-8 控制校准状态转换图

Page 17: 第4讲  实时软件设计方法 主讲 :   黎忠文

23/4/2023/4/20 1717

实现汽车监视实现汽车监视 实现汽车监视(图 4-3 )的过程在图 4-9 中进行了进一步分

4.1 实时系统的结构化分析与设计

图 4-9 实现汽车监视

Page 18: 第4讲  实时软件设计方法 主讲 :   黎忠文

23/4/2023/4/20 1818

监视并显示平均值 图 4-9 中的【监视并显示平均值】数据转换分解为图 4-10 中所

示的数据流图。

4.1 实时系统的结构化分析与设计

它计算并显示了每加仑汽油可以行驶的平均英里数和每小时行驶的英里数。

图 4-10 监视并显示平均值

Page 19: 第4讲  实时软件设计方法 主讲 :   黎忠文

23/4/2023/4/20 1919

检查维护需要 图 4-9 中的【检查维护需要】数据转换分解为图 4-11 中所示的数

据流图。

4.1 实时系统的结构化分析与设计

要定期进行 3种维护服务:滤油器、空气过滤器和大修维护。每种服务的提供方式都是类似的。

图 4-11 检查维护需要

Page 20: 第4讲  实时软件设计方法 主讲 :   黎忠文

23/4/2023/4/20 2020

结构化设计 下一步, RTSA 规范要映射到结构化设计中。如图 4-12 ~ 4-18 所示。

4.1 实时系统的结构化分析与设计

结构图中的模块主要是功能模块,其中也有一些信息隐藏模块。主模块——行驶监控系统(图 5-12 )由一个环形循环,在这个循环中可以判断何时调用下级模块:实现汽车行驶控制和实现汽车监视。

图 5-12 行驶监控系统结构图

Page 21: 第4讲  实时软件设计方法 主讲 :   黎忠文

23/4/2023/4/20 2121

实现汽车行驶控制 对应于其 4 个主要功能,实现汽车行驶控制有 4 个下级模块。

在【获得行驶控制输入】模块中,选择的是使用轮询 I/O 。

4.1 实时系统的结构化分析与设计

图 4-13 获得行驶控制输入结构图

Page 22: 第4讲  实时软件设计方法 主讲 :   黎忠文

23/4/2023/4/20 2222

轴中断程序还要更新一个内部变量——【【轴转数】】 ( ShaftRotation Counter ),然后【【确定距离】】模块(图 4-14 )要访问这个变量来计算汽车所经过的【【累积距离】】 。

4.1 实时系统的结构化分析与设计

图 4-14 确定距离和速度结构图

Page 23: 第4讲  实时软件设计方法 主讲 :   黎忠文

23/4/2023/4/20 2323

无论何时出现新的行驶控制输入, 【【实现汽车行驶控制】】模块都要调用【【控制速度】】模块(图 4-15 )

4.1 实时系统的结构化分析与设计

图 4-15 控制速度的结构图

Page 24: 第4讲  实时软件设计方法 主讲 :   黎忠文

23/4/2023/4/20 2424

时间问题 • 每次循环中,【【实现汽车

行驶控制】】模块都会调用【【获得行驶控制输入】】模块判断是否有新的输入。

• 然后它会调用【【确定距离和速度】】模块来更新累积距离并计算当前速度。

• 下一步就是调用【【控制速度】】模块来处理下一次的行驶控制事件和 / 或实现任何状态依赖功能。

• 最后,该模会会调用【【进行校准】】 (图 4-16 )来检查是否发生了校准事件

4.1 实时系统的结构化分析与设计

图 4-16 实现校准结构化图

Page 25: 第4讲  实时软件设计方法 主讲 :   黎忠文

23/4/2023/4/20 2525

实现汽车监视 • 【实现汽车监视】模块调用【获得复位输入】(图 4-12 )

模块,用于确定是否某个里程或维护复位按钮被按下。

4.1 实时系统的结构化分析与设计

例如,如果按下了MPH 复位按钮,【实现汽车监视】模块就会调用【监视并显示平均值】模块(图 4-17 )。 图 4-17 监视和显示平均值结构图

Page 26: 第4讲  实时软件设计方法 主讲 :   黎忠文

23/4/2023/4/20 2626

• 如果按下了其中某个维护按钮,【实现汽车监视】模块就会调用【检查维护需要】模块(图 4-18 )。

4.1 实时系统的结构化分析与设计

图 4-18 检查维护需要结构图

Page 27: 第4讲  实时软件设计方法 主讲 :   黎忠文

23/4/2023/4/20 2727

4.1.6 方法评估

优点包括:• 结构化分析及其实时扩展在项目中得到了广泛应用。 • 有大量的 CASE 工具可以支持 RTSA ;• 使用数据流图和控制流图有助于对系统的理解和评审。 • 强调了使用状态转换图 / 表的重要性。缺点包括: • 对于如何实现系统分解并没有提供足够的指导。 • 与 NRL 需求规范方法不同的是, RTSA 并没有将系统

作为黑盒来开发。这样就模糊了需求与设计之间的界限。

• 结构化设计主要用于分解功能模块的程序设计方法,而不能用于解决将系统分解为并发任务的问题。

• 在信息隐藏的应用中,结构化设计方法落后于 NRL 方法和面向对象的设计方法。

4.1 实时系统的结构化分析与设计

Page 28: 第4讲  实时软件设计方法 主讲 :   黎忠文

23/4/2023/4/20 2828

4.1.7 扩展与变化

• ESML ( Extended System Modeling Language )是将 Ward/Mellor 方法与 Boeing/Hatley 方法结合在一起用于实时结构化分析的一种尝试。

• 在开发状态转换图方面, Ward/Mellor 方法支持事件,但不支持条件,而 Boeing/Hatley 方法支持条件却不支持事件。

• 在 ESML 和 COBRA 中解决了所有这些限制 , 既支持事件又支持条件,这一点与 NRL 方法和状态图表示法是相同的。

4.1 实时系统的结构化分析与设计

Page 29: 第4讲  实时软件设计方法 主讲 :   黎忠文

23/4/2023/4/20 2929

4.2.1 基本概念

• 任务结构化标准可以为设计人员将实时系统分解为并发任务的时候提供帮助。

• 任务接口可以采用的形式有消息通信、事件同步或信息隐藏模块( IHM )。

• 消息隐藏作为封装数据存储的标准来使用。• 采用状态转换图形式的有限状态机用于定义系统的行为

特征。• 使用事件顺序识别系统子集,来协助演化原型法和增量

式开发。这些图确定了用于处理外部事件的任务和模块的执行顺序。

4.2 4.2 实时系统设计方法实时系统设计方法

Page 30: 第4讲  实时软件设计方法 主讲 :   黎忠文

23/4/2023/4/20 3030

4.2.2 表示法

• 在 RTSA 中使用了数据流 / 控制流图。这些图是对数据流图的扩展,包括事件流和控制转换。

• 状态转换图是有限状态机的图形表示,其中的节点代表状态,弧线代表状态转换。

4.2 4.2 实时系统设计方法实时系统设计方法

• DARTS 设计方法使用任务构架图来显示系统分解为并发任务的过程。如图 4-19所示。• 起源于结构化设计的结构图在 DARTS中用于显示如何将一个任务分解为多个模块。 图 4-19 任务构架图表示法

Page 31: 第4讲  实时软件设计方法 主讲 :   黎忠文

23/4/2023/4/20 3131

4.2.3 使用方法的步骤

方法中所使用的步骤如下:• 使用实时结构化分析方法开发系统规范。• 将系统划分为多个并发任务。 • 定义任务接口。• 设计每个任务。4.2.4 设计过程的成果设计过程的 3 个成果是: • RTSA 规范; • 任务结构规范。• 任务分解。

4.2 4.2 实时系统设计方法实时系统设计方法

Page 32: 第4讲  实时软件设计方法 主讲 :   黎忠文

23/4/2023/4/20 3232

4.2.5 行驶监控系统案例研究 实时结构化分析

应用 DARTS 的第一个步骤是开发 RTSA 规范。 任务结构化

4.2 4.2 实时系统设计方法实时系统设计方法

• 在开发了 RTSA 规范之后, DARTS 使用了任务结构化标准,用于确定系统中的并发任务。• 图 4-20 显示的是用于行驶监控子系统的任务构架图。

图 4-20 行驶控制子系统的任务构架图

Page 33: 第4讲  实时软件设计方法 主讲 :   黎忠文

23/4/2023/4/20 3333

• 图 4-21 显示的是监视子系统任务构架图

4.2 4.2 实时系统设计方法实时系统设计方法

图 4-21 监视子系统任务构架图

Page 34: 第4讲  实时软件设计方法 主讲 :   黎忠文

23/4/2023/4/20 3434

任务接口 • 这些任务通过消息或 IHM 进行通信。

• 由多个任务访问的数据存储要映射到 IHM 中。因此,在行驶控制子系统中,【当前速度】、【所需速度】、【累积距离】、【轴转数】和【校准常数】数据存储都要映射到信息隐藏模块中。在监视子系统中, 3 个任务之间的接口要通过数据存储映射到 IHM 中。

• 到行驶控制任务的接口是松散耦合先进先出队列。

4.2 4.2 实时系统设计方法实时系统设计方法

Page 35: 第4讲  实时软件设计方法 主讲 :   黎忠文

23/4/2023/4/20 3535

结构化设计 • 一旦设计完任务并定义了任务间的接口之后,下一步就要通

过使用结构化设计方法,将任务分解为多个模块。这些模块主要是功能模块,有些是 IH M。

4.2 4.2 实时系统设计方法实时系统设计方法

• 在结构化设计中,IHM通常位于层次结构的最低层。• 图 4-22 显示了行驶控制任务的结构。

图 4-22 行驶控制任务结构图

Page 36: 第4讲  实时软件设计方法 主讲 :   黎忠文

23/4/2023/4/20 3636

• 图 4-23 显示的是【汽车速度控制】任务的结构。

4.2 4.2 实时系统设计方法实时系统设计方法

• 这个任务通过调用【接受速度命令】模块并等待消息来接收速度命令。• 【汽车速度控制】模块的设计是事务分析的一个例子。

图 4-23 汽车速度控制任务结构图

Page 37: 第4讲  实时软件设计方法 主讲 :   黎忠文

23/4/2023/4/20 3737

• 图图 4-244-24 所示为【实现校准】模块的结构图。该模块调用所示为【实现校准】模块的结构图。该模块调用了【读取校准】输入模块来接收输入。了【读取校准】输入模块来接收输入。

4.2 4.2 实时系统设计方法实时系统设计方法

图 4-24 实现校准任务结构图

Page 38: 第4讲  实时软件设计方法 主讲 :   黎忠文

23/4/2023/4/20 3838

4.2.6 方法评估

这种方法优点包括:• 将系统分解为多个并发任务,并提供了用于确定任务的标准

。 • 对于定义任务间接口的方式,该方法提供了详细的指导。 • 主要使用了状态转换图,这在实时控制系统的设计中是非常

重要的。 • 该方法提供了从 RTSA 规范到实施设计的转换。这种方法的缺点包括: • 虽然 DARTS 使用了信息隐藏技术来封装数据存储,但使用

的广泛性并没有达到使用 NRL 和 OOD 方法的程度。 • 使用 DARTS 的潜在问题是:如果 RTSA 阶段的工作完成得

不好,那么任务的结构化工作就会更加困难。

4.2 4.2 实时系统设计方法实时系统设计方法

Page 39: 第4讲  实时软件设计方法 主讲 :   黎忠文

23/4/2023/4/20 3939

4.2.7 扩展与变化

• 将系统分解为子系统的方法之一是称为 DART/DA 的方法,它是对 DARTS 方法的扩展,可以支持分布式实时应用程序。

• DARTS 在信息隐藏中的缺点通过 ADARTS 方法和CODARTS 方法得到了解决。

• ADARTS 和 CODARTS 的设计可以使用类似于 Buhr 图的图形化表示法来描述。

• 在 CODARTS 方法中,使用 RTSA 的潜在问题通过使用COBRA 分析和建模方法得到了解决,而并非使用 RTSA方法。

4.2 4.2 实时系统设计方法实时系统设计方法

Page 40: 第4讲  实时软件设计方法 主讲 :   黎忠文

23/4/2023/4/20 4040

4.3.1 并发任务比较

• 虽然所有的方法都在某种程度上解决了并发的问题,但是它们的侧重点各有不同。对 DARTS 和 JSD 这两种方法来说,并发任务比较重要。 NRL 方法和 OOD 方法不侧重于任务结构化。

• Ward/Mellor 版本的 RTSAD 方法,可以将系统分解为多个并发任务,但对此提供的指导却很少。结构化设计( SD )是一种程序设计方法,而不能解决任务结构化的问题。而结构化设计可以用于设计单个任务,与使用DARTS 方法的作用相同。

• 在行驶控制问题中,结构化设计方案解决了一个内在的并发问题,并将其转换为顺序性方案。

• DARTS 在任务结构化领域解决了 RTSAD 的缺点。

4.34.3 并发和实时软件设计方法的比较并发和实时软件设计方法的比较

Page 41: 第4讲  实时软件设计方法 主讲 :   黎忠文

23/4/2023/4/20 4141

• 与 SD 方法不同, DARTS 方法并没有使用循环指令来控制整个系统,而是更具有独立性。

• JSD 模型任务类似于 DARTS 中的控制任务。

• 在映射任务时和把功能分组的过程中, NRL 方法没有使用 DARTS 方法中的任务内聚或 JSD 方法中任务转换的概念。

• 与 DARTS 方法和 NRL 方法不同, OOD 方法认为可以使用相同的对象结构化标准来确定任务(主动对象)和信息隐藏模块(被动对象)。

• 面向对象的设计方法没有用于优化设计的策略,而DARTS提供了任务内聚标准, JSD提供了任务转换方法。

4.3 4.3 并发和实时软件设计方法的比较并发和实时软件设计方法的比较

Page 42: 第4讲  实时软件设计方法 主讲 :   黎忠文

23/4/2023/4/20 4242

4.3.2 信息隐藏和对象比较

• 在 NRL 方法和 OOD 方法中,信息隐藏是非常重要的基本原则。 DARTS 方法和 RTSAD 方法也使用了这种概念,但是JSD 方法没有使用。

• NRL 方法和 OOD 方法都侧重于将系统分解为信息隐藏模块(对象)。

• 在 NRL 方法中有一类模块不能使用 OOD 方法直接确定。• 与 NRL 方法相比,在 OOD 方法的对象结构化过程中,并没

有限制让每个对象 / 模块只能隐藏一个设计决策。• RTSAD 方法在信息隐藏的领域并无长处可言。在这种方法的

应用中,结构化设计方法要落后于 NRL 方法和 OOD 方法。• DARTS 使用信息隐藏概念的程度比不上 NRL 方法和 OOD

方法。

4.3 4.3 并发和实时软件设计方法的比较并发和实时软件设计方法的比较

Page 43: 第4讲  实时软件设计方法 主讲 :   黎忠文

23/4/2023/4/20 4343

4.3.3 有限状态机比较 • RTSAD 、 DARTS 、 NRL 将有限状态机的使用作为主

要问题来考虑。在 OOD 中它是一个次要问题。在 JSD中采用的是使用实体结构图来描绘时间顺序的方法。

• Ward/Mellor 版本的 RTSA 方法只允许在状态转换中出现事件,而不允许出现条件。 Boeing/Hatley 方法允许出现条件而不允许出现事件。 NRL 方法既支持事件也支持条件,而且还可以使用更为简明的状态转换表。

• 在结构化设计中没有很好解决的状态依赖问题在 DARTS中得到了解决。

• 在 OOD 方法中,可以通过封装在对象中的有限状态机来定义对象。

• 在 JSD 方法中,所使用的常规表达式表示法在数学上等价于有限状态机表示法。

4.3 4.3 并发和实时软件设计方法的比较并发和实时软件设计方法的比较

Page 44: 第4讲  实时软件设计方法 主讲 :   黎忠文

23/4/2023/4/20 4444

4.3.4 时间约束

• 这里介绍的每种方法都在一定程度上解决了时间约束的问题。

• RTSAD 方法在分析和设计阶段解决了时间约束的问题。• DARTS 使用 RTSA 时间规范将时间预算分配到每个任务

上。• 在 NRL 方法中,要在需求阶段对那些生成系统输出的定

期功能和请求功能指定时间约束。• 在 JSD 方法中,使用网络图可以确定单个任务的时间约

束。• 在 OOD 方法中,时间图可以用于显示对象之间的时间依

赖关系。• 总之,时间约束问题在实时系统中很重要,它是大多数

用于实时系统的软件设计方法的特征之一。

4.3 4.3 并发和实时软件设计方法的比较并发和实时软件设计方法的比较

Page 45: 第4讲  实时软件设计方法 主讲 :   黎忠文

4.4.1 性能模型

4.4 4.4 并发与实时系统软件设计性能分析并发与实时系统软件设计性能分析

• 概念 计算机系统的性能模型是对真实计算机系统行为的抽象。可以是数学模型或模拟模型。可以是静态的,也可是动态的。

• 队列模型 是计算机系统的解析模型,用于分析系统中对有限资源的竞争和预测系统性能,是计算机系统性能的高级模型。

• 模拟模型 是确定设计是否完善且符合时间要求的有效方式。

• 计算机系统建模中的问题 开发模型时考虑的主要因素包括开发模型的开销、模型的详细程度、完成模型的速度及其精确度。

本节概述了实用性能模型和应用实时调度理论进行软件设计性能分析的过程。

Page 46: 第4讲  实时软件设计方法 主讲 :   黎忠文

23/4/2023/4/20 4646

4.4 4.4 并发与实时系统软件设计性能分析并发与实时系统软件设计性能分析4.4.2 Petri 网• 由于有限状态机的严格顺序性,因此不能用于对平行关

系进行建模。

• Petri 网可以直接对并发系统进行建模,是更为有利的工具。有限状态机是其串行子集。

• Petri 网使用有向图表示,支持的两种节点称为库所。其执行由令牌来控制。

• Petri 网既可以作为分析工具也可以作为建模工具使用,功能非常强大。

Page 47: 第4讲  实时软件设计方法 主讲 :   黎忠文

23/4/2023/4/20 4747

4.4 4.4 并发与实时系统软件设计性能分析并发与实时系统软件设计性能分析4.4.3 实时调度理论• 介绍 实时调度理论解决了具有硬性最后期限的并发任务

,基于优先级进行调度的问题。• 调度定期任务 定期任务具有周期 T ,它是任务执行时的频率,还有

执行时间 C, 表示在周期中所需的 CPU 时间。 CPU 的使用率 U 为 C/T 。如果任务没有超出所有的最后期限,就可以调度。

对于一组独立的定期任务来说,速率单调算法可以根据任务周期为每个任务指定一个固定优先级,任务周期越短,优先级越高。

Page 48: 第4讲  实时软件设计方法 主讲 :   黎忠文

23/4/2023/4/20 4848

使用率限定定理• 对于一组定期独立任务,如果每个任务 C/T 的总和都低

于整个 CPU 使用率的上限,那么这些任务可一直显示为可在各自的周期内完成。

• 使用率限定定理(定理 1 ) 对于所有的任务阶段,通过速率单调算法调度的一组数目为 n 的独立定期任务会在周期结束之前完成运行,只要满足以下条件:

4.4 4.4 并发与实时系统软件设计性能分析并发与实时系统软件设计性能分析

其中 Ci 和 Ti 分别是任务 ti 的执行时间和周期。当任务的数量趋向于无穷大时,上限 U(n) 的值就会趋向于69% 。

Page 49: 第4讲  实时软件设计方法 主讲 :   黎忠文

23/4/2023/4/20 4949

4.4 4.4 并发与实时系统软件设计性能分析并发与实时系统软件设计性能分析• 根据定理 1 ,在表 4-1 中给出了 9 个任务的使用率界限

。这是最坏情况的估计。

表 4-1 使用率限定定理(定理 1 )

速率单调算法所具备的优点是:在瞬时过载的情况下可以保持稳定。

Page 50: 第4讲  实时软件设计方法 主讲 :   黎忠文

23/4/2023/4/20 5050

4.4 4.4 并发与实时系统软件设计性能分析并发与实时系统软件设计性能分析 完成时间定理• 如果一组任务的使用率总和超过了定理 1 中所规定的上

限,那么就可以使用定理 2 进行检测,它提供了一种准确的判断方法。其可以用于检查每个任务 ti 是否可以在第一个时间周期之前完成。

• 完成时间定理(定理 2 ) 对于一组独立的定期任务,在所有任务同时启动的情况

下,如果每个任务都可以在第一个时间周期内完成执行,那么启动事件的任意组合都可以使这些任务在各自的周期内完成执行。

• 定理 2 可以使用时间图来进行图形化演示。请看下面例子

Page 51: 第4讲  实时软件设计方法 主讲 :   黎忠文

23/4/2023/4/20 5151

4.4 4.4 并发与实时系统软件设计性能分析并发与实时系统软件设计性能分析

图 4-25 所示即为演示这 3 个任务执行的时间图。

图 4-25 时间图

Page 52: 第4讲  实时软件设计方法 主讲 :   黎忠文

23/4/2023/4/20 5252

4.4 4.4 并发与实时系统软件设计性能分析并发与实时系统软件设计性能分析 完成时间定理的数学函数完成时间定理的数学函数定理 3

对于所有的任务相位,速率单调算法调度一组 n 个独立定期任务将会在最后期限之前完成执行,当且仅当满足以下条件:

其中 Cj 和 Tj 分别是任务 tj 的执行时间和周期,并且

公式中, ti 表示要检查的任务, tk 表示每个会影响任务 ti完成时间的高优先级任务。

Page 53: 第4讲  实时软件设计方法 主讲 :   黎忠文

23/4/2023/4/20 5353

4.4 4.4 并发与实时系统软件设计性能分析并发与实时系统软件设计性能分析 调度定期任务和非定期任务调度定期任务和非定期任务• 当处理非定期任务(异步任务)以及定期任务的时候,

就要对速度单调理论进行扩展。非定期任务用于处理事件所使用的 CPU 时间 Ca 要作为在每个周期 Ta 中使用的Ca值的票保留起来,如果不能在周期 Ta 中激活任务,就要将票丢弃。

• 如果在应用程序中有许多非定期任务,就可用零星服务算法。

使用任务同步进行调度• 优先级反向指进入临界区的低优先级任务阻碍试图进入临界区的高优先级任务执行的情况。

• 优先级顶置协议避免了互斥死锁,并提供了受到限制的优先级反向。至多只能有一个低优先级任务可以阻塞高优先级任务。

Page 54: 第4讲  实时软件设计方法 主讲 :   黎忠文

23/4/2023/4/20 5454

4.4 4.4 并发与实时系统软件设计性能分析并发与实时系统软件设计性能分析 经过归纳的实时调度理论• 需要对基本的速度单调调度理论加以扩展,以便解决速

率单调优先级反向的情况。• 考虑这样一种情况:任务 ti 的周期为 Ti ,在这个周期中

,任务要消耗 Ci单位的 CPU 时间。对原理 1~3 扩展,明确检查每个任务 ti ,确定是否满足第一个最后期限,要考虑的问题:

a) 周期小于 ti 的高优先级任务抢占的时间。这些任务可以抢占任务 ti很多次。

b) 任务 ti 的执行时间。c) 较长周期的高优先级任务抢占。这些任务都具有非速率

单调优先级。d) 低优先级任务阻塞的时间。这些任务只可以执行一次。

Page 55: 第4讲  实时软件设计方法 主讲 :   黎忠文

23/4/2023/4/20 5555

4.4 4.4 并发与实时系统软件设计性能分析并发与实时系统软件设计性能分析• 因为对于任何给定的任务 ti 来说,情况 a) 和情况 b) 都可

以使用定理 1~3 来处理,对定理 1~3 的归纳要考虑情况c) 和情况 d) 。定理 1 (使用率限定定理)要进行扩展以解决上面所提出的 4 种情况:

泛化使用率限定定理在这里称为定理 4 。 Ui 是任务 ti 在周期 Ti

内的使用率范围。其中有 4 个概念:• 周期比 ti短的高优先级任务所抢占的全 部使用率。• 任务 ti 的 CPU 使用率。• 任务 ti 所经历过的最坏情况阻塞使用率。• 周期比 ti长的高优先级任务所抢占的全部使用率。

Page 56: 第4讲  实时软件设计方法 主讲 :   黎忠文

23/4/2023/4/20 5656

实时调度与设计• 在设计阶段或任务实现之后,实时调度理论可以应用到

一组并发任务中。• 在设计阶段,设计人员有为任务选择指定的优先级的自

由。一般来说,所有可能的优先级都应该根据速率单调理论来指定。这种方法容易应用到定期任务中。

应用归纳实施调度理论的例子• 有 4 个任务,其中 2 个任务是定期任务,另外 2 个是非

定期 任务。其中一个非定期任务 ta 是中断驱动任务,必须在中断到达的 200毫秒之内执行,否则就会丢失数据。另一个非定期任务 t2 的最坏情况间隔时间为 T2, 这个时间要作为等价定期任务的周期。

4.4 4.4 并发与实时系统软件设计性能分析并发与实时系统软件设计性能分析

Page 57: 第4讲  实时软件设计方法 主讲 :   黎忠文

23/4/2023/4/20 5757

4.4 4.4 并发与实时系统软件设计性能分析并发与实时系统软件设计性能分析• 各个任务的详细特征如下,所有的时间均以毫秒为单位,使

用率 Ui=Ci/Ti : 定期任务 t1 : C1=20 ; T1=100 ; U1=0.2 非定期任务 t2 : C2=15 ; T2=150 ; U2=0.1 中断驱动非定期任务 ta : Ca=4 ; Ta=200 ; Ua=0.02 定期任务 t3 : C3=30 ; T3=300 ; U3=0.1• 另外,任务 t1 t2 t3 都访问相同的数据存储,这个数据存储由

信号量 s 保护。• 首先考虑优先级最高的中断驱动任务 ta ,它的使用率是 0.02

,很容易满足最后期限。• 下一步考虑任务 t1 ,在 T1 中可执行 20毫秒。应用定理 4 。• 下一步考虑 t2 ,在 T2 中可执行 15毫秒。再次应用定理 4 。• 最后考虑 t3 ,再次应用定理 4 。

Page 58: 第4讲  实时软件设计方法 主讲 :   黎忠文

23/4/2023/4/20 5858

4.4 4.4 并发与实时系统软件设计性能分析并发与实时系统软件设计性能分析

• 每次应用定理都要考虑前述中的 4 个问题。

• 最后得出结论, 4 个任务都可以满足最后期限。

Ada 中的实时调度• Ada 概念模型的某些方面,使人们对其在支持硬最后期

限任务的实时系统中实用性提出了质疑。

• 建议对 Ada 运行时系统作出修改以支持优先级顶置协议。

Page 59: 第4讲  实时软件设计方法 主讲 :   黎忠文

23/4/2023/4/20 5959

4.4 4.4 并发与实时系统软件设计性能分析并发与实时系统软件设计性能分析4.4.4 使用事件序列分析进行性能分析• 在项目的需求阶段,要指定系统对外部事件需要的响应

时间。事件序列分析可以用于判断需要执行哪些任务为指定的外部事件提供服务。

• 以一个外部事件为例,必须确定那些激活的任务,然后判断其后执行的内部事件序列。要估计每个任务的 CPU

开销,还要估计任务激活的频率。以便估计总体 CPU 使用率。

Page 60: 第4讲  实时软件设计方法 主讲 :   黎忠文

23/4/2023/4/20 6060

4.4 4.4 并发与实时系统软件设计性能分析并发与实时系统软件设计性能分析4.4.5 使用实时调度理论和时间序列分析进行性能

分析• 需要考虑事件序列中所有任务,由外部事件激活的任务

要首先执行,然后启动一系列内部事件。必须判断事件序列中的所有任务是否满足最后期限。

• 首先为事件序列中所有任务分配相同优先级。启动事件序列的外部事件最坏情况间隔时间也就是等价任务的周期。

• 为了判断该等价任务是否满足最后期限,必须应用实时调度理论。在后面讲解中会给出例子。

Page 61: 第4讲  实时软件设计方法 主讲 :   黎忠文

23/4/2023/4/20 6161

本讲小结本讲小结

• 本讲重点掌握在实例中应用各种 RTSAD 方法和 DARTS 方法。

• 理解各种各种并发和实时软件设计方法的特点和优缺点。

• 掌握实时调度理论及其应用。