论文部分内容阅读
近年来,移动互联网正在逐渐渗透到人们生活、工作的各个领域,各种功能丰富的移动应用迅猛发展,深刻地改变着信息时代的社会生活。然而对于当前的移动设备而言,程序的执行经常会受到计算和存储资源的限制,进而影响到用户的使用体验;为此,有必要把计算耗时的部分迁移到云端执行,利用云端强大的资源来提升程序的运行效率,同时减轻移动端的工作负担。对于如何划分出程序的迁移部分是整个迁移系统最为关键的问题之一,而传统的固定划分方式划分工作复杂、粒度大且又不够灵活。为了解决以上问题,本文设计并实现了一种具有创造性的方案来动态确定程序运行过程中的热点方法,使得划分处理可以灵活地适应当前的运行环境,为迁移系统确定最优迁移对象,从而最大限度地改善程序的运行效率。因为Android系统开源且应用最为广泛,所以本文主要在Android平台下展开相关研究工作,工作重点主要包括以下两个方面:首先,对于访问本地特定资源或共享本地状态的方法是不能被迁移到云端的,因此在进行真正的热点分析之前,需要把这类方法给过滤掉;针对此问题,本文提出并实现了一种基于字节码反编译的元信息分析方法,以提取整个程序的所有相关元信息,其中包括方法的调用关系、修饰类型以及原型信息等等;获取了元信息之后,还需要通过本文设计的一种非完全广度优先遍历算法来清除指定类别的方法,处理完成之后,便可得到热点分析集,供热点分析使用。第二个研究重点是分析虚拟机执行子系统的运行原理并扩展其相关实现,以达到动态追踪热点函数的目的,不像传统的动态分析方法,本文提出的设计方案无需进行程序插桩、也无需以特定规则编写程序、更不需要任何分析软件的支持。通过深入研究虚拟机即时编译器的运行机制并予以扩展,以获取方法的指令级复杂性;同时针对解释器的部分实现进行改造以获得方法的运行时间和当前系统负载;最后,综合所得分析信息即可确定程序的运行热点。本文提出的热点分析方案与虚拟机执行子系统达到了无缝融合,彼此之间协同工作,不仅解决了传统热点分析方法的种种弊病,而且在实际应用中也具有十分重大的意义;同时通过实验测试,也进一步验证了本方案的准确性与可行性。