论文部分内容阅读
获取操作系统运行时的实时信息,监测并记录系统运行时的状态是十分重要的。一方面,这些信息是系统性能监测和调优(tuning)、内核剖面(profiling)、应用程序执行追踪(tracing)以及错误检测与处理的基础;另一方面,发现和记录系统运行时的非正常状态,有助于及时改正系统运行时的错误或不适当的配置,提高系统运行的效率。
现有的获取系统运行时信息的工具,如性能监测工具或错误检测工具,将实现监测的代码大量散布在实现操作系统主要功能的各代码模块中,与操作系统的多个功能关注点交织在一起,降低了系统的模块化程度,且代码分散、交织,难于理解和维护。采用面向侧面(Aspect-Oriented)的程序设计思想和编程技术,将状态监测这一关注点封装在称为侧面(aspect)的单元中,并在系统运行时动态编排到内核内,可以提高操作系统的模块化程度和灵活性,有利于操作系统的维护和发展。
本论文采用AOP(Aspect-OrientedProgramming)技术,设计并实现了一个Linux内核状态监测工具LKSM(LinuxKernelStateMonitor)。该工具将监视系统不同部分(如CPU、内存、I/O、网络传输、进程调度、内核模块等)的代码封装在若干侧面中。系统运行时,根据需要将不同的侧面加载到内核中,即可获取对应部分的运行时信息,还可分析并记录系统的非正常运行状态,便于及时纠错和系统管理,确保系统正确、高效的运行。在不需要时,可以动态卸载监测代码,以减轻系统开销。该工具已在Linux2.6.20内核上实现,并提供了三个应用实例:内存泄漏检测、死锁检测、以及基于生产率与负载的变化关系检测系统是否存在性能异常。实验结果表明,采用AOP方法实现Linux内核状态监测是可行的。