关键词:
操作系统
硬件虚拟化
边信道
系统安全
片上多处理器系统
I/O虚拟化
缓存一致性
摘要:
集成电路制造工艺的发展与人们对计算性能的不断追求,使得MPSoC成为从移动计算到高性能计算硬件平台上的主流发展方向。随着越来越多的计算单元被集成到单一芯片上,如何更有效地使用单芯片上的资源从而获得良好的系统伸缩性成为摆在系统软件设计者前面的重要问题。在MPSoC系统上部署虚拟化技术是解决该问题的一种有效的解决方式。同时,虚拟化也带来了保障虚拟机的安全和提高虚拟机系统性能的挑战。针对面向MPSoC虚拟化体系结构的操作系统技术进行研究,可为未来基于多核处理器芯片的系统软件设计与实现提供良好的理论与技术基础,具有重要的理论意义与应用价值。本文针对面向MPSoC虚拟化体系结构的操作系统关键技术中的虚拟化系统结构、边信道安全隔离机制、网络I/O虚拟化的扩展性性能优化等方面展开了一系列的研究。文章首先对开源虚拟化平台与体系结构、虚拟机安全与I/O虚拟化技术进行了综述,然后介绍了基于飞腾硬件虚拟化技术的的操作系统设计,对虚拟化体系结构的边信道安全与高可伸缩MPSoC网络I/O的虚拟化技术进行了研究,最后实现了飞腾平台下基于硬件分区的虚拟机监控器并完成了系统性能测试。具体贡献包括:1)针对飞腾平台的体系结构特点,设计了基于飞腾硬件虚拟化技术的操作系统。文章分析了飞腾平台所提供的CPU虚拟化、内存虚拟化、中断虚拟化以及计时器虚拟化的硬件机制,讨论了飞腾平台下虚拟化系统设计中触发自陷的敏感操作、虚拟机上下文切换、两阶段地址转换机制、中断注入方式以及计时系统,完成了面向飞腾平台虚拟化系统的软件设计。此外,文章分别从CPU虚拟化支持、上下文切换方式、内存虚拟化机制、计时器虚拟化机制、中断以及中断注入分析对比了飞腾平台硬件虚拟化机制与Intel x86平台的异同。2)针对虚拟化体系结构下的边信道安全,提出了一种针对熔断漏洞主动切断隐蔽信道的防护方法。该方法在检测到异常时将噪声注入边信道或对微体系结构状态进行复位,实现了针对熔断漏洞的按需隔离。相比现有的KAISER,该方法还可以用于防御针对系统寄存器的信息泄露(熔断漏洞变种II)。由于噪声注入或状态复位的操作仅出现在异常处理路径上,因此大部分普通应用程序的性能几乎不受到影响。根据测试,该方法引入的系统性能折损率不超过1%。此外,本文针对幽灵漏洞的Retpoline防护方案进行了性能分析,提出了利用用户态网络的性能优化方案,使其网络I/O性能折损率从6.67%降低至1.27%。3)针对多核虚拟机的可扩展性问题,设计实现了基于飞腾体系结构的多队列虚拟网络I/O机制。根据实验观测,当网络I/O并发度逐步提高时,飞腾平台下虚拟机系统性能出现了明显的性能回退,增加虚拟CPU数量反而会降低系统性能。基于飞腾硬件中断虚拟化技术,本文使用虚拟MSI实现了多队列虚拟网络I/O。该机制提高了飞腾平台下虚拟机的中断处理性能,增强了虚拟机网络报文处理在多核系统上的可扩展性。实验表明,当虚拟机的CPU核心数设置为12时,相对优化前设计,虚拟网络I/O的并发请求处理吞吐率在Linux网桥、Macvlan以及Open vSwitch三种配置下分别提高了53.03%、59.78%与71.26%。4)实现了基于飞腾平台的硬件分区虚拟机监控器,解决了由飞腾平台缓存特性引入的模拟设备实现问题。相比x86架构,飞腾平台将页面高速缓存的一部分管理工作暴露给软件系统。对于飞腾平台下模拟I/O设备的实现,系统软件需要显式地介入高速缓存系统,以保证系统正常运行所需的缓存一致性。本文对飞腾平台高速缓存一致性特点进行深入分析后,改进了虚拟化平台下客户操作系统内核的加载流程,解决了飞腾平台下模拟设备的缓存不一致问题。