轻量级虚拟机的多平台扩展
发布时间:2020-07-06 18:30
【摘要】:随着移动设备的迅猛发展,手机设备在未来会发挥越来越重要的作用,目前很多移动设备的处理器使用的都是ARM架构,因此在此平台上扩展虚拟化技术有十分重要的意义。本课题研究将虚拟化技术扩展到ARM平台上,主要探讨基于XenARM的架构,在ARM平台上设计并实现一种轻量级的虚拟机。该系统基本实现了CPU、内存、中断的虚拟化,实现了部分驱动的虚拟化,并且实现了Android和mini-os的虚拟化,使它们能够同时运行在Android模拟器模拟的goldfish平台上。 ARM虚拟化的设计与实现主要分两个部分。其中,第一部分也是核心部分是Hypervisor的设计与实现,包括实现在模拟器中启动运行Hypervisor,实现在Hypervisor中启动客户操作系统,实现CPU特权级的模拟,实现Hypervisor和DomainU的内存分配,实现虚拟中断的传递,以及实现资源的共享与隔离。第二部分是Android操作系统的虚拟化,这一部分主要描述了Android内核的修改,修改的目的主要是使其支持ARM虚拟化的机制并且能够很好的与底层的Hypervisor进行交互,Android虚拟化也主要包括CPU的虚拟化、内存的虚拟化、中断的虚拟化与设备的虚拟化。 最终实现了在Android模拟器上同时运行两个个操作系统(Android和mini-os),测试表明两个操作系统能够稳定的运行在虚拟化环境下,并且性能较未虚拟化时并没有明显的损失。
【学位授予单位】:华中科技大学
【学位级别】:硕士
【学位授予年份】:2011
【分类号】:TP302;TP391.9
【图文】:
图2.1ARM的内存块映射在初始化的过程中,Hypervisor将0xFF000000到0xFF200000的虚拟地址空间映射了0x0到0x200000的物理内存空间上,访问权限是内核态可读可写,用户态不可读可写,这样做之后Hypervisor拥有特权可以通过高端虚拟地址访问到物理内存前B。同时,Hypervisor将0x0到0x6000000的虚拟地址空间映射到了0x0到0x6000000物理内存空间上,访问权限是内核态可读可写,用户态不可读不可写,这样做是了让Hypervisor能够暂时通过低端虚拟地址的访问到所有的物理内存(实际上在启Domain之后,这一段的内存块映射会被清除)。另外Hypervisor还将0xF0000000到F0800000的虚拟地址空间映射到了0xFF000000到0xFF800000的物理内存空间上,问权限是内核态可读可写,用户态可读可写,在ARM平台上,访问I/O和访问内存样是通过内存地址来访问的,而在goldfish平台上,0xFF000000到0xFF800000是设I/O端口所对应的物理地址,于是这段映射就是I/O端口的映射。另外Hypervisor的页目录是存放在物理地址的0xC000处,因为ARM的页式寻址方式与x86略有不同,ARM系统的一张页目录表的大小是16KB,所以在Hypervisor
12图2.1ARM的内存块映射在初始化的过程中,Hypervisor将0xFF000000到0xFF200000的虚拟地址空间映射到了0x0到0x200000的物理内存空间上,访问权限是内核态可读可写,用户态不可读不可写,这样做之后Hypervisor拥有特权可以通过高端虚拟地址访问到物理内存前2MB。同时,Hypervisor将0x0到0x6000000的虚拟地址空间映射到了0x0到0x6000000的物理内存空间上,访问权限是内核态可读可写,用户态不可读不可写,这样做是为了让Hypervisor能够暂时通过低端虚拟地址的访问到所有的物理内存(实际上在启动Domain之后,这一段的内存块映射会被清除)。另外Hypervisor还将0xF0000000到0xF0800000的虚拟地址空间映射到了0xFF000000到0xFF800000的物理内存空间上,访问权限是内核态可读可写
15图2.3 物理内存分布图其中,bitmap中的每一个bit对应一个物理页,每个物理页大小为4KB,每次Hypervisor需要分配或者释放某个物理页时都会修改相应的bit位。每个Page_info数据结构对应一个物理页,物理页的基本信息都可以从这个数据结构中获取。Hypervisor中的heap是一组指向空闲物理页对应的Page_info数据结构的指针,指向与空闲内存相关的链表,比如heap[x][y],x代表的是域(属于Hypervisor还是DomainU)
本文编号:2743979
【学位授予单位】:华中科技大学
【学位级别】:硕士
【学位授予年份】:2011
【分类号】:TP302;TP391.9
【图文】:
图2.1ARM的内存块映射在初始化的过程中,Hypervisor将0xFF000000到0xFF200000的虚拟地址空间映射了0x0到0x200000的物理内存空间上,访问权限是内核态可读可写,用户态不可读可写,这样做之后Hypervisor拥有特权可以通过高端虚拟地址访问到物理内存前B。同时,Hypervisor将0x0到0x6000000的虚拟地址空间映射到了0x0到0x6000000物理内存空间上,访问权限是内核态可读可写,用户态不可读不可写,这样做是了让Hypervisor能够暂时通过低端虚拟地址的访问到所有的物理内存(实际上在启Domain之后,这一段的内存块映射会被清除)。另外Hypervisor还将0xF0000000到F0800000的虚拟地址空间映射到了0xFF000000到0xFF800000的物理内存空间上,问权限是内核态可读可写,用户态可读可写,在ARM平台上,访问I/O和访问内存样是通过内存地址来访问的,而在goldfish平台上,0xFF000000到0xFF800000是设I/O端口所对应的物理地址,于是这段映射就是I/O端口的映射。另外Hypervisor的页目录是存放在物理地址的0xC000处,因为ARM的页式寻址方式与x86略有不同,ARM系统的一张页目录表的大小是16KB,所以在Hypervisor
12图2.1ARM的内存块映射在初始化的过程中,Hypervisor将0xFF000000到0xFF200000的虚拟地址空间映射到了0x0到0x200000的物理内存空间上,访问权限是内核态可读可写,用户态不可读不可写,这样做之后Hypervisor拥有特权可以通过高端虚拟地址访问到物理内存前2MB。同时,Hypervisor将0x0到0x6000000的虚拟地址空间映射到了0x0到0x6000000的物理内存空间上,访问权限是内核态可读可写,用户态不可读不可写,这样做是为了让Hypervisor能够暂时通过低端虚拟地址的访问到所有的物理内存(实际上在启动Domain之后,这一段的内存块映射会被清除)。另外Hypervisor还将0xF0000000到0xF0800000的虚拟地址空间映射到了0xFF000000到0xFF800000的物理内存空间上,访问权限是内核态可读可写
15图2.3 物理内存分布图其中,bitmap中的每一个bit对应一个物理页,每个物理页大小为4KB,每次Hypervisor需要分配或者释放某个物理页时都会修改相应的bit位。每个Page_info数据结构对应一个物理页,物理页的基本信息都可以从这个数据结构中获取。Hypervisor中的heap是一组指向空闲物理页对应的Page_info数据结构的指针,指向与空闲内存相关的链表,比如heap[x][y],x代表的是域(属于Hypervisor还是DomainU)
【参考文献】
相关期刊论文 前5条
1 曾伟,孙晓玲;SIP协议的现状及应用[J];电信快报;2002年05期
2 王经坤,艾兴,张进生,黄克正;虚拟产品开发技术的理论体系研究[J];计算机工程;2003年03期
3 董耀祖;周正伟;;基于X86架构的系统虚拟机技术与应用[J];计算机工程;2006年13期
4 杨少春;;采用VMware构建虚拟并行计算网[J];计算机工程与设计;2006年14期
5 刘爱军;耿国华;;基于x86的虚拟机技术现状、应用及展望[J];计算机技术与发展;2007年11期
本文编号:2743979
本文链接:https://www.wllwen.com/kejilunwen/jisuanjikexuelunwen/2743979.html