基于霍尔逻辑的嵌入式实时操作系统的自动化验证方法技术方案

技术编号:20160229 阅读:32 留言:0更新日期:2019-01-19 00:12
本发明专利技术公开了一种基于霍尔逻辑的嵌入式实时操作系统的自动化验证方法,将操作系统中的自然语言规范运用了一阶逻辑进行了重写,并利用霍尔逻辑将改写的一阶逻辑表达式以及一些必要的循环不变式、对象不变性添加到源代码中;针对混合代码中汇编程序建立出抽象模型,对这个抽象模型给出了相关的语法语义定义,然后利用类C语言的ghost语言对抽象模型进行代码实现,并用实现的抽象模型替代原混合代码中的汇编代码形成新的混合代码,在新的混合代码基础上插入所要验证的性质。在本方法中利用了一种自动验证工具能够实现对代码的全自动化的验证,若验证不通过还可得到反例,以便于更快的模型或操作系统应用中的错误。

【技术实现步骤摘要】
基于霍尔逻辑的嵌入式实时操作系统的自动化验证方法
本专利技术涉及嵌入式操作系统领域,具体涉及一种基于霍尔逻辑对操作系统源代码层进行形式化验证。
技术介绍
操作系统的安全性对于一个安全攸关领域起着至关重要的作用,为了确保操作系统的正确性与可靠性,通常需要在操作系统的开发过程中遵循相关的规范。严格遵守规范所开发的操作系统能够为用户程序的开发提供了统一的系统服务接口,从而能够简化用户程序的开发,提高用户程序的可移植性。在整个操作系统设计完成后,投入实现之前需要对其进行测试,以确保操作系统的功能正确性和实现与规范的一致性。目前绝大多数的操作系统规范是使用自然语言描写的,自然语言的规范无法直接运用在实际的验证工作中,故需要验证人员对自然语言规范进行提取和利用形式化语言的描述。另外,由于某些安全攸关的领域对操作系统的正确性有着严格的要求,仅仅对操作系统做测试是不能够保证在所有的运行条件下都是正确的,所以在测试之外需要增加形式化的验证来确保所有的条件下都是可靠的。
技术实现思路
本专利技术提出了一种基于霍尔逻辑对操作系统源代码层进行形式化验证的方法,适用于代码中同时存在C语言代码与汇编代码的情况。本专利技术方法对汇编代码进行了语法语义的定义,并建立了抽象模型,同时,采用一种类高级语言的ghost语句对抽象模型进行实现。从自然语言规范中提取性质并使用形式化语言进行描述,将描述插入到源代码相应的位置中,然后运用自动推理证明工具直接对源代码进行验证,可以保证操作系统代码实现与规范的一致性。将形式化验证的方法引入操作系统设计开发中,可以提高其安全性和正确性。本专利技术提出了一种基于霍尔逻辑的嵌入式实时操作系统的自动化验证方法,包括:步骤一:根据已知正确的操作系统内核中纯C语言部分的自然语言规范中提取性质,并采用一阶逻辑对其描述;步骤二:基于霍尔逻辑将一阶逻辑性质描述语句插入到操作系统中的C语言代码中,运用自动定理证明器对其进行验证;若不满足要求,则需要对操作系统内核中所验证的C语言代码部分进行修正直至满足所述的形式化性质,若满足,则保留验证通过的C语言代码;步骤三:将操作系统混合语言部分中的汇编代码抽离出来并进行抽象建模;步骤四:运用一种类C语言的高级语言对抽象模型进行代码实现;步骤五:将操作系统混合代码中汇编部分全部由抽象模型的实现来替代,形成抽象模型的实现和C语言代码的新的混合语言;步骤六:根据已知正确的操作系统内核中混合语言部分的自然语言规范中提取性质,并采用一阶逻辑对其描述;步骤七:基于霍尔逻辑将一阶逻辑性质描述语句以前后条件插入到操作系统中的新的混合代码中,运用自动定理证明器对其进行验证;若不满足要求,则需要对操作系统内核中所验证的混合代码部分进行修正直至满足所述的形式化性质,若满足,则保留验证通过的混合语言代码和抽象模型。本专利技术提出的基于霍尔逻辑的嵌入式实时操作系统的自动化验证方法中,所述步骤一中从规范中提取性质包括以下步骤包括以下步骤:步骤A1:从操作系统规范中提取所要描述的任务管理、时间管理、事件控制块、信号量管理、互斥量管理、事件标志组管理、消息邮箱管理、消息队列管理、内存管理相关的自然语言规范;步骤A2:根据自然语言规范提取性质规范,并用一阶逻辑对性质进行描述。本专利技术提出的基于霍尔逻辑的嵌入式实时操作系统的自动化验证方法中,步骤二中所述的使用自动定理证明器对源代码进行形式化的验证以及修正包括以下步骤:步骤B1:将一阶逻辑描述的性质以霍尔逻辑的形式插入到C语言代码中,同时在相应的节点处插入验证条件;具体地,在相应的节点处插入一些断言、不变式等验证条件;步骤B2:使用自动验证工具对插入后的代码进行验证,若错误,根据提示修正C语言代码,将修正后的代码重新验证,直至所有的验证全部通过;本专利技术提出的所述的基于霍尔逻辑的嵌入式实时操作系统的自动化验证方法中,所述的操作系统形式化验证与测试方法中,其特征在于,所述B1,B2中是通过VCC自动定理证明工具提供的验证条件语言来书写一阶逻辑表达式,直接将验证条件语句插入到源代码中进行验证,VCC的工作原理是运用SMT自动求解器在一阶逻辑公式上自动求解;若验证通过,则操作系统内核系统调用符合规范,否则程序代码中存在错误。本专利技术提出的所述的基于霍尔逻辑的嵌入式实时操作系统的自动化验证方法中,所述步骤三将对汇编代码进行抽象建模包括以下步骤:步骤C1:先将混合语言代码中的汇编程序抽离出来;步骤C2:对抽离出来的汇编程序给出语法定义,根据汇编代码的具体执行过程定义出它的语义模型,语义模型包括状态、栈指针以及系统转移关系;步骤C3:给出语义模型中的状态、栈指针以及系统转移关系的详细定义,其中模型中的状态包括了数据寄存器、地址寄存器以及状态寄存器的状态,栈指针为硬件栈指针,系统转移关系概括了汇编程序中所有的系统变迁轨迹。本专利技术提出的所述基于霍尔逻辑的嵌入式实时操作系统的自动化验证方法中,所述步骤四对抽象模型的实现包括以下步骤:步骤D1:使用VCC自动推理证明工具中提供的ghost语言进行抽象模型的实现,首先给出ghost语言的语法定义;步骤D2:利用ghost语言给出抽象模型的状态和指针的代码定义;步骤D3:根据ghost语言的语法和抽象模型的定义给出状态转移的代码的具体实现。本专利技术提出的所述基于霍尔逻辑的嵌入式实时操作系统的自动化验证方法中,所述步骤五中形成新的混合语言包括以下步骤:步骤E1:将ghost语言的实现替换掉混合语言中汇编代码部分,形成ghost语言和C代码的新的混合语言;步骤E2:对新的混合代码中的ghost语言和C语言进行联结操作,保证ghost的执行和C语言代码的执行能够互相影响。本专利技术提出的所述的基于霍尔逻辑的嵌入式实时操作系统的自动化验证方法中,所述步骤E2中对ghost语言和C语言代码进行联结包括以下步骤:步骤F1:利用ghost语言定义出辅助功能函数,该函数对C编译器并不可见;步骤F2:添加ghost语句,调用辅助功能函数和C程序变量,建立二者间的数据流流动。本专利技术提出的所述的于霍尔逻辑的嵌入式实时操作系统内核的验证方法中,所述步骤六从规范中提取性质包括以下步骤:步骤G1:从操作系统中的内核服务的规范中提取所要描述的自然语言规范;具体地,提取所要描述的任务切换、中断管理等自然语言规范;步骤G2:根据自然语言规范提取性质,并用一阶逻辑表达式对其进行描述。本专利技术提出的所述的基于霍尔逻辑的嵌入式实时操作系统的自动化验证方法中,所述步骤七使用自动定理证明器对源代码进行形式化的验证以及修正包括以下步骤:步骤H1:将一阶逻辑描述的性质以霍尔逻辑的形式插入到新形成的含有ghost语句的混合代码中,同时在源代码相应的节点处插入验证条件;具体地,在源代码相应的节点处插入一些断言、不变式等验证条件;步骤H2:使用自动验证工具对插入后的代码进行验证,若错误,根据提示修正新的混合代码,将修正后的代码重新验证,直至所有的验证全部通过,这样得到了完全正确实现的操作系统。本专利技术提出的所述的基于霍尔逻辑的嵌入式实时操作系统的自动化验证方法中,所述步骤B1、B2、D1、H2中的自动验证工具均是VCC验证工具,该工具是直接在C语言源代码基础上进行验证的,VCC的工作原理是运用SMT自动求解器在一阶逻辑本文档来自技高网...

【技术保护点】
1.一种基于霍尔逻辑的嵌入式实时操作系统的自动化验证方法,其特征在于,包括以下步骤:步骤一:根据已知正确的操作系统内核中纯C语言部分的自然语言规范中提取性质,并采用一阶逻辑对其描述;步骤二:基于霍尔逻辑将一阶逻辑性质描述语句插入到操作系统中的C语言代码中,运用自动定理证明器对其进行验证;若不满足要求,则需要对操作系统内核中所验证的C语言代码部分进行修正直至满足形式化性质;若满足,则保留验证通过的C语言代码;步骤三:将操作系统混合语言部分中的汇编代码抽离出来并进行抽象建模;步骤四:运用类C语言的高级语言对抽象模型进行代码实现;步骤五:将操作系统混合代码中汇编部分全部由抽象模型的实现来替代,形成抽象模型的实现和C语言代码的新的混合语言;步骤六:根据已知正确的操作系统内核中混合语言部分的自然语言规范中提取性质,并采用一阶逻辑对其描述;步骤七:基于霍尔逻辑将一阶逻辑性质描述语句以前后条件插入到操作系统中的新的混合代码中,运用自动定理证明器对其进行验证;若不满足要求,则需要对操作系统内核中所验证的混合代码部分进行修正直至满足所述的形式化性质;若满足,则保留验证通过的混合语言代码和抽象模型。

【技术特征摘要】
1.一种基于霍尔逻辑的嵌入式实时操作系统的自动化验证方法,其特征在于,包括以下步骤:步骤一:根据已知正确的操作系统内核中纯C语言部分的自然语言规范中提取性质,并采用一阶逻辑对其描述;步骤二:基于霍尔逻辑将一阶逻辑性质描述语句插入到操作系统中的C语言代码中,运用自动定理证明器对其进行验证;若不满足要求,则需要对操作系统内核中所验证的C语言代码部分进行修正直至满足形式化性质;若满足,则保留验证通过的C语言代码;步骤三:将操作系统混合语言部分中的汇编代码抽离出来并进行抽象建模;步骤四:运用类C语言的高级语言对抽象模型进行代码实现;步骤五:将操作系统混合代码中汇编部分全部由抽象模型的实现来替代,形成抽象模型的实现和C语言代码的新的混合语言;步骤六:根据已知正确的操作系统内核中混合语言部分的自然语言规范中提取性质,并采用一阶逻辑对其描述;步骤七:基于霍尔逻辑将一阶逻辑性质描述语句以前后条件插入到操作系统中的新的混合代码中,运用自动定理证明器对其进行验证;若不满足要求,则需要对操作系统内核中所验证的混合代码部分进行修正直至满足所述的形式化性质;若满足,则保留验证通过的混合语言代码和抽象模型。2.如权利要求1所述的基于霍尔逻辑的嵌入式实时操作系统的自动化验证方法中,其特征在于,所述步骤一从自然语言规范中提取性质包括以下步骤:步骤A1:从操作系统中的系统调用的规范中提取所要描述的任务管理、时间管理、事件控制块、信号量管理、互斥量管理、事件标志组管理、消息邮箱管理、消息队列管理和内存管理相关的自然语言规范;步骤A2:根据自然语言规范提取性质,并用一阶逻辑表达式对其进行描述。3.如权利要求1所述的基于霍尔逻辑的嵌入式实时操作系统的自动化验证方法中,其特征在于,所述步骤二使用自动定理证明器对C语言代码进行形式化的验证以及修正包括以下步骤:步骤B1:将一阶逻辑描述的性质以霍尔逻辑的形式插入到C语言代码中,同时在相应的节点处插入验证条件;步骤B2:使用自动验证工具对插入后的代码进行验证,若错误,根据提示修正C语言代码,将修正后的代码重新验证,直至所有的验证全部通过。4.如权利要求3所述的基于霍尔逻辑的嵌入式实时操作系统的自动化验证方法中,其特征在于,所述步骤B1、步骤B2中,通过VCC自动定理证明工具提供的验证条件语言书写一阶逻辑表达式,直接将验证条件语句插入到C语言源代码中进行验证;若验证通过,则操作系统内核系统调用符合规范,否则程序代码中存在错误。5.如权利要求1所述的基于霍尔逻辑的嵌入式实时操作系统的自动化验证方法,其特征在于,所述步骤三对...

【专利技术属性】
技术研发人员:郭建丁继政朱晓冉
申请(专利权)人:华东师范大学
类型:发明
国别省市:上海,31

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1