[发明专利]一种基于Unikernel的云端Android运行环境构建方法在审
申请号: | 201711283627.2 | 申请日: | 2017-12-07 |
公开(公告)号: | CN107957902A | 公开(公告)日: | 2018-04-24 |
发明(设计)人: | 吴松;金海;梅超 | 申请(专利权)人: | 华中科技大学 |
主分类号: | G06F9/455 | 分类号: | G06F9/455 |
代理公司: | 华中科技大学专利中心42201 | 代理人: | 廖盈春,李智 |
地址: | 430074 湖北*** | 国省代码: | 湖北;42 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 unikernel 云端 android 运行 环境 构建 方法 | ||
技术领域
本发明属于云计算虚拟化技术领域,更具体地,涉及一种基于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作为基础库操作系统。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于华中科技大学,未经华中科技大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201711283627.2/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种抓取测试节点开机日志的方法
- 下一篇:异步任务调度方法、服务器及存储介质