AADL的四种经典设计模式

栏目: 后端 · 发布时间: 7年前

内容简介:一、同步数据流(Synchronous data-flows)模式1.描述在同步数据流模式中,线程在dispatch时读取输入端口的数据、在complete时向输出端口写数据。此模式不需要共享的data构件,processor构件需要指定固定优先级调度策略(如Rate Monotonic等)。
编辑推荐:
本文来自于个人博客,本文在AADL基本知识了解的基础上,为了增强建模 工具 和验证工具Cheddar之间的互操作性,引入了AADL的四种经典通信设计模式,我希望对您的学习有所帮助。

一、同步数据流(Synchronous data-flows)模式

1.描述

在同步数据流模式中,线程在dispatch时读取输入端口的数据、在complete时向输出端口写数据。此模式不需要共享的data构件,processor构件需要指定固定优先级调度策略(如Rate Monotonic等)。

2.举例

例如,三个周期线程通过两个事件端口连接(data port connections)链接在一起,AADL图形模型如图1所示,AADL文本表示较简单,此处省略。

AADL的四种经典设计模式

图1 同步数据流模式

3.分析

这种模式只能用静态调度策略,每个线程总是在固定的时间读数据、执行、写数据(即使在不需要的情况下),因此显得不灵活。但这种模式的分析却非常简单,可以进行处理器利用率(processor utilization factor)分析和最坏响应时间(WCRT)分析等。

二、互斥(Mutex)模式

1.描述

互斥模式考虑了异步通信的情形,在此模式中,线程通过优先级继承协议(priority inheritance protocols)异步访问共享的data构件。

2.举例

为了阐释异步线程间通信,本文以互斥信号量Mutex的P/V原语的实现作为案例。AADL模型的图形表示如图2。

AADL的四种经典设计模式

图2 互斥通信模式

AADL模型的文本表示如下:

SUBPROGRAM IMPLEMENTATION P.others

ANNEX Behavior_Specification {**

states

s0: initial state;

s1: return state;

transitions:

busy: s0 -[on me.The_Value=0]->s1{};

free: s0-[on me.The_Value=1]-> s1{ me.The_Value := 0; };

**};

END P.others;

SUBPROGRAM IMPLEMENTATION V.others

ANNEX Behavior_Specification {**

states

s: initial return state;

transitions:

s -[]-> s { me.The_Value := 1; };

**};

END V.others;

THREAD IMPLEMENTATION Thread_A.others

PROPERTIES

Dispatch_Protocol => Periodic;

Period => 10 ms;

ANNEX Behavior_Specification {**

states

s0: initial state;

s1, s2, s3, s4: state;

s5: complete state;

transitions

acquire_M1: s0-[]->s1{P!(Mutex_1);};

acquire_M2: s1-[]->s2{P!(Mutex_2);};

critical_section: s2-[]->s3 {…};

release_M1: s3-[]->s4{V!(Mutex_1);};

release_M2: s4-[]->s5{V!(Mutex_2);};

**};

END Thread_A.others;

THREAD IMPLEMENTATION Thread_B.others

ANNEX Behavior_Specification {**

transitions

acquire_M2: s0-[]->s1{P!(Mutex_2);};

acquire_M1: s1-[]->s2{P!(Mutex_1);};

**};

END Thread_B.others;

3.分析

这种模式可以进行死锁验证和WCRT等,但计算WCRT前需要先计算等待时间,这是很重要的。

三、黑板(Blackboard)模式

1.描述

典型操作系统有很多同步设计模式,如信号量、读者写者、生产者消费者等等。对于编程语言也有专用的同步设计模式,如黑板设计模式。黑板 设计模式 是读者写者模式的实现,同一时刻只能有一个writer更新数据,但可以有多个readers读取数据。

2.举例

用黑板模式实现读者写者的AADL图形模式如图3。

AADL的四种经典设计模式

图3 黑板模式

AADL文本模型如下:

DATA T_BlackBoard

FEATURES

Request_Read: SUBPROGRAM Read0.o;

Read: SUBPROGRAM Read1.o;

Release_Read: SUBPROGRAM Read2.o;

Request_Write: SUBPROGRAM Write0.o;

Write: SUBPROGRAM Write1.o;

Release_Write: SUBPROGRAM Write2.o;

END T_BlackBoard;

DATA IMPLEMENTATION T_BlackBoard.o

SUBCOMPONENTS

Contents: DATA T_Item;

Readers: DATA Behavior::Integer;

Is_Idle: DATA Behavior::Boolean;

Is_Reading: DATA Behavior::Boolean;

Is_Writing: DATA Behavior::Boolean;

END T_BlackBoard.o;

SUBPROGRAM IMPLEMENTATION Read0.o

ANNEX Behavior_Specification {**

states

s: initial return state;

transitions

s -[on me.Is_Idle and me.Readers=0 ]-> s {

me.Readers := me.Readers + 1;

me.Is_Reading := true;

me.Is_Idle := false;

};

**};

END Read0.o;

3.分析

这种模式下,在任何时刻只有最后写入的消息可用。

四、排队缓冲(Queued buffer)模式

1.描述

排队缓冲模式使得在任何时刻,所有的写入数据都可用(即所有的写入数据都存储到内存),AADL通过事件数据端口(event data port)或共享data构件实现。假设buffer消息的处理协议是FIFO。

2.举例

以生产者-消费者为例阐释排队缓冲模式。生产者-消费者的AADL图形模型如图4所示。

AADL的四种经典设计模式

图4 排队缓冲模式

AADL模型的文本表示如下:

DATA IMPLEMENTATION T_Buffer.others

SUBCOMPONENTS

Stack: DATA T_Item;

Current: DATA Behavior::Integer;

Max: DATA Behavior::Integer;

END T_Buffer.others;

SUBPROGRAM Push

FEATURES

me: IN OUT PARAMETER T_Buffer.others;

Item: IN PARAMETER T_Item;

END Push;

SUBPROGRAM IMPLEMENTATION Push.others

ANNEX Behavior_Specification {**

states

s: initial return state;

transitions

s-[on me.Current < me.Max]->s {

me.Stack(me.Current) := Item;

me.Current := me.Current+1;};

**};

END Push.others;

SUBPROGRAM Pop

FEATURES

me: IN OUT PARAMETER T_Buffer.others;

Item: OUT PARAMETER T_Item;

END Pop;

SUBPROGRAM IMPLEMENTATION Pop.others

ANNEX Behavior_Specification {**

states

s: initial return state;

transitions

s-[on me.Current > 1]->s {

Item := me.Stack(me.Current);

me.Current := me.Current-1;};

**};

END Pop.others;

THREAD IMPLEMENTATION Prod.others

PROPERTIES

Dispatch_Protocol => Sporadic;

Period => 10 ms;

ANNEX Behavior_Specification {**

state variables

v: T_Item;

states

s: initial complete state;

transitions

s-[]->s {Push!(Buffer,v);};

**};

END Prod.others;

THREAD IMPLEMENTATION Cons.others

PROPERTIES

Dispatch_Protocol => Periodic;

Period => 20 ms;

ANNEX Behavior_Specification {**

state variables

v: T_Item;

states

s: initial complete state;

transitions

s-[]->s {Pop!(Buffer,v);};

**};

END Cons.others;

3.分析

这种模式需要进行可调度性分析,此外,还需要分析内存使用情况,以确保当生产者速率大小消费者速率时不会丢失数据


以上所述就是小编给大家介绍的《AADL的四种经典设计模式》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Head First HTML5 Programming

Head First HTML5 Programming

Eric Freeman、Elisabeth Robson / O'Reilly Media / 2011-10-18 / USD 49.99

What can HTML5 do for you? If you're a web developer looking to use this new version of HTML, you might be wondering how much has really changed. Head First HTML5 Programming introduces the key featur......一起来看看 《Head First HTML5 Programming》 这本书的介绍吧!

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

MD5 加密
MD5 加密

MD5 加密工具