当前位置:主页 > 科技论文 > 软件论文 >

面向多线程程序的并行运行时验证

发布时间:2020-12-31 07:51
  现代操作系统、嵌入式系统、航电系统等安全关键系统一般都使用C/C++语言进行开发,因此针对C程序的运行时验证技术研究变得非常重要。主流的运行时验证技术主要针对程序的内存安全性和形式化规约进行检测,首先通过对C程序中与内存操作和规约相关的代码进行插桩,然后编译运行插桩后的C程序来验证原程序是否满足内存安全性和给定的规约。但是现有技术存在许多局限性。一方面,现有技术大都只能处理单线程的C程序,在多线程C程序的情况下,可能引起对运行时信息的竞争访问问题,从而导致错误的验证结果。另一方面,针对形式化规约的运行时验证技术大都通过串行的方式处理多监控器,在规约数量较多的情况下,多监控器的串行运行会导致运行时性能大大降低。针对以上的两个局限性,本文主要研究面向多线程C程序的运行时验证技术和多监控器的并行验证技术。具体工作和创新点包括:首先,针对内存安全性问题,我们提出了面向多线程C程序的运行时验证算法。该算法采用有锁哈希表或无锁哈希表对指针元数据进行插入、查找和删除等操作,使得插桩后的多线程C程序可以并发地对指针元数据进行访问,从而实现对多线程C程序内存安全性的运行时验证。第二,针对形式化规约的验证... 

【文章来源】:南京航空航天大学江苏省 211工程院校

【文章页数】:80 页

【学位级别】:硕士

【部分图文】:

面向多线程程序的并行运行时验证


单线程下内存安全存取的哈希表性能分析

哈希表,性能分析,多线程,内存


图 6. 1 单线程下内存安全存取的哈希表性能分析中纵坐标的单位是秒,实验数据是十次结果的平均值。A 表示使用希表;B 表示本文中可扩展的哈希表(其中 CAS 原子操作换成赋值;D 表示无锁可扩充哈希表。图中节点数表示哈希表进行存取的节程情况下 B 哈希表运行时负载是 A 哈希表的 5 倍左右,D 哈希表运行的 5 倍左右。这是因为 B、D 哈希表存在递归桶元素的插入和链表存取时直接通过数组进行链表访问,不需要递归创建桶元素。这个扩展的哈希表性能有所降低。程情况下哈希表存取实验中,因为 A 哈希表和 B 哈希表没有进行并多线程情况下进行哈希表的存取操作。我们将 C、D 两种哈希表进。012345A B C D节点数 1000000300000时间/us

形式化规约,并行运行,取平均值,单位


图 6. 3 形式化规约并行运行时验证性能 中时间单位是秒,记录的时间值是进行 10 次结果统计之后取平均值少个验证线程。如果采用串行的方式运行,性能最差。但是随着线一个递减的趋势,结果和我们的预期不同。这是因为本实验的硬件持超线程模式,一个处理器可以同时运行两个线程。当超过 4 个线争同一个处理器资源。同一时刻一个处理器也只是在运行两个线程 4 个线程时,才是真正意义上的并行运算。从上图的可知,在 3 个与一个主线程的情况下,运行的时间最短。在最优情况下对该实验的运行的总时间由原来的 51.51s 变为 23.53s。程序的性能提升了百分串行运行时验证的执行时间和形式化规约的并行运行时验证的执行并行运行时验证之后的工具性能提升明显。总结们首先采用 SARD 测试集进行 SoftBoundCets、Criuser 和 Movec 的工具对于多线程 C 程序内存安全问题检测的有效性,并采用 Miben

【参考文献】:
博士论文
[1]面向千万亿次CPU-GPU异构系统的编程模型与性能优化关键技术研究[D]. 王锋.国防科学技术大学 2013



本文编号:2949261

资料下载
论文发表

本文链接:https://www.wllwen.com/kejilunwen/ruanjiangongchenglunwen/2949261.html


Copyright(c)文论论文网All Rights Reserved | 网站地图 |

版权申明:资料由用户eb241***提供,本站仅收录摘要或目录,作者需要删除请E-mail邮箱bigeng88@qq.com