关键词:
嵌入式操作系统
内存管理
符号执行方法
多线程
性能测试模型
摘要:
随着计算机软硬件的快速发展,物联网产业高速发展,已经渗透进我们生活的方方面面,而嵌入式操作系统作为嵌入式设备的系统软件,它的安全性和可靠性是嵌入式设备重点关注对象。与通用操作系统相比,嵌入式操作系统对资源的利用率更为敏感,对时间要求也更为严格,要保证一定的实时性、可靠性。内存管理是嵌入式操作系统的重要组成部分,对内存管理进行性能测试有助于分析整个系统的性能好坏。本文提出两个面向不同场景的内存管理性能测试模型,双线程测试模型和多线程测试模型,并在此基础上给出通用内存管理测试框架,可以在这个框架下对内存管理进行性能的多方面测试。针对嵌入式系统的应用场景多样性,设计实现自动数据集生成工具和自动数据分析工具。由于系统内存管理实现的技巧性,我们有针对性地在现有的符号执行工具KLEE的基础上,添加前置处理工具,能够让KLEE生成符合嵌入式内存管理算法要求的性能测试数据集,从而让整个框架更为自动化。针对Zephyr嵌入式实时操作系统,我们对Buddy、TLSF、DLSF三种内存管理算法进行了性能检测,并在多场景下对时间、碎片等性能进行综合分析,结果发现TLSF在时间性能上表现最好,DLSF在内存内碎片的表现最好,在部分场景中,DLSF有最少的内存分配失败次数。此测试结果和实际情况一致,说明该性能测试框架具有一定的应用价值。不同于其他内存管理性能测试模型,我们将线程调度对于内存管理的运行影响考虑进去,从系统整体的角度分析内存管理模块在系统中的表现;使用自动生成的多场景数据集对不同的内存管理进行性能分析,使运行数据之间可以进行横向和纵向的对比,让结果更具有参考性和全面性,且有较高自动化性。本文的具体研究工作包括:1.提出并实现基于KLEE的自动化性能数据集生成工具由于嵌入式内存管理算法通常会引入辅助数据结构,例如位图,会导致路径检索变少,使生成的测试用例在性能测试中价值较小。本文在符号执行理论的基础上,针对内存管理性能测试的目的特性,在现有的KLEE工具的基础上,添加前置处理方法,能够生成符合要求的性能测试数据集。2.设计并开发双线程和多线程内存管理性能测试模型通过将线程调度添加到性能测试过程,提出双线程和多线程测试模型,从而将因内存碎片导致的内存申请失败引发的多个线程的上下文调度的时间消耗作为惩罚引入到内存管理的性能表现中。3.提出并生成嵌入式内存管理性能测试框架本文在提出的基于KLEE的自动数据集生成工具和两个测试模型的基础上,构建了 一个嵌入式内存管理性能测试框架,这个框架集合数据集生成工具、测试模型、数据分析工具等多个部分,可以通过配置文件来实现较高的自动化测试,从而对内存管理有一个多方面的性能分析,并且多个算法之间能进行横向对比。