一种无线传感网络节点操作系统动态内存分配的方法

文档序号:6460463阅读:177来源:国知局
专利名称:一种无线传感网络节点操作系统动态内存分配的方法
技术领域
本发明涉及一种动态内存分配的方法,尤其是涉及一种在无线传感网络节 点操作系统中的动态内存分配方法。
背景技术
近年来,无线传感网络作为一个重要的研究领域,发展迅猛。很多无线传 感网络是基于节点类设备,例如伯克利节点。这些节点类设备包括低功耗微处
理器和极少量的内存(3KB-10KBRAM)。既然对于这样的节点类设备,内存是一 种昂贵和有限的资源,因此有效的利用无线传感网络中节点类设备的内存成为 无线传感网络节点操作系统内存分配的必然需求。
目前,在无线传感网络节点操作系统中,有两种基本的分配内存的方法, 分别是静态内存分配和动态内存分配。在现有的一些无线传感网络节点操作系 统中,TinyOS使用静态内存分配的方法,而MantisOS, SOS和Contiki等都使 用动态内存分配的方法。
既然面向无线传感网络的应用程序正向多样性发展,在无线传感网络节点 操作系统中,使用动态内存分配的方法与静态内存分配的方法相比可以获取更 多的灵活性。然而,对于任意给出的一种现有的动态内存分配算法,测试人员 都有可能发现一个特定应用程序能够破坏该动态内存分配算法的策略。因此并 不存在一种现有的内存分配算法可以针对所有的应用程序提供最佳的性能和最 少的内存花费。

发明内容
本发明的目的在于提供一种无线传感网络节点操作系统动态内存分配的方 法,该方法通过模拟器和分析器为特定应用程序选择一个的动态分配算法,使 得实际部署于无线传感网络节点上的应用程序获得最佳的性能和最少的内存花
本发明采用的技术方案的步骤如下
1) 编辑源代码为动态内存分配指令添加用于指明候选动态内存分配算法的 用户标签,并设定分析器的分析参数,供步骤5)分析参考使用,本地编译计数 器清零,分析过程计数器清零;
2) 预编译过程:将程序员编辑的带有用户标签的源代码编译成标签指代的内存分配算法,生成预编译代码,并指定模拟次数,将该值保存在模拟次数计数
器中,如果此时已经获取步骤5)的分析结果,则直接将带有用户标签的源代码 编译成唯一的最佳内存分配算法,并指定模拟次数为零;
3) 本地编译过程将步骤2)生成的预编译代码经本地编译器编译,在本地编 译过程中从候选分配器中加载由步骤2)指定的分配算法,生成可加载的镜像文
件,然后将本地编译计数器加一,如果本地编译计数器的值小于等于步骤2)中
指定的模拟次数计数器,则转入步骤4),否则转入步骤6);
4) 模拟过程模拟器模拟执行步骤3)中生成的可加载的镜像文件,并生成应 用程序的内存访问痕迹;
5) 分析过程首先将步骤4)中生成应用程序的内存访问痕迹保存在分析器 中,当本地编译计数器的值等于模拟次数计数器的值时,分析器分析当前保存 的所有由步骤4)生成应用程序的内存访问痕迹,将分析后确定的内存分配算法 的名称传给预编译器,并转入步骤2);当本地编译计数器的值小于模拟次数计 数器的值时,直接转入步骤2);
6) 安装过程:将步骤3)生成的可加载的镜像文件通过烧入的方式安装在实际 部署的节点中。
本发明与背景技术相比,具有有益的效果是
本发明所述的针对无线传感网络节点操作系统的动态内存分配的方式,可 以提高和改善动态内存访问的执行时间和空间效率,并且应用程序开发者可以 灵活的控制可供候选的动态内存分配算法以及分析器的分析参数。


附图是本发明方法的流程示意图。
具体实施例方式
使用SOS2.0作为无线传感网络节点操作系统的平台,将SOS, Mantis OS, Contiki以及AVRLibc等系统中动态内存算法提取出来作为候选算法。在分配指 令后加入劇...}作为表示候选算法的标签。预编译器采用JavaCC技术,实现了 从用户编辑的源代码到预编译代码的源码到源码的翻译。本地编译器使用 AVR-GCC, MSP-GCC这两个编译器。模拟器使用Avrom。分析器使用剩余内 存容量、分配算法费用、碎片率以及分配算法执行时间这四个指标来衡量对于 当前应用程序动态内存分配算法的优劣。安装使用UISP,BSL程序。如附图所示, 具体流程如下
步骤l):使用文本编辑器编辑应用程序源代码,为动态内存分配指令添加用于指明候选动态内存分配算法的用户标签,并设定分析器的分析参数,供步
骤5)分析参考使用。本地编译计数器清零,分析过程计数器清零。
步骤2):使用JavaCC预编译带有用户标签的应用程序源代码,将程序员编 辑的带有用户标签的源代码编译成标签指代的内存分配算法,生成预编译代码, 并指定模拟次数,将该值保存在模拟次数计数器中。如果此时已经获取步骤5) 的分析结果,则直接将带有用户标签的源代码编译成唯一的最佳内存分配算法, 并指定模拟次数为零。
步骤3):对于针对不同节点类的硬件平台的应用程序使用AVR-GCC或 MSP-GCC进行本地编译,将步骤2)生成的预编译代码经本地编译器编译,在本 地编译过程中从候选分配器中加载由步骤2)指定的分配算法,生成可加载的镜 像文件,然后将本地编译计数器加一。如果本地编译计数器的值小于等于步骤 2)中指定的模拟次数计数器,则转入步骤4),否则转入步骤6)。
步骤4):使用Avrora模拟软件模拟应用程序,模拟器模拟执行步骤3)中生 成的可加载的镜像文件,并生成应用程序的内存访问痕迹。
步骤5):分析模拟数据的结果,首先将步骤4)中生成应用程序的内存访问 痕迹保存在分析器中。当本地编译计数器的值等于模拟次数计数器的值时,分 析器分析当前保存的所有由步骤4)生成应用程序的内存访问痕迹,将分析后确 定的内存分配算法的名称传给预编译器,并转入步骤2);当本地编译计数器的 值小于模拟次数计数器的值时,直接转入步骤2)。
步骤6):对于针对不同节点类的硬件平台的应用程序使用UISP或BSL进 行安装,将步骤3)生成的可加载的镜像文件通过烧入的方式安装在实际部署的 节点中。
权利要求
1. 一种无线传感网络节点操作系统动态内存分配的方法,特征在于该方法的步骤如下1)编辑源代码为动态内存分配指令添加用于指明候选动态内存分配算法的用户标签,并设定分析器的分析参数,供步骤5)分析参考使用,本地编译计数器清零,分析过程计数器清零;2)预编译过程将程序员编辑的带有用户标签的源代码编译成标签指代的内存分配算法,生成预编译代码,并指定模拟次数,将该值保存在模拟次数计数器中,如果此时已经获取步骤5)的分析结果,则直接将带有用户标签的源代码编译成唯一的最佳内存分配算法,并指定模拟次数为零;3)本地编译过程将步骤2)生成的预编译代码经本地编译器编译,在本地编译过程中从候选分配器中加载由步骤2)指定的分配算法,生成可加载的镜像文件,然后将本地编译计数器加一,如果本地编译计数器的值小于等于步骤2)中指定的模拟次数计数器,则转入步骤4),否则转入步骤6);4)模拟过程模拟器模拟执行步骤3)中生成的可加载的镜像文件,并生成应用程序的内存访问痕迹;5)分析过程首先将步骤4)中生成应用程序的内存访问痕迹保存在分析器中,当本地编译计数器的值等于模拟次数计数器的值时,分析器分析当前保存的所有由步骤4)生成应用程序的内存访问痕迹,将分析后确定的内存分配算法的名称传给预编译器,并转入步骤2);当本地编译计数器的值小于模拟次数计数器的值时,直接转入步骤2);6)安装过程将步骤3)生成的可加载的镜像文件通过烧入的方式安装在实际部署的节点中。
全文摘要
本发明公开了一种在无线传感网络节点操作系统动态内存分配的方法。该方法包括如下步骤编辑源代码,预编译过程,本地编译过程,模拟过程,分析过程和安装过程。该方法可以提高和改善动态内存访问的执行时间和空间效率,并且应用程序开发者可以灵活的控制可供候选的动态内存分配算法以及分析器的分析参数。该方法通过模拟器和分析器为特定应用程序选择一个的动态分配算法,使得实际部署于无线传感网络节点上的应用程序获得最佳的性能和最少的内存花费。
文档编号G06F9/445GK101281479SQ200810061579
公开日2008年10月8日 申请日期2008年5月7日 优先权日2008年5月7日
发明者卜佳俊, 腾国栋, 郑扣根, 纯 陈 申请人:浙江大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1