论文部分内容阅读
随着多核技术的深入发展,操作系统针对多核并行的开发就成为当前多线程等并行程序的重要基础。传统多线程主要是在单核单处理器上通过操作系统调度分时运行来给应用程序一个并行的抽象,然而多核技术使得多线程的并行得到真正体现。但并行程序又带来了执行过程的不确定性问题,而这些不确定性问题使得并行程序运行的正确性受到很大影响,而且对并行程序的开发调试、安全维护等应用领域都带来一个挑战。如何解决并行的不确定性问题,使其在调试开发等领域带来更好的支持,已经成为国内外研究的热点。而目前多核上操作系统的调试等维护技术仍不成熟,且在硬件平台上的调试技术仍有配置复杂、无法重现并行的瞬时错误等问题。因此,针对多核上软件开发所面临的不确定性问题,本文基于虚拟机监控器(VMM: Virtual Machine Monitor),围绕多核系统运行状态维护、多核系统可逆调试等关键技术进行研究。针对多核系统运行状态的不确定性,本文基于对称多处理虚拟机,提出了确定并发状态机的抽象控制域。确定并发状态机的抽象控制域将虚拟机的运行行为进行了内部与外部的区分。针对内部与外部行为所引起的不确定性的特点,又可以进行不同的控制,最终完成整体运行状态的确定性控制与维护,保证了多核系统的可控性。针对对称多处理虚拟机的内部行为特点,本文基于影子页表机制,提出了虚拟私有内存模型。该模型既保证了多个虚拟CPU的并行,同时还在确定的时候对其进行同步,维护其内部虚拟CPU状态与内存状态的确定性。而对于对称多处理虚拟机的外部不确定因素特点,本文在虚拟私有内存的基础上,分别以严格和松弛两种确定执行算法,利用记录与重现技术,提出了两个机制——严格确定执行机制和松弛确定执行机制。测试结果表明,在实现参数选取较为合适的情况下,性能损耗平均在50%左右。在完成了多核系统运行确定执行的基础上,本文基于对称多处理虚拟机,提供了能够对并发执行的整体进行可逆调试的操作系统调试技术。根据确定并发状态机的特点,对多核系统的可逆调试还提出了并行单步状态点的协调可控方法。并行单步状态点利用状态间迁移情况来帮助程序员能够对系统整体有直观的把握,有助于缩小运行过程中出错的位置判断范围,从而提高调试的效率。从性能上的测试结果表明,对于raw格式的虚拟机镜像,其运行过程中的多检查点支持相对正常快照有较高的效率。