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

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


                                   代码 3.  定理 2 在 Coq 中的证明.
                                   Theorem Normal_Exce_Proof:forall(ex:Exce)(sw:Flags),

                                      {mac_Status_pre(ex)∧(sw=0)}
                                      f0:exce_design_code
                                      {mac_Status_post(ex)}.

                                     Proof.
                                     …
                                     Qed.
                                        Table 1    Coq code line statistics
                                           表 1   Coq 代码行数统计

                                           功能描述            代码行数
                                         数据类型定义              536
                                          异常向量表              218
                                          上下文保护              462
                                           ESR 跳转            571
                                          上下文恢复              1 183
                                           异常退出              347
                                           定理验证              2 674
                                            总计               5 964
                                         代码运行时间             58.24s
         5    总   结

             本文提出了一种基于 Hoare-logic 的验证框架,用于证明面向 SPARC 处理器架构的实时嵌入式操作系统异
         常管理功能的正确性.首先,对操作系统异常控制流进行了介绍,并且总结出了 3 种实时操作系统所面临的异常
         情况:基本异常、异常嵌套、伴随任务切换的异常;然后,使用结构化的操作语义搭建异常管理验证框架,将其划
         分为 5 个阶段:异常向量表处理、上下文保护、ESR 跳转、上下文恢复、异常退出,并对每个阶段的建模过程
         进行了详细的介绍;最后,使用此形式化框架对应用在北斗三号航天器系统上的 SpaceOS 操作系统进行验证,在
         Coq 定理证明工具的帮助下,验证了 SpaceOS 异常管理的正确性.
             目前,关于 SpaceOS 的形式化工作都是分模块展开的.在今后的工作中,我们将尝试把任务管理、内存管理
         和异常管理的正确性证明工作形式化的集成起来,形成系统整体安全性和正确性的证明.

         References:
          [1]    Wang J, Zhan NJ, Feng XY, Liu ZM. Overview of formal methods. Ruan Jian Xue Bao/Journal of Software, 2019,30(1):33−61 (in
             Chinese with English abstract). http://www.jos.org.cn/1000-9825/5652.htm [doi: 10.13328/j.cnki.jos.005652]
          [2]    Klein G, Elphinstone K, Heiser G, Andronick J, Cock D, Derrin P, Elkaduwe D, Engerlhardt K, Kolanski R, Norrish M, Sewell T.
             seL4: Formal verification of an OS kernel. In: Proc. of the ACM SIGOPS 22nd Symp. on Operating Systems Principles. 2009.
             207−220.
          [3]    Chen H, Wu XN, Shao Z, Lockerman J, Gu RH. Toward compositional verification of interruptible OS kernels and device drivers.
             In: Proc. of the 37th ACM SIGPLAN  Conf. on Programming  Language Design  and Implementation (PLDI  2016).  New  York:
             Association for Computing Machinery, 2016. 431−447.
          [4]    Gu  RH, Shao  Z,  Chen H, Wu  XN,  Kim  J, Sjöberg  V,  Costanzo D.  CertiKOS: An  extensible  architecture for building  certified
             concurrent  OS kernels.  In: Proc. of  the 12th  USENIX Conf. on Operating Systems  Design and Implementation (OSDI 2016).
             USENIX Association, 2016. 653−669.
          [5]    Feng XY, Shao Z, Dong Y, Guo Y. Certifying low-level programs with hardware interrupts and preemptive threads. In: Proc. of the
             29th ACM  SIGPLAN Conf. on  Programming Language Design and Implementation  (PLDI  2008). New  York:  Association for
             Computing Machinery, 2008. 170−182.
          [6]    Feng XF, Shao Z, Guo Y, Dong Y. Combining domain-specific and foundational logics to verify complete software systems. In:
             Proc. of the VSTTE 2008. 2008. 54−69.
          [7]    Qiao L, Yang MF, Tan YL, Pu GG, Yang H. Formal verification of memory management system in spacecraft using Event-B. Ruan
             Jian  Xue  Bao/Journal of Software, 2017,28(5):1204−1220  (in Chinese with English abstract).  http://www.jos.org.cn/1000-9825/
             5218.htm [doi: 10.13328/j.cnki.jos.005218]
   66   67   68   69   70   71   72   73   74   75   76