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

马智  等:面向 SPARC 处理器架构的操作系统异常管理验证                                                  1643


                                                N
                            恢复上下文       窗口下溢?       nest减1    还原psr     打开中断
                                         Y
                                        下溢处理                           异常退出

                                Fig.10    State transition diagram of abnormal exit phase
                                        图 10   异常退出阶段状态迁移图
         其中,
             •   公式(11)中,发生窗口下溢,异常管理进行下溢处理,左移寄存器窗口,还原堆栈中内容;然后右移寄存器
                窗口,调整 WIM 的指向,嵌套层数减一,改变内容中的全局变量 nest,还原 psr,保持退出时程序状态寄存
                器与进入异常时的状态一致;最后开打异常,使系统可以正常响应异常,最后异常退出;
             •   公式(12)中,窗口下溢不发生,则直接跳过下溢处理,执行后续的操作.

         4    实例验证
             本节使用前文描述的形式化验证框架对北斗三号                  [18] 在轨实际应用的航天器实时操作系统 SpaceOS 异常
         管理功能的正确性进行证明,SpaceOS 是我国第 1 个自主研发并进行空间飞行的航天器嵌入式实时操作系统,
         系统资源占用低、实时性强,具有多任务并发、中断频发等特点,主要功能包括内存管理、异常管理、任务管
         理、IO 管理等.如图 11 是北斗三号任务实际运行情况,一个控制周期中包含 6 个控制任务、两个异常嵌套、6
         次异常中任务切换.任务 1 运行时被异常 A 打断,高优先级异常 B 打断 A 的处理过程并启动任务 2,异常 A 在上
         下文恢复阶段将任务 2 设为就绪态;异常退出时,处理器执行任务 2;任务 2 执行完毕后再次进行任务切换,执行
         任务 3.以此类推,当任务 6 执行完毕后,通过异常 G 将处理器分配给任务 1 继续执行.


                         控        B
                         制      A    A     C      D     E      F     G
                         流
                                                                              异常
                                                                  T6
                                                           T5
                                                     T4                       任务
                                              T3
                                       T2
                            T1                                          T1
                           0ms                                         100ms  时间
                                    Fig.11    Beidou 3 mission operation example
                                         图 11   北斗三号任务运行实例
             程序逻辑是描述和论证程序行为的逻辑,程序和逻辑有着本质的联系,如果把程序看成一个执行过程,程序
         逻辑的基本方法是先建立程序和逻辑间联系的形式化方法,然后建立程序逻辑系统,并在此系统中研究程序的
         各种性质.在此给出异常管理程序逻辑的数学规范——P{S}Q,其中,
             •   S 代表程序逻辑,由第 3 节中介绍的 12 条公式组成;
             •   P 和 Q 是有关程序变元的逻辑表达式,P 称为前置条件,表明执行程序逻辑之前程序变量应具有的性
                质,可看作程序正确执行的前提;Q 称为后置条件,刻画了语句结束执行时的系统状态,可以看作 S 应实
                现的逻辑结果.
             然后对异常管理的前置条件和后置条件进行分析与刻画,根据异常管理中是否会产生任务切换分为两种
         情况.
             •   当 ESR 中含有任务的启动或停止操作时会产生任务的切换,异常退出时,寄存器中的内容是新任务的
                上下文数据,由 switch_Ts 函数实现;并且需要将原任务使用过的所有寄存器窗口都保存到堆栈之中,由
                rest_WF 函数实现;
   64   65   66   67   68   69   70   71   72   73   74