计算机研究与发展 ›› 2019, Vol. 56 ›› Issue (7): 1470-1487.doi: 10.7544/issn1000-1239.2019.20180577
冯馨玥1,2,杨秋松1,石琳1,王青1,2,3,李明树1
Feng Xinyue1,2, Yang Qiusong1, Shi Lin1, Wang Qing1,2,3, Li Mingshu1
摘要: 在基于虚拟机监控器(virtual machine monitor, VMM)的系统监控中,通常需要截获关键内存访问事件和关键指令执行从而监控细粒度的内存访问行为.然而利用VMM截获内存访问行为使得CPU控制权频繁陷入VMM中,导致性能开销巨大.当前已有的研究为了解决该问题,在内核编译阶段修改内核源码或者直接修改内核二进制文件,将安全关键数据重定向到单独的区域以减小陷入VMM的频率.然而这些方法必须修改被监控系统本身,并且被监控的区域在系统运行阶段不能修改,很大程度上影响了它们的应用场景,并且不够灵活.为了解决以上问题,提出了一种运行时动态调整需要监控的安全关键内存数据的方法DynMon,该方法对被监控的系统透明且不需要修改被监控系统.首先,通过对历史数据的收集和分析,自动学习系统运行状态和安全关键数据访问行为间的关系,将其作为安全关键数据监控策略的依据.然后,对系统运行状态实时监控,根据安全关键数据的监控策略,实时动态调整需要监控的内存访问区域,以减小不必要的监控带来的性能开销.实验结果表明:与没有动态监控策略的方法相比,该方法减小了22.23%的额外性能开销,并且在加大内存监控规模时,并不会过大增加系统的性能开销.
中图分类号: