TinyOS论文10:Bug Hunting in Sensor Network Applications

本文介绍了一种名为KleeNet的工具,它可以自动检测无线传感器网络(WSNs)程序中的内存安全漏洞。KleeNet通过集成到TinyOS中,能够测试所有可能的输入并自动生成触发特定Bug的测试用例。本文还讨论了KleeNet的设计原理、实现细节及其在WSNs程序开发中的应用。

与safety TinyOS有关;

  1. 论文提出了KleeNet工具,一个独立平台的传感网程序bug检测工具,他能对所有可能的输入来测试应用程序,主要监测的是传感网程序内存安全的bug;
  2. KeelNet识别某个bug之后会生成一个触发这个bug的测试用例;
    将KeelNet集成到了TinyOS中;
  3. KleeNet的基本原理(与Avrora中-monitor插桩程序的实现有点类似):指定一个变量作为跟踪对象,获得该变量执行的路径和操作,如果产生了bug,再生成一个导致这个bug的测试用例。
  4. 将KeelNet集成到了TinyOS中。

Abstract

  1. 论文提出了KleeNet工具,一个独立平台的传感网程序bug检测工具,他能对所有可能的输入来测试应用程序,主要监测的是传感网程序内存安全的bug;
  2. KeelNet识别某个bug之后会生成一个触发这个bug的测试用例;
  3. 将KeelNet集成到了TinyOS中;

Introduce

  1. WSNs应用程序:内存限制 + CPU资源有限 + 低级、非类型安全的语言且没有动态监测和内存保护 + 高度地面向数据流 + 导读分布特特点 + 缺乏内存保护;
  2. WSNs的常见bug有:数组内存越界 + 空指针异常 + 错误的类型转换(特别是指针与结构体之间的转换)
  3. 现有的对C语言的测试工具不适用于测试WSNs应用程序的原因是:
    1、WSNs程序与操作系统集成在一起运行,人工的代码修改很耗时;
    2、很多工具有限地支持C语言语义的静态代码分析,而WSNs程序主要是从周围环境获得数据,所以这些工具不能检测动态运行时的bug;
    3、现有bug 测试对开发人员来讲很难使用;
  4. 论文主要是找出确定的WSNs错误,且自动化,开销小。
  1. WSNs的内存安全上的相关工作有:Safe TinyOS;
  2. Safe TinyOS在编译时冬天内存检测来捕获非安全的指针和数组操作,当然也会增加代码量和CPU的额外开销 + 软件部署之后进行相关测试;
  3. KleeNet使用动态的代码植入技术来进行离线的bug检测,这样不用耗费任何系统资源 + 通过检测所有可能的程序输入来保证内存安全;
  4. KleeNet解释虚拟指令集为KleeNet的核心引擎,因此它不能检测依赖硬件平台的汇编级bug,也不适用于运行时的内存安全的检测
  5. 论文贡献:
    1、将KleeNet继承到TinyOS检测WSNs程序bug;
    2、容易扩展;
    3、开销小;

System overview

1、Klee

  1. Klee是一个C程序的符号执行工具,Klee以符号作为输入。开发人员只需要指定代码中哪一个内存位置是有输入的;代码执行过程中,所有的符号变量的执行路径和操作会被跟踪;如果找到一个bug,Klee会自动生成一个导致这个bug的测试用例。例如:
. . .
call Timer1. startPeriodic (500);
. . .
int a[10];
unsigned i ;
klee make symbolic name(&i , sizeof( i ) , ”i ”);
event void Timer1. fired ()
{
call Leds. led1Toggle ();
// here we violate memory safety
// on the 11th signal of this event
if ( i < 11)
a[ i++] = 1;
}
. . .

Klee的输出:

$ make kleenet test
KLEE: ERROR: memory error : out of bound pointer
$ make kleenet display
BlinkFailC$i :10
  1. 目前Klee只支持内存引用错误和除0错误,之后会被扩展成支持非类型安全错误例如指针转化错误;

2、Automatic code instrumentation

  1. 论文的一个目标是:提供一个很容易使用的WSNs程序bug检测工具,并且能很好地继承到WSNs成虚执行的生命周期中。实现方法是:自动的代码植入。
  2. 自动代码植入的实现方法:通过扩展基于GNU C语言编译器的解析器工具ANTLR,使他能自动插入符号注解(例如标记内存位置),用户只需要提供一个待检测变量高级配置。
  3. 也可以插入注解的配置方式来进行额外的检测,这种方式是可选的。

3、结构体类型检测

  1. 结构体类型与指针类型之间的转换很有可能出错。
  2. 一开始传感器结点接收到的数据时位流数据,之后指向改数据的指针会转换成特定的结构体类型

Integeration into TinyOS

  1. 通过网TinyOS平台中增添一个虚拟的KleeNet平台,这个方法很容易实现网平台中增加不同模块,能够自动将传感网结点的输入值和接收的数据报标记为符号。
  2. TinyOS是基于事件驱动,为了覆盖所有的程序控制流路径,将我们的平台扩展成自动事件信号量机制,一旦程序启动,所有实现了的事件都信号化然后执行。
  3. 如图显示了KleeNet构建过程:
    1、指定配置文件:代码中哪个变量要符号化(klee_make_symbolic函数一斤更实现了);
    2、所有接收到的数据报缓存自动符号化;
    3、植入的代码传入Klee中,并且构建C对象文件
    4、最后Klee解释这个C对象文件,有bug的话会自动生成产生这个bug的测试用例
    这里写图片描述

Evaluation

  1. 除0bug
  2. KleeNet的优点:可用性 + 覆盖率高 + 集成到了TinyOS + 有效性。

Conclusion

内容概要:本研究聚焦于绿电直连型电氢氨园区的优化运行,提出一种集成绿色电力直接供给、电解水制氢及氢气合成氨工艺的综合能源系统架构。通过建立包含风光发电、电解槽、氨合成反应器、储氢罐、电网交互及多类型负荷在内的系统模型,综合考虑绿电直供优先、能量梯级利用与多能互补原则,构建以系统综合运行成本最小化为目标的优化调度模型。研究采用Matlab与Python工具进行算法求解和仿真分析,利用实际气象与负荷数据完成案例验证,评估了不同运行策略下系统的经济性、可再生能源消纳能力与碳减排效益,为新型电氢氨一体化园区的规划与运行提供了理论依据和技术支撑。; 适合人群:具备一定电力系统、新能源或化工背景的研究生、科研人员及从事综合能源系统规划与优化工作的工程技术人员。; 使用场景及目标:①用于科研学习,理解电--氨多能转换系统的建模与优化方法;②为工业园区的低碳化、智能化改造提供技术参考与决策支持;③作为开发类似综合能源管理系统的理论基础。; 阅读建议:此资源包含完整的模型代码、数据与论文,使用者应结合代码仔细研读论文中的模型构建部分,重点关注目标函数与约束条件的设计逻辑,并尝试修改参数进行仿真,以深入掌握优化算法在实际系统中的应用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值