论文部分内容阅读
由于开源性、良好的可移植性和应用程序硬件平台无关性等优秀特征,Android迅速成为主流的手机操作系统。然而由于手机计算和存储能力的制约,Android应用的执行速度与PC相比还有较大差距。鉴于云计算能够提供强大的存储和计算资源,Intel提出将Android应用程序在手机上运行比较耗时的函数迁移到云端执行的克隆云思想,从而加快Android应用程序的执行速度,提供更好的用户体验。为了实现耗时函数从手机端到云端的迁移,本文提出一种不需要应用程序源代码,即能在云端重新加载执行来自Android手机应用程序的耗时函数请求的方法。针对Android应用程序的跨进程迁移中面对的4个关键问题,本文的主要内容安排如下。(1)针对从源进程迁移哪些数据的问题,本文研究了函数在解析执行过程中需要使用的数据,并在此基础上总结出迁移过程需要的数据,包括Java方法栈上函数参数数据、Java堆中与函数参数有关的对象数据、Dalvik虚拟机运行时共享的静态数据等。(2)针对如何存储源进程迁移过来的数据的问题,本文设计了存储数据的方法,使用操作系统的内存,运行时将该内存中保存的数据解析到虚拟机内,在设计内存时以方便保存和解析数据为指导思想。(3)针对在目标进程中如何恢复数据的问题,本文研究了Java内存对象模型,根据Java的单继承模型,设计了先恢复自身数据再恢复父类数据的对象还原方法。(4)针对在目标进程如何恢复从源进程迁移的函数执行问题,本文研究Dalvik虚拟机的类加载机制、解释器机制和内存管理机制,在研究的基础上,提出了一种提高手机程序执行速度的新方法—Dalvik虚拟机下Rutime运行时加载技术。最后,为验证上述方法的实用性,本文针对多个Android应用程序实例进行了实验分析。实验结果表明,本文提出的基于Dalvik虚拟机的Runtime运行时加载技术,不仅能让Android应用程序的迁移到高性能云端上执行,而且加速效果非常明显。