安卓实现安卓-光速虚拟机技术内幕
光速虚拟机是一项基于安卓系统和ARM处理器架构的虚拟化技术,允许在安卓系统的用户态空间中运行完整的安卓内核和硬件抽象层,无需特殊权限。通过这种方式,可以在安卓APP内部运行另一个安卓系统,虚拟机内部的APP和游戏性能接近于真机的运行水平和兼容性。光速虚拟机也可视为一种安卓系统上的库操作系统(libos)。在行业中,微软和Google分别在不同系统上实现了类似的方案,微软的DrawBridge是在Windows上实现Windows,而其后续发展出的WSL是在Windows上实现Linux,Google的gVisor则是在Linux上实现Linux。光速虚拟机是首个在手机上实现完整安卓虚拟化的产品。
选择光速虚拟机作为研发方向主要考虑了以下三种场景:
1)游戏场景
用户在玩游戏时需要多开游戏,或者希望在息屏后游戏继续运行。由于众所周知的原因,华为手机无法安装GooglePlay,外服游戏用户也会遇到障碍。光速虚拟机内部可以预装GooglePlay并提供外服游戏的加速能力。
2)安全场景
安全场景分为普通用户和企业场景。普通用户在运行一些来路不明的APP时,担心隐私泄露和流氓广告的风险。光速虚拟机通过隔离真机系统和虚拟系统,确保用户信息不会被这些APP收集,也不会受到流氓广告的侵扰。
企业场景主要是安全管控能力,在移动办公领域,对企业办公APP的管控和防数据泄露通常使用重打包或沙箱方案(如VirtualAPP),但这些方案存在兼容性、部署复杂和安全管控不足的问题。光速虚拟机实现了内核和硬件抽象层,具备可证明的安全性,能够实现对企业APP的完整安全管控,并且是非侵入式方案,理论上能达到更好的兼容性和更完整的安全性。
3)兼容性场景
一些老的应用和游戏对新版本的安卓系统更新不及时,如安卓10或即将升级的安卓11。光速虚拟机内部可以运行安卓4.4至安卓10以及未来更高版本的安卓系统,目前外发版本支持安卓7.1.2。这样能保证一些老的应用和游戏能够在新的安卓系统上运行,类似于Windows操作系统的兼容模式。
相关技术介绍团队分析了目前已有的用户态虚拟化技术,选择了微软的Drawbridge&WSL、Google的gVisor以及国内的VMOS进行介绍。
1)Drawbridge&WSL介绍
Drawbridge技术架构图:
微软基于VM的虚拟化技术效率不高,而传统的OS虚拟化技术,如Linux Container,安全性又不足,因此Drawbridge选择了一条兼顾两者的道路,将Kernel的内存状态放入Windows Container中,用户间的隔离更彻底,各个Container之间依然共享部分资源,相较于VM虚拟化效率更高。
Drawbridge进一步发展成为了支持Linux的WSL。WSL通过Windows内核驱动实现Linux内核的完整功能,技术原理上与Drawbridge相关。
2)Google gVisor介绍
Google gVisor技术架构图:
gVisor是用Go编写的用户空间内核,实现了Linux内核系统调用的大部分。它包括一个称为runsc的开放容器标准(OCI)运行时,在应用程序和主机内核之间提供隔离边界。runsc运行时与Docker和Kubernetes集成,使运行沙盒容器变得简单。
3)VMOS
VMOS采用类似anbox的技术,没有实现完整的内核功能,而是基于现有安卓系统的内核,在修改C库函数的基础上运行另一个安卓系统。这样实现的问题是由于对系统调用很难实现完整截获,会引入一些兼容性问题,并且不能根治。
光速虚拟机技术架构通过上面的分析我们知道,微软Drawbridge是在Windows上实现Windows,Google的gVisor则是Linux上实现Linux。光速虚拟机则是通过Android来实现Android,我们在安卓用户态实现了一个完整的安卓内核和安卓硬件抽象层。从工程角度来看,光速虚拟机比gVisor实现的困难度要大不少,手机终端的多样性远大于后台Linux服务器版本的多样性,对性能的要求也更加严苛。光速虚拟机除了能在安卓上运行安卓,还实现了跨系统的迁移层,具有很好的迁移性,能够在国产操作系统UOS、Linux、macOS和云端运行安卓和Linux程序。
1,完整的安卓内核
安卓内核基于Linux内核,包含了如binder等特殊设备的实现。光速虚拟机将真机安卓内核视为一种资源,在其基础上完整实现了内存管理、进程管理、文件系统和设备管理等安卓内核功能。对上层提供标准的安卓内核接口。这样安卓虚拟机内部运行的安卓系统将不依赖于手机内核的实现,可以在安卓5至安卓11上运行任意版本的安卓系统,这意味着可以在安卓5的手机上运行安卓7或安卓11。目前光速虚拟机外发发布版本主要支持安卓7。
从安全角度来看,相对于沙箱或加固重打包方案,由于光速虚拟机是独立于主机的内核,能够实现更好的安全性和隔离性。也不会因为主机内核的漏洞导致APP之间的互相穿透行为。
2,完整的硬件抽象层次
光速虚拟机基于真机系统的安卓资源,实现了一个完整的硬件抽象层,包含显示屏幕、输入输出设备、蓝牙等。这样能对虚拟机内部的APP使用硬件资源进行很强的管控。甚至可以对屏幕打盲水印等特殊安全能力。
3,精简的安卓系统
光速虚拟机目前会携带一个精简的安卓系统,目前系统是基于AOSP7.1.2精简而来,大小约170M,外发版本因普通用户需求会有200多M,未来可方便扩展到安卓其他版本。
光速虚拟机实现过程中的主要技术难点:
1)系统调用的兼容性
光速虚拟机内核对自身内部运行的APP是根据Linux内核4.14的标准来实现的。
由于各个安卓系统所基于的Linux内核版本不一致,各个厂商对内核也有很多修改,光速虚拟机对真机内核使用时尽可能按照最少使用原则,尽可能不使用新内核的新特性。这种方式对光速虚拟机内核实现的难度和复杂度都比较大,却能得到比较好的兼容性。
2)系统调用的完备性
1、基于主操作系统内核来实现300多个系统调用,具有非常大的工程难度和工作量。
2、沙箱技术目前面临的最大问题是系统调用的完备性问题,沙箱通过HOOK C库函数的方式拦截所有系统调用,对于一些加固加壳的应用或游戏,这些加固的代码不通过C库直接调用系统调用,对于这些系统调用没有通用的HOOK办法来实现拦截,需要通过搜索特征码的方式来实现。沙箱技术可以通过seccomp来实现对系统调用的拦截(seccomp是Linux的一种安全机制,可以设置条件接管应有的所有系统调用),但是由于地址随机化ASLR的原因,沙箱很难区分系统调用是来自于C库还是来自于应用自身的直接调用,意味着每一个系统调用都需要进出两次内核,性能开销很大。光速虚拟机由于拥有相对完整的内核实现,比较好的解决这个问题,即兼顾性能又能实现系统调用监控的完备性。
3)TLS的处理
TLS(Thread Local Storage)是操作系统比较重要的特性,线程本地存储。
本质上虚拟机是真机上的一个APP,虚拟机里面运行的APP包含的进程是真机上的进程。如果虚拟机进程使用真机的TLS,会导致从虚拟机进入真机或者从真机回到虚拟机出现数据混乱的情况。这时就需要进程在虚拟机内部TLS和真机TLS的切换过程。虚拟机需要完整实现虚拟机内部TLS到真机TLS的互相切换过程。
4)渲染的性能处理
虚拟机包括安卓模拟器的渲染处理,一般是将虚拟系统内部的OpenGLES渲染指令通过管道的方案发送到窗口进程来完成渲染的处理。由于渲染传输的数据非常大,又是跨进程通信,导致会有比较大的性能损耗,用户在玩游戏的过程中会有延迟的感觉。光速虚拟机的渲染没有通过管道传输到渲染窗口,而是直接穿透虚拟机直接调用真机的渲染接口来完成渲染指令的计算,然后合成到渲染窗口,这样性能基本接近真机的渲染性能。
5)线程数量的控制
华为手机为了提示EMUI的性能,对单个APP有线程数量限制,比如mate8之前的手机有500个线程的数量限制,这样会导致虚拟机里面如果打开多个APP会触发这个线程数量的限制(虚拟机本质上是一个APP)。为了解决这个问题,虚拟机采用了线程池的方案。在虚拟机内核里面建立一个虚拟CPU,虚拟CPU包含了一个真机的线程池,虚拟机里面的APP创建线程的时候,实际上并不对应真机上真正的线程,由虚拟机的虚拟CPU来完成对APP线程的调度。
兼容性和性能评估安全虚拟手机在安卓内核基础上完整模拟了一个新的内核和硬件抽象层,性能、兼容性接近真机。
应用兼容性:
一个完整的安卓运行环境,技术原理上可以做到跟用户手机的兼容一致。光速虚拟机发布情况来看兼容市面上绝大部分应用和游戏。
手机兼容性:
光速虚拟机支持Android5.1至Android10的手机系统。内存方面,需要手机的内存大于等于2G。
光速虚拟机在性能方面做了比较多的优化工作,实际测试来看,性能方面:
1,主流应用启动时间相比真机影响
2,主流应用运行内存占用,CPU开销相比真机影响
3, 主流游戏性能帧率影响,渲染一帧所花时间跟真机对比影响光速虚拟机的进一步应用
移动端安全
基于光速虚拟机引擎能力的安全虚拟手机,提供整体可信任的移动端数据安全整体保护方案,包含企业应用防护,移动设备管控,安全审计等功能。
与其他解决方案进行对比,主要优势:
1,安全虚拟手机有独立于手机系统的内核和硬件抽象层,安全虚拟手机的内核数据、进程管理、内存管理、文件系统、设备管理独立于手机系统,具备完整的安全性。现有SDK方案或者沙箱方案和手机系统共用一个内核和安卓框架层,企业应用存在和手机上的其他应用进行通信和数据交互的风险。
2,非侵入式方案,方便部署和管理,方便接入到第三方管理系统,完全不需要企业应用做任何修改,具备更好的兼容性。侵入式方案通常包含SDK方案或者加固方案,需要企业重新打包已有企业应用,存在兼容性以及应用管理问题。
3,特殊安全能力,由于安全虚拟手机的屏幕是一个虚拟的屏幕设备,通过控制屏幕上像素点的显示方式,支持屏幕盲水印,需要有特殊算法才能计算出盲水印的信息。
跨平台迁移
光速虚拟机具备很好的迁移性,不依赖于虚拟化技术、在主流系统平台包含国产操作系统UOS、Android、Linux、macOS、云上系统等运行Android和Linux应用程序。
开放合作光速虚拟机除了产品自身外,正在和行业全方位合作,我们的官网:www.gsxnj.cn。
参考链接1)//m.sbmmt.com/link/4ede9640e357f086a55ab84467f2bfe2
2)//m.sbmmt.com/link/6924d618d27cad63a1b3fca578c13e49
3)//m.sbmmt.com/link/e71dca519a9758e28dac9f1804b297cd
4)www.gsxnj.cn
5)www.vmos.com
6)//m.sbmmt.com/link/f6370bef326f11083c0fc214d6d01d12
7)//m.sbmmt.com/link/ada2552da65206d7f880ef928a65753e
以上就是安卓实现安卓-光速虚拟机技术内幕的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 //m.sbmmt.com/ All Rights Reserved | php.cn | 湘ICP备2023035733号