论文部分内容阅读
随着智能设备的发展与进步,智能手机的硬件配置越来越高。而由于Android系统是一款开源并且免费的系统,大部分手机厂商都将Android系统作为智能手机的操作系统。但由于用户的应用场景和需求也在时刻变化,只安装了一个操作系统的智能手机愈来愈无法满足用户日益复杂的个性化需求,同时也缺乏对用户隐私数据的保护。为了解决上述问题,本文引入了嵌入式虚拟化技术,该技术可以使一个设备上同时运行多个操作系统。从而满足用户的多应用场景需求。虚拟化技术可以使同一硬件平台上同时运行多个操作系统,通过分区等技术将不同操作系统之间的数据和文件进行隔离,使系统相互之间独立运行。其中一个系统遭受恶意受攻击或崩溃并不会影响其他系统的正常运行,从而提高安全性。但嵌入式设备对性能要求比较苛刻,在多个系统运行的同时又不能影响用户体验。而对于传统的虚拟化技术而言,不论是KVM还是Xen虚拟化技术,消耗系统资源都较高,效率较低;并且全虚拟化技术需要CPU的支持,半虚拟化技术也需要对系统内核做大量修改。相对于传统的虚拟化技术,轻量级虚拟化容器技术不仅效率较高,而且实现更加简单,代码量较少。因此本文通过利用容器技术,来完成对Android系统的虚拟化。本文基于Linux容器技术设计并实现Android系统的虚拟化,从而使得多个Android系统能够同时运行。首先,本文对Linux容器技术以及Aufs文件系统进行了较为详细的分析;并根据容器技术设计了多Android系统的框架。为了使多个Android系统可以同时访问一些特定设备,本文通过在Android的Linux内核中实现了一种新的命名空间机制;并提出了一种虚拟化的实现方法,实现了Frame Buffer、Binder、GPU等设备的复用技术。接着利用FrameBuffer的虚拟化技术实现了多个Android系统间的快速切换技术,便于用户的使用,增强用户体验。然后,为了保证多个系统的功能多样化,针对闭源驱动程序提出一种设备代理机制,来实现第三方设备的复用,例如SIM卡、WiFi、Camera等设备。最后,在Google Nexus 4手机设备上实现了一个原型系统,并进行了大量测试,实验数据证明了所提方法的可行性和有效性。