● 摘要
操作系统在计算机领域中处于一个十分重要的地位,但是操作系统本身在运行的时候也会可能出现各种异常行为,比如某些内核函数长时间运行或者反复运行等,这会导致系统资源的浪费,更严重的还会导致操作系统内核崩溃,因此需要能够在操作系统运行过程中实时地对操作系统内核进行追踪,从而使操作系统处于一个稳定、可靠的状态。除此之外,通过内核追踪技术能够找出操作系统的性能瓶颈,从而优化操作系统,使其提供更好的服务。
目前,在常用的非嵌入式操作系统上已经出现了一些比较典型的内核追踪技术。但是在嵌入式操作系统上,由于嵌入式操作系统有高实时性、低开销等性能要求,还缺乏追踪嵌入式操作系统内核函数的追踪工具。因此本文在分析已有的内核追踪技术的基础上,针对嵌入式操作系统的特点,设计并实现了基于嵌入式操作系统内核的追踪框架。
本文设计的内核追踪框架主要包括四个模块,分别是内核函数名处理模块、内核函数运行时间处理模块、内核函数调用关系处理模块以及网络传输模块。其中内核函数名处理模块负责只把用户输入的内核函数名进行带追踪选项的编译,这样会减少生成的内核镜像文件大小,从而降低内核追踪框架在运行时的内存开销。而内核函数运行时间处理模块则是负责获取被追踪的内核函数的具体信息,包括内核函数名以及内核函数的运行时间,由于在获取内核函数信息时,不能破坏原始内核函数执行流程,因此需要进行相应的返回地址替换。内核函数调用关系模块的作用是显示出追踪到的内核函数间的调用关系,使用户能够理清操作系统内核的脉络。网络传输模块则是通过网络将收集到的内核函数信息发送到服务器上,这时可以将部分内存清空,从而继续进行相应的追踪,防止内存不足。各个模块间功能独立又互相配合,从而能够很好地完成内核函数追踪功能。
本文将内核追踪框架在VxWorks和RTEMS这两个典型的嵌入式操作系统上进行了实现,并进行了相应的性能开销测试。测试结果显示本文设计并实现的针对嵌入式操作系统的内核追踪框架开销低、性能好,并且具有比较好的通用性和可移植性。
相关内容
相关标签