Page 94 - 《软件学报》2021年第6期
P. 94

1668                                     Journal of Software  软件学报 Vol.32, No.6,  June 2021

         Resource,Awaiting Return,Awaiting  Reentry 等 5 个状态,为了表示方便,本文不考虑 Awaiting Return,  Awaiting
         Reentry 这两种状态,因为这两个状态与系统资源约束关系无关.因此,简化后的 AADL 线程执行模型可以用 3
         个状态——Ready 状态、Running 状态和 Awaiting 状态以及状态之间的转移描述,如图 1 所示.其中,c 为线程在
         处理器上执行的时间累积,w 为线程由于资源受限阻塞的时间累积.∂c 表示该线程是否在处理器上处于计算状
         态并进行时间累积的标志量,当∂c=1 时,表示该线程处于执行态,并进行时间累积;否则,该线程不处于执行态,不
         需要时间累积.同样地,需要定义由于资源阻塞而导致的时间累积的标志量∂w,当∂w=1 时,线程处于阻塞状态,并
         进行时间累积;否则,线程不处于阻塞态,时间不进行累计.3 个状态间存在 4 种变迁情况:(1) Ready 状态下获得处
         理器时间,进入 Running 状态;(2) Running 状态下发生 Cache Miss 后会导致处理器阻塞,线程进入 Awaiting
         Resource 状态;(3) Awaiting  Resource 状态下,当该线程得到执行所需的资源后,线程进入 Ready 状态;
         (4) Running 状态下的线程被更高优先级的线程抢占以后进入 Ready 状态.
                                        Ready     resume     Running
                                        c=0                  c=1,w=0
                                        w=0       preempt     C<ET


                                       unblock               Block due to
                                                              cache miss
                                                 Awaiting
                                                 resorce
                                                  w=1
                                               c=0,w<CRPD

                           Fig.1    Simplified timed automata model of AADL thread component
                                    图 1   简化的 AADL 线程时间自动机模型
             复杂嵌入式系统的调度往往采用分区调度的方式对系统构件及其资源进行运行管理.例如在机载嵌入式
         系统中,就采用集成化、模块化航空电子体系结构 IMA,这种软件体系结构的嵌入式系统采用两级调度模式管
         理任务的运行:分区间调度和分区内调度.AADL 定义了一个附录模型 ARINC653 来支持对分区建模,分区间调
         度采用时间片轮转调度策略,因此,系统运行过程中还要考虑分区之间切换带来的延迟.根据 AADL ARINC653
         附录模型的操作语义,我们也可以用时间自动机来描述带分区的复杂系统任务调度行为,如图 2 所示.

                                        Pended     wakeupPartition
                              分区                 Partition_duration=0
                                                                  Ready

                                          Partition_duration=Partition_capacity
                                              激活               Partition_election!
                                                        Partition_duration<Partition_capacity
                             分区内线程    Dispatch

                                         Ready     resume    Running
                                          c=0                c=1,w=0
                                          w=0      preempt    C<ET

                                                              block due to
                                         unblock              cache miss
                                                  Awaiting
                                                  resorce
                                                   w=1
                                                 c=0,W<CRPD

                             Fig.2    Timed automata model of ARINC653 partitioned system
                                    图 2   ARINC653 分区系统时间自动机模型
   89   90   91   92   93   94   95   96   97   98   99