UML状态机:原理、特性与应用详解
1. RTC模型
RTC(Real-Time Cycle)模型中,系统以离散、不可分割的RTC步骤处理事件。新到来的事件不能中断当前事件的处理,必须存储(通常存储在事件队列中),直到状态机再次空闲。这种语义完全避免了单个状态机内部的并发问题。
RTC模型还解决了与转换相关的动作处理的概念性问题。在动作执行期间,状态机处于未明确定义的状态(处于两个状态之间),但由于事件处理期间系统无响应(不可观察),所以此时的未定义状态没有实际意义。
需要注意的是,RTC并不意味着状态机在RTC步骤完成之前必须独占CPU。抢占限制仅适用于已经在处理事件的状态机的任务上下文。在多任务环境中,其他任务(与忙碌的状态机的任务上下文无关)可以运行,可能会抢占当前正在执行的状态机。只要其他状态机之间不共享变量或其他资源,就不存在并发危险。
RTC处理的主要优点是简单性,其最大缺点是状态机的响应性由其最长的RTC步骤决定。实现短的RTC步骤通常会显著增加实时设计的复杂性。
2. 传统FSM形式主义的UML扩展
传统有限状态机(FSM)是解决较小问题的优秀工具,但对于中等复杂度的系统,它们往往变得难以管理。由于状态爆炸现象,传统FSM的复杂性增长速度往往比它所描述的反应式系统的复杂性增长速度快得多。这是因为传统状态机形式主义会导致重复。例如,用传统FSM表示Visual Basic计算器的行为时,会发现许多事件(如清除事件)在许多状态中的处理方式相同,但传统FSM没有办法捕捉这种共性,需要在许多状态中重复相同的动作和转换。传统状态机缺少的是一种提取公共行为以便在多个状态之间共享的机制。
状态图(State
UML状态机原理、特性与应用详解
超级会员免费看
订阅专栏 解锁全文

102

被折叠的 条评论
为什么被折叠?



