CN107957902A - 一种基于Unikernel的云端Android运行环境构建方法 - Google Patents
一种基于Unikernel的云端Android运行环境构建方法 Download PDFInfo
- Publication number
- CN107957902A CN107957902A CN201711283627.2A CN201711283627A CN107957902A CN 107957902 A CN107957902 A CN 107957902A CN 201711283627 A CN201711283627 A CN 201711283627A CN 107957902 A CN107957902 A CN 107957902A
- Authority
- CN
- China
- Prior art keywords
- android
- clouds
- unikernel
- virtual machine
- running environment
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45504—Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
- G06F9/45508—Runtime interpretation or emulation, e g. emulator loops, bytecode interpretation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45562—Creating, deleting, cloning virtual machine instances
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45575—Starting, stopping, suspending or resuming virtual machine instances
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45587—Isolation or security of virtual machine instances
Abstract
本发明公开了一种基于Unikernel的云端Android运行环境构建方法,属于云计算虚拟化技术领域。本发明方法首先分析并获取Android代码卸载场景下为实现最小Android运行环境云端必须提供支持的Android子系统组件;之后移植Android必要子系统、Bionic和Dalvik虚拟机到库操作系统中;再编译Android应用代码,从库操作系统中提取相关依赖打包生成Unikernel虚拟机镜像;最后将Unikernel在KVM、XEN等Hypervisor上启动,运行安卓代码。本发明通过在库操作系统中添加必要的Android环境支撑,编译Android应用代码到Unikernel,利用Unikernel镜像体积小、开销少、启动快、隔离强等特性,可以有效的较少云端资源开销,增加云端能提供的虚拟机实例数量、同时极大的减少云端与终端通信的延迟,提高终端应用的用户体验。
Description
技术领域
本发明属于云计算虚拟化技术领域,更具体地,涉及一种基于Unikernel的云端Android运行环境构建方法。
背景技术
近几年来,移动应用市场发展迅速,应用功能越做越精细,越来越多的移动应用尝试完成更加复杂的逻辑功能,诸如大型游戏和虚拟现实(Virtual Reality)功能的出现都为移动设备的处理器性能带来了挑战。此外,终端电池续航能力提升发展非常缓慢,使用时间有限。
为了解决以上问题,移动云计(Mobile Cloud Computing,MCC)算应运而生,利用云计算近乎无限的资源和高性能来扩展移动设备受限的硬件性能。通过把复杂运算,甚至是移动设备不可能完成的计算任务交给云端来完成,移动设备直接从云端获得计算结果。这不仅改善了移动应用的用户体验,还大大延长了移动设备的电池寿命和续航能力。
目前比较流行的方式就是将手机等终端上部分对CPU处理能力要求较高的任务单独卸载到云端,然后云端模拟出终端的运行环境,执行代码再将结果返回到终端。然而,云端普遍采用基于虚拟机的方式来为终端服务,由于虚拟机里面运行一个完整的操作系统,这种虚拟化方案资源开销十分大,而且启动也很慢,一般都要十几秒到几十秒,很难保证终端请求的实时性,因此不可取。而另外一种基于容器技术的较轻量级的解决方案,利用容器与宿主操作系统共享内核的特点,极大地减小了云端的开销,同时容器启动也很快,极大地减小了终端请求的响应延迟,但还是不够快,不够精简,而且容器隔离性安全性也远不如虚拟机好。
发明内容
针对现有技术的以上缺陷或改进需求,本发明提供了一种基于Unikernel的云端Android运行环境构建方法,其目的在于通过在库操作系统中添加必要的Android环境支撑,编译Android应用代码到Unikernel,利用Unikernel镜像体积小、开销少、启动快、隔离强等特性,可以有效的减小云端资源开销,增加云端能提供的虚拟机实例数量、同时极大的减少云端与终端通信的延迟,提高终端应用的用户体验。
为实现上述目的,本发明提供了一种基于Unikernel的云端Android运行环境构建方法,所述方法包括:
(1)将Android必要子系统组件、Bionic和Dalvik虚拟机移植到库操作系统中;
(2)对Android应用代码进行编译,并从所述库操作系统中提取Android应用代码相关依赖库打包生成Unikernel虚拟机镜像;
(3)将Unikernel虚拟机镜像在Hypervisor上启动,运行Android代码。
进一步地,所述步骤(1)中Android必要子系统组件通过如下方法获得:分析Android代码卸载场景,获取为实现最小Android运行环境云端必须具备的Android必要子系统组件。
进一步地,所述步骤(1)中Android子系统组件用于执行计算密集型任务。
步骤(1)通过分析卸载到云端的Android代码,发现这部分代码主要是些计算密集型任务,不会涉及图形界面、传感器、多媒体播放等功能,因此,云端不需要提供一个完整的Android系统,只需要提供一个包含能执行“卸载代码”的基础运行环境即可。
进一步地,所述步骤(1)具体将Android必要子系统组件、Bionic和Dalvik虚拟机重构到库操作系统中以库的形式提供给应用代码。
步骤(1)具体包括:
(11)移植Android的C库Bionic,bionic是谷歌针对ARM平台提供的libc库,包括libc、libstdc++等函数库以及一些系统调用,里面很多头文件都由kernel导过来,包含架构相关代码,因此移植到X86平台需要修改其中架构相关的代码以兼容GNU libc;
(12)移植Dalvik虚拟机,Dalvik是Android的Java虚拟机,其中包含了对Android字节码文件的解释器,是运行Android代码的必要组件;
(13)移植必要Android类库,经过S1分析排除掉不必要的冗余系统组件后,需要移植云端可能会用到的Android的基础类库及其底层JNI本地方法库,比如在云端处理图片时可能会用到android.graphics.Bitmap及相关类库;
(14)最后,为了能使各个系统功能组件更加细粒度的打包到Unikernel镜像,使生成的Unikernel尽可能的小,需要将以上移植的内容重构到库操作系统中以库的形式提供给应用代码;这里选择OSv作为基础库操作系统。
进一步地,所述步骤(2)具体包括:
(21)分析Android卸载代码所需的操作系统依赖库和相关库;
(22)从库操作系统中提取相关库与应用代码一起编译打包生成单一地址空间的Unikernel虚拟机镜像。
步骤(3)中由于Unikernel镜像里面已经包含了应用及其所需要的依赖组件,因此Unikernel镜像可以在各种虚拟机管理器上运行,而不再需要借助于操作系统,从而实现一次编译,处处运行的好处。
总体而言,通过本发明所构思的以上技术方案与现有技术相比,具有以下技术特征及有益效果:
本发明方法提出一种基于Unikernel的云端Android运行环境构建方法,通过在库操作系统中添加Android的相应组件库,只将Android应用源码与其系统依赖一起打包到单独的Unikernel镜像中,而应用不需要的系统功能一律不包含,以此实现KB-MB级的虚拟机镜像大小,极大地减小了代码受攻击面,增加了安全性,启动速度也通常在1秒以内,运行时开销极小,此外,在Unikernel里面应用源码和其依赖的内核源码都运行在同一地址空间,从而省去了传统操作系统中应用在内核态和用户态不断切换的开销,因此Unikernel里面应用的执行效率也更高,这种虚拟化解决方案更加适合于移动应用的实时请求。
附图说明
图1是传统虚拟机软件栈与Unikernel中软件栈对比;
图2是本发明方法中Unikernel构建及运行过程示意图;
图3是本发明方法中针对Android代码卸载的Unikernel构建过程。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。
如图1所示,传统虚拟机软件栈中包含内核空间、用户空间、多进程多线程支持、语言运行时、应用程序等,而Unikernel镜像中则只包含应用及其运行时环境依赖,省去了大部分无用的操作系统功能,极大地减小了系统的开销;与此同时,没有了内核空间和用户空间的划分,应用代码与内核代码运行在同一地址空间,因此系统调用拥有和普通函数调用一样小的开销,应用访问硬件时也不需要在内核态和用户态反复切换,避免了上下文切换的开销,因此,在Unikernel中应用的执行效率更高。
如图2所示,为Unikernel构建过程的抽象,构建Unikernel首先需要库操作系统作为支持,通过库操作系统的编译子系统编译应用代码,此间需要分析应用代码中需要用到的底层操作系统功能,然后动态的从库操作系统中提取需要的相关库,最后与应用代码一起打包,生成可以运行在各种Hypervisor之上的单一地址空间虚拟机镜像,虚拟机启动时,会自动运行应用代码,运行结束后虚拟机立即关闭。
如图3所示,为本发明针对Android代码卸载的Unikernel轻量级云平台虚拟化方法实现过程,其中主要包括以下几步:
(S1)移植Android必要子系统、底层C库(Bionic)、Dalvik虚拟机并重构到库操作系统中;
(S2)编译Android代码,分析其需要用到的操作系统依赖,从库操作系统中提取相关依赖打包生成Unikernel虚拟机镜像;
(S3)将Unikernel在KVM、XEN和VMvare等Hypervisor上启动,运行安卓代码。
以上内容本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
Claims (5)
1.一种基于Unikernel的云端Android运行环境构建方法,其特征在于,所述方法包括:
(1)将Android必要子系统组件、Bionic和Dalvik虚拟机移植到库操作系统中;
(2)对Android应用代码进行编译,并从所述库操作系统中提取Android应用代码相关依赖库打包生成Unikernel虚拟机镜像;
(3)将Unikernel虚拟机镜像在Hypervisor上启动,运行Android代码。
2.根据权利要求1所述的一种云端Android运行环境构建方法,其特征在于,所述步骤(1)中Android必要子系统组件通过如下方法获得:
分析Android代码卸载场景,获取为实现最小Android运行环境云端必须具备的Android必要子系统组件。
3.根据权利要求1所述的一种云端Android运行环境构建方法,其特征在于,所述步骤(1)中Android子系统组件用于执行计算密集型任务。
4.根据权利要求1所述的一种云端Android运行环境构建方法,其特征在于,所述步骤(1)具体将Android必要子系统组件、Bionic和Dalvik虚拟机重构到库操作系统中以库的形式提供给应用代码。
5.根据权利要求1所述的一种云端Android运行环境构建方法,其特征在于,所述步骤(2)具体包括:
(21)分析Android卸载代码所需的操作系统依赖库和相关库;
(22)从库操作系统中提取相关库与应用代码一起编译打包生成单一地址空间的Unikernel虚拟机镜像。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711283627.2A CN107957902A (zh) | 2017-12-07 | 2017-12-07 | 一种基于Unikernel的云端Android运行环境构建方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711283627.2A CN107957902A (zh) | 2017-12-07 | 2017-12-07 | 一种基于Unikernel的云端Android运行环境构建方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN107957902A true CN107957902A (zh) | 2018-04-24 |
Family
ID=61958222
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711283627.2A Pending CN107957902A (zh) | 2017-12-07 | 2017-12-07 | 一种基于Unikernel的云端Android运行环境构建方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107957902A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109445772A (zh) * | 2018-12-29 | 2019-03-08 | 山东劳动职业技术学院(山东劳动技师学院) | 一种面向智能手机的软件应用框架及其开发系统 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105204913A (zh) * | 2015-10-20 | 2015-12-30 | 福建升腾资讯有限公司 | 一种在Android操作系统上运行Linux应用程序的方法及系统 |
-
2017
- 2017-12-07 CN CN201711283627.2A patent/CN107957902A/zh active Pending
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105204913A (zh) * | 2015-10-20 | 2015-12-30 | 福建升腾资讯有限公司 | 一种在Android操作系统上运行Linux应用程序的方法及系统 |
Non-Patent Citations (2)
Title |
---|
ANIL MADHAVAPEDDY 等: "Unikernels: Library Operating Systems for the Cloud", 《ASPLOS "13 PROCEEDINGS OF THE EIGHTEENTH INTERNATIONAL CONFERENCE ON ARCHITECTURAL SUPPORT FOR PROGRAMMING LANGUAGES AND OPERATING SYSTEMS》 * |
吴松 等: "Container-Based Cloud Platform for Mobile Computation Offloading", 《2017 IEEE INTERNATIONAL PARALLEL AND DISTRIBUTED PROCESSING SYMPOSIUM(IPDPS)》 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109445772A (zh) * | 2018-12-29 | 2019-03-08 | 山东劳动职业技术学院(山东劳动技师学院) | 一种面向智能手机的软件应用框架及其开发系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9830176B2 (en) | Methods, systems, and media for binary compatible graphics support in mobile operating systems | |
US8938723B1 (en) | Use of GPU for support and acceleration of virtual machines and virtual environments | |
US8327354B1 (en) | Virtualization with binary translation | |
US20180074843A1 (en) | System, method, and computer program product for linking devices for coordinated operation | |
US20160285958A1 (en) | Application container for live migration of mobile applications | |
Kämäräinen et al. | Virtual machines vs. containers in cloud gaming systems | |
JP2015524126A (ja) | 適応的に移植性を有したライブラリ | |
Zhang et al. | {KylinX}: A Dynamic Library Operating System for Simplified and Efficient Cloud Virtualization | |
US10671728B2 (en) | Mobile device for analyzing malicious code using a container platform, system for analyzing malicious code in a mobile device using the same, and method for analyzing malicious code using the same | |
CN104903859A (zh) | 异构计算环境中的过程迁移方法和系统 | |
US9424089B2 (en) | Hardware acceleration of web applications | |
US8768682B2 (en) | ISA bridging including support for call to overidding virtual functions | |
US8789046B2 (en) | Method to embed a light-weight kernel in a full-weight kernel to provide a heterogeneous execution environment | |
EP2802983B1 (en) | Isa bridging with callback | |
US9342450B2 (en) | On-demand hypervisor memory mapping | |
US20130204924A1 (en) | Methods and apparatuses for providing application level device transparency via device devirtualization | |
Jeong et al. | Seamless offloading of web app computations from mobile device to edge clouds via html5 web worker migration | |
Andrus et al. | Cider: Native execution of ios apps on android | |
CN105630534A (zh) | 基于TrustZone架构的应用程序执行方法、装置和终端 | |
US9658867B2 (en) | Preserving object code translations of a library for future reuse by an emulator | |
US8087018B2 (en) | Managing and supporting multithreaded resources for native code in a heterogeneous managed runtime environment | |
Debab et al. | Containers runtimes war: a comparative study | |
US20140222410A1 (en) | Hybrid emulation and kernel function processing systems and methods | |
Goethals et al. | A functional and performance benchmark of lightweight virtualization platforms for edge computing | |
CN107957902A (zh) | 一种基于Unikernel的云端Android运行环境构建方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20180424 |
|
RJ01 | Rejection of invention patent application after publication |