调度器学习笔记三:HSM状态机理解

来源:互联网 发布:北京鼎泰网络推广公司 编辑:程序博客网 时间:2024/05/20 14:23

        今天心情不错,突然想明白了困扰自己几个月的HSM(层次状态机)问题,“顿悟”的感觉真是舒畅。这也再次证明不够聪明的人(我),应该勤能补拙。废话少说,把自己的体会总结如下。

        HSM被称为层次状态机,用一个专业术语就是具有行为继承,类似OOP中的类继承。那怎么去理解这个行为继承呢,稍后再说。

        首先来说说FSM,状态机?如果我们把每个状态都认为是一个函数,并且函数返回下一个函数指针,那么我们就可以实现一个很灵活的状态机,这个状态机我感觉类似mesh网络,具有“任意跳能力”。怎么理解呢?就是我的子状态可以跳到下一个任意子状态,这种编程思想非常灵活,并且能够复用函数。但是这个网络有一个问题,就是这种状态跳转都是一个平面的,不存在多个平面状态嵌套问题。

        那么问题来了,我也是用mesh网络这种思路去考虑HSM状态机?于是我怎么也不理解行为继承?难道简单的FSM状态嵌套就是HSM?当然不是。这个时候我发现我的出发点错了,同一个平面的状态机,我可以把它理解为Mesh网络,但是不同平面的状态机就必须理解为树形网络,这样行为继承才能够实现。

       行为继承怎么实现的呢?子状态只负责处理自己感兴趣的消息,即只处理自己的事物,其它一切都交给父状态去处理,这样就可以认为子状态具有父状态的处理能力,也就是具有行为继承。

图1  mesh网络拓扑



图2  tree网络拓扑

0 0