全数字实时仿真平台SkyEye的同步数据流语言可信编译器的构造

随着计算机控制系统在人们生活中的普及,软件自身的可靠性也越来越受到重视.在航空、高铁、核电及军事等高安全要求领域的软件系统——安全关键系统(safety-critical system,简称SCS)更是受到高度的重视.而随着软件系统的复杂度越来越高,软件系统的安全性保证也变得越来越困难.这些系统的开发,仅仅依靠过程规范、代码审核和系统测试来保证软件安全还远远不够,通常需要采用形式化验证方法来保证软件可靠性.全数字实时仿真平台SkyEye的同步数据流语言可信编译器的构造在某些安全性严格要求的领域,不但对目标系统的开发需要形式化方法来保证,而且开发过程所需工具,如编译器等,也必须经过形式化验证.

同步模型与同步数据流语言

工业生产中的很多实时系统(如控制系统)都是响应系统,它是以环境决定的速率对环境做出连续响应的系统.此环境可以随时提供新的输入,系统通过运算产生新的输出,使得程序不断地与环境进行交互,且以并发的方式体现.

同步模型是为了适应响应系统而开发的程序运行模型.它把响应系统分成连续的原子时间片(响应周期),每个时间片又分成事件采集、逻辑运算和事件发射这3个阶段,从而有效地满足响应系统的要求.在同步模型中,事件的采集、逻辑运算和事件的发射必须在同一个响应周期内完成,这称为同步模型的同步假设.时间片的大小是由响应系统的环境决定的.同步假设的有效性检查,就是评估系统对环境的最大响应时间能否满足环境要求.图 1为同步模型示意图.

image

编译器的可信

对于编译器来说,可信的具体指标就是其正确性,要保证从源程序到目标程序的翻译过程正确,即,保证源语言的特征被正确、完整地实现,能够实现语义保持性,杜绝误编译.

为了保障编译器实现的正确性,传统的方法是通过大量的测试.例如,GCC(4.7版)的torture测试集包含2 853个C源程序用例,商用的Plum Hall Standard Validation Suite for C有29 424个用例,Lustre V6的开源软件包中含有140个左右的源程序用例,等等.还有一些Bug-hunting工具(如Csmith)可能产生更多或更独特的源程序用例.

然而和其他软件一样,通过测试只能发现错误,并不能保证编译器是正确的.Scade工具的代码生成器KCG或许是获得民用航空软件生产许可的第一个商用编译器,其设计开发过程(很严格的V&V过程)符合民航电子系统的国际标准DO-178B,并成功应用于空客(airbus)A340和A380的设计中.尽管如此,这并不足以说明Scade的编译器不存在“误编译”.事实上,业界已经发现Scade KCG的某些翻译漏洞.

为增加编译器的安全和可信程度,仅通过测试和严格的过程管理都是不够的,人们很自然地会想到形式化验证的途径.在CC(common criteria)安全评估标准中,将可信性分为7个级别(EAL1~EAL7),级别越高,形式化规范和验证的程度越高.航空无线电委员会(RTCA)近期也已推出民航电子系统的国际标准DO-178C,与DO-178B相比,增加的内容包括了对形式化规范和验证的要求.

人们在几十年前就开展了编译器形式化验证的工作:McCarthy等人在1967年手工证明了一个简单编译器(从算术表达式翻译到栈式机目标代码)的正确性;随后,Milner等人在1972年给出了相应的机械化证明;Dave于2003年的综述列举了从1967年~2003年的大部分相关工作,包含从针对简单语言的单遍编译器到较成熟的代码优化遍等形形色色的工作.近年来,随着技术的不断进步,已经可以验证较为复杂的编译器.例如,Leroy等人开发的验证过的C编译器CompCert,Chlipala给出一个从非纯函数式的语言到汇编语言的一个经过验证的编译器,Klein等人验证了一个从Java核心子集到Java虚拟机的编译器.

CompCert编译器是经过验证的可信编译器的杰出代表.该编译器将C的一个重要子集Clight翻译为PowerPC汇编代码(目前也支持IA32后端),使其可以直接用于范围广泛的嵌入式应用开发.该编译器包含了许多分析与优化,所生成的代码可与gcc-0产生的代码匹敌.该编译器将编译过程划分为多个阶段,每个阶段的翻译正确性(语义保持性)都借助辅助定理证明器Coq进行了证明,且这些证明可由独立的证明检查器检查,这使得CompCert的中间层转换过程达到了我们所能期望的最高可信程度.最近,Yang等人在关于Csmith的研究工作中对主流的C编译器进行测试,共报告了325个bugs,其中包括Intel CC,GCC和LLVM等.在所比较的11种开源或商用的C编译器中,CompCert表现较为突出,在6个CPU年中,其中间转换过程没有发现bugs.

编译器验证的另外一种可选方案是翻译确认(translation validation).翻译确认(translation validation)是 Pnueli等人首先提出来的.他们采用翻译确认的方法来验证同步数据流语言的翻译(或编译)过程,所给示范例子的源语言是Signal特征的多时钟同步数据流语言,目标语言是C.翻译确认的方法不是直接验证翻译程序,而是用统一的语义框架为某一翻译过程的源和目标代码建模,两个模型之间定义一种求精(refining)等价关系,设计一种可自动证明二者等价性的分析程序(成功时可给出证明脚本,不成功时给出反例),再给出一种独立的证明检查器(proof checker),可最后确认翻译的正确性.

在L2C项目中,我们选择了对编译器本身进行验证.当源语言和目标语言的语义定义达到认可的程度时,原理上可以保证源程序的一般性质都可以保持到目标程序.与上述翻译确认的做法相比,这是一种彻底的做法;而基于翻译确认的方法往往只是关注部分性质的保持性(当然,也可以逐步逼近一般性质).然而,这项工作相当艰巨,正如前述Pouzet等人的项目,是一项长期的工作.然而,我们的考虑是:1) 实际中有值得这样做的需求; 2) 如果在面向验证的编译器结构上下功夫,加强证明过程的局部化和模块化研究,可减轻需要扩展和维护时的负担;3) 在某些扩展和维护工作量过大的翻译阶段,还可以采用翻译确认的方法作为补充,比如CompCert项目,也有个别阶段采用了翻译确认方案;4) CompCert项目的成功,告诉我们这一选择的重要价值和可行性.


标题:全数字实时仿真平台SkyEye的同步数据流语言可信编译器的构造

链接:http://www.digiproto.com

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/566713.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

div html 下边加横线_HTML的组成部分、DIV+CSS布局

HTML的组成部分dtd部分:文档类型说明,声明版本、标准header部分:给机器看的body部分:给人看的CSS控制div显示是一个块级元素。这意味着它的内容自动地开始一个新行。实际上,换行是 固有的唯一格式表现。可以通过 的 cl…

国产主可控的嵌入式仿真测试软件SkyEye与可信编译器L2C的核心翻译介绍

为了满足国内某安全攸关领域的需求, L2C编译器的开发始于2010年9月, 其目标是设计实现一个经过形式化验证的可信编译器, 其源语言是面向领域的同步数据流语言Lustre*(Lustre语言的一个变种, 参考下一节), 目标语言是C, 最终可用作相关领域数字化仪控系统的安全级代码生成器.国产…

支持国产处理器仿真的全数字实时仿真平台SkyEye与可信编译器L2C的核心翻译步骤

1、核心翻译步骤示例 本节我们以第2节提到的Lustre语言的主要特性为线索来解释L2C在翻译过程中的关键节点是如何处理的, 并以图 1的实例来解释Lustre程序是如何被一步步地翻译到Clight语言的. 1.1 数据流并发性 Lustre程序具有数据流并发性, 而Clight程序却是串行执行的.因此…

python导入不在同一路径的函数_Python小课堂|模块

Python3 模块在前面的几个章节中我们脚本上是用 python 解释器来编程,如果你从 Python 解释器退出再进入,那么你定义的所有的方法和变量就都消失了。为此 Python 提供了一个办法,把这些定义存放在文件中,为一些脚本或者交互式的…

全数字实时仿真软件SkyEye与可信编译器L2C的核心翻译步骤的设计与实现

有关翻译正确性验证的重点疑难问题及其设计实现方案 在L2C可信编译器的设计与实现中, 对于实线所对应的翻译过程 (CompCert编译器除外) 均借助于Coq证明了正确性 (语义保持性), 然后得出LustreSGen所产生的LustreS代码到Clight代码整个翻译过程的正确性.从LustreS到Clight的任…

idea 分支管理插件_Git的分支管理常用命令

文章目录分支管理git stashgitmerge与git rebasegit merge --squashcherry-pick分支管理命令作用git branch查看当前分支git checkout/git switch 分支名称切换分支git merge 分支名称将指定分支合并到当前分支git branch -d 分支名称删除指定分支git diff 分支名称1 分支名称2…

安卓蓝牙键盘切换输入法_采用国产机械轴,三种连接模式轻松切换,TT G521上手体验...

之前我用过三模游戏鼠标,也用过三模薄膜键盘,但是三模机械键盘,还是第一次使用。机械键盘,相信大家都知道,现在已经很普及了,估计当时把机械键盘重新带回到玩家当中的大神,也没有想到它会这么火…

国产自主可控的嵌入式仿真软件SkyEye和同步数据流语言高阶运算消去的可信翻译

同步数据流语言高阶运算消去的可信翻译 同步数据流语言(例如Lustre,Signal等)广泛应用于工业界的核心安全级控制系统,如航空、核电等高安全等级的关键领域,与语言相关的软件的安全性也越来越受到人们的关注,特别是一些基础软件,如操作系统、编译器等.确认这些软件的安全可靠非…

pq 中m函数判断嵌套_压轴题的热点,二次函数与几何的结合,谁会谁吃香

对于整个中考数学来说,二次函数的重要性,我想不用老师多说,大家肯定心里有数。二次函数作为初中数学的重要内容,命题老师很喜欢把它与其他几何图形进行结合,形成综合性更强的试题。不可否认,二次函数与几何…

完全自主可控的安全关键领域仿真测试软件SkyEye可替代SCADE

基于全数字实时仿真平台 SkyEye 产品性质 :全数字实时仿真平台(软件测试和仿真工具) 对标产品 :美国风河公司的Simics,可替代SCADE SkyEye,中文全称天目全数字实时仿真软件,是基于可视化建模…

请求接受json tp5_关于jq jsonp跨域请求错误处理bug

前言:昨天,同事修改项目升级插件时遇到了一个ajax 报错,如下:$.ajax({type : "get",async:false,timeout:3000,url : "http://10.10.10.26:808/servlet/updateLog?line1",dataType : "jsonp",//数…

ModelCoder国产化解决方案已逐步代替国外软件Matlab/Simulink

ModelCoder介绍 在安全关键领域,基于模型的软件工程或者软件开发已逐渐进入了我国的装备研制过程中。使用Simulink或者SCADE等嵌入式软件建模工具对算法或者控制逻辑进行可视化建模,然后生成高可靠的二进制代码逐渐成为了安全关键领域的主流开发方式。 …

两用物项许可证办理流程_一指通 | 出口许可证办理流程

什么是出口许可证?出口许可证,是指商务部授权发证机关依法对实行数量限制出口货物签发的准予出口的许可证件。出口许可证监管证件代码为“4”。加工贸易出口“出口许可证”管理的货物,监管证件代码为“x”。边境小额贸易出口“出口许可证”管…

SkyEye实现工业安全关键领域基础软件国产替代

随着科技的发展,系统工程的设计体量逐渐庞大起来,尤其是对于轨道交通、航空航天、核电站等安全关键领域中,如何在复杂度逐年变大的同时保证其安全性和可靠性,是近年来各大公司需要研究的课题。最近比较火热的基于模型的系统工程&a…

2寸的照片长宽各是多少_贵州公务员考试照片尺寸要求是多少

中公教育在贵州公务员考试中对于照片要求与2寸照片的林小差不多,简单来说就是长宽最小像素为160px和130px、最佳效果为260px*320px;即使考生们已有照片未达到公务员照片的相关要求,考生们可以通过图片处理系统进行等比例裁剪达到照片尺寸要求…

自主可控的全数字实时仿真软件SkyEye支持PowerPC指令级仿真

随着科技的发展,系统工程的设计体量逐渐庞大起来,尤其是对于轨道交通、航空航天、核电站等安全关键领域中,如何在复杂度逐年变大的同时保证其安全性和可靠性,是近年来各大公司需要研究的课题。最近比较火热的基于模型的系统工程&a…

中国自主可控的全数字实时仿真软件SkyEye支持龙芯CPU指令级仿真

传统的系统开发过程,都是由工程师根据项目需求书来编写代码完成系统的开发,但随着功能的完善和版本迭代,系统中庞大的代码量很难确保正确无误,给后期测试和仿真带来了很大的压力和成本,在航空航天、卫星系统、核电等安…

进入实现类快捷键_实测30个自带快捷键,原来键盘也这么好用!

文 / 一周进步 水韬推荐过很多软件快捷键的文章,每次推荐大家都会惊叹,原来自以为熟练掌握的软件,还可以有这么多便捷的操作。活到老,学到老。软件操作是如此,其实在我们使用最多的Windows系统里,在键盘里…

怎么做笔记标签贴_小红书笔记互动到底该怎么做?

小红书很多博主再发完笔记后,喜欢到一些互赞群里去跟别人相互关注点赞收藏评论。这个就是我今天要和大家说的。小红书笔记在一些互赞藏群里自己上关键词车,这样是会被判违规的,什么违规呢?那就是人工干预后台数据。小红书有这样一…

全数字实时仿真平台SkyEye与SystemC集成进行时序仿真

SkyEye与SystemC集成进行时序仿真 仿真过程是正确实现设计的关键环节,用来验证设计者的设计思想是否正确,及在设计实现过程中各种分布参数引入后,其设计的功能是否依然正确无误。时序仿真使用布局布线后器件给出的模块和连线的延时信息&…