《一种基于ARM平台的ANDROID启动加速方法.pdf》由会员分享,可在线阅读,更多相关《一种基于ARM平台的ANDROID启动加速方法.pdf(11页珍藏版)》请在专利查询网上搜索。
1、10申请公布号CN104102506A43申请公布日20141015CN104102506A21申请号201410170411522申请日20140425G06F9/44520060171申请人华南理工大学地址511400广东省广州市南沙区环市大道南路25号华工大广州产研院72发明人刘发贵缪汉威74专利代理机构广州粤高专利商标代理有限公司44102代理人何淑珍54发明名称一种基于ARM平台的ANDROID启动加速方法57摘要本发明提供一种基于ARM平台的ANDROID启动加速方法,采用技术,对ANDROID启动过程进行加速,通过采用BLCR技术对ANDROID启动过程比较耗时的ZYGOTE进程。
2、预加载类和预加载资源过程进程断点设置,然后在进程启动到执行断点时保存进程的当前状态和信息到一个镜像文件中,下次启动的时候直接从镜像文件中启动该进程,从而跳过了耗时的预加载类和预加载资源过程,达到开机启动加速的目的。通过本发明的BLCR技术实现的ANDROID加速,可以将ANDROID的启动时间缩短至少13秒,对ANDROID的启动速度提高了接近3040,而且这种方式对ANDROID的后续性能没有影响。51INTCL权利要求书1页说明书5页附图4页19中华人民共和国国家知识产权局12发明专利申请权利要求书1页说明书5页附图4页10申请公布号CN104102506ACN104102506A1/1页。
3、21一种基于ARM平台的ANDROID启动加速方法,其特征在于包括如下步骤(1)修改LINUX内核编译选项,添加ENABLELOADABLEMODULESUPPORT以支持动态模块加载;编译基于ARM平台的LINUX内核镜像;修改LINUX内核配置为基于ARM平台,修改BERKELEYLABCHECKPOINT/RESTART即BLCR内核模块文件以支持ARM平台;然后BLCR编译动态内核模块;(2)修改ANDROID的BIONIC的线程库文件,添加BLCR动态链接库模块所需的线程库API函数接口,修改ANDROID的启动脚本INITRC,实现将BLCR的动态内核模块在系统进入用户空间后添加进。
4、去的功能,以供后续BLCR动态链接库调用;(3)编写ANDROID平台下调用BLCR内核模块的动态链接库编译的ANDROIDMK文件,并对BLCR动态链接库模块进行修改以支持ANDROID系统;将BLCR在X86平台的API库移植到ARM平台;(4)通过使用BLCR技术实现ANDROID系统的ZYGOTE进程的镜像备份和从镜像文件中直接启动的方法,从而跳过了耗时的ZYGOTE进程预加载类与预加载资源的过程;(5)编写ANDROID启动的INITRC调用的脚本,判断镜像文件是否存在,如果存在则直接从镜像文件启动,如果不存在,则生成通过调用BLCR动态内核模块生成ZYGOTE进程的镜像文件。2根据。
5、权利要求1所述的基于ARM平台的ANDROID启动加速方法,其特征在于步骤(1)然后通过修改BLCR的内核模块源码,使其支持ARM平台,然后通过交叉编译链将其编译成基于ARM平台的动态加载模块。3根据权利要求1或2所述的基于ARM平台的ANDROID启动加速方法,其特征在于在步骤(2)中,添加了ANDROID平台下BLCR动态链接库所需线程库API函数接口以及修改了ANDROID启动过程的INITRC脚本,动态添加了BLCR技术内核模块。4根据权利要求3所述的基于ARM平台的ANDROID启动加速方法,其特征在于所述步骤(3)通过修改BLCR支持ANDROID系统的动态库源码以支持ARM平台的。
6、所有ANDROID系统。5根据权利要求4所述的基于ARM平台的ANDROID启动加速方法,其特征在于步骤(4)通过编写ANDROID平台下的JNI接口函数,调用BLCR底层动态链接库;在ZYGOTEINITJAVA文件中通过JNI调用BLCR模块,在耗时的预加载类及预加载资源过程之后设置断点,将ZYGOTE进程保存到镜像文件中;下次启动时通过恢复进程的镜像文件,从断点处往下执行程序,跳过耗时的预加载类及预加载资源的过程。权利要求书CN104102506A1/5页3一种基于ARM平台的ANDROID启动加速方法技术领域0001本发明属于计算机操作系统技术领域,特别是提供一种针对ARM平台的AND。
7、ROID启动加速的方法。背景技术0002ANDROID开机启动加速,近年来越来越受人们关注了。主要是由于ANDROID设备的大量普及。而且相对于很少关机的手机,其他智能设备如平板电脑等越来越普及,而且这些设备相对于手机来说是需要经常的开关机,所以其启动速度直接影响到用户体验,也是判断产品的优劣一个重要标准。0003ANDROID的开机启动优化一直以来都是一个非常热门的研究领域,而且现在业界对ANDROID开机快速启动的需求越来越紧迫。目前国内外有很多人对ANDROID的开机启动过程进行相关工作的研究。0004一种是采用电源管理的技术,使用休眠或睡眠的方式对ANDROID系统进行非真正意义上的关。
8、机,当用户需要使用设备时再唤醒设备。这种“热启动”的方式还是会有一定程度的电源消耗,而且也不是真正意义上的关机,很难满足用户的需求。0005还有一种方式是将ANDROID启动过程的ZYGOTE预加载类和资源进行了裁剪,这种方式对ANDROID启动后的后续性能带来不良的影响。因为打开应用程序的次数远远多于用户开关机的次数。因为这些预加载类和资源都是GOOGLE工程师精心设计的,缺少了这些预加载的类和资源,后续的应用启动速度需要重新加载这些类和资源,从而导致应用程序启动速度变慢。0006还有的是通过特殊的硬件支持实现的,类似休眠技术,不过这种加速方法可以实现“冷启动”,通过从FLASH非易失性存储。
9、介质中加载启动时需要的核心数据,等启动完成后再后续加载其他非核心数据完成启动,虽然启动速度有很大的提升,但是需要特殊硬件的支持,使用范围受到了很大的限制。0007在ANDROID系统中,从目前来看这些优化方法有些存在方法使用范围具有局限性,有些方法会带来一些ANDROID启动后的后续性能问题,有些方法需要特殊的硬件支持等。这些是不能满足ANDROID启动加速需求的。发明内容0008本发明的目的在于克服现有技术的不足,提供一种基于ARM平台的ANDROID启动加速方法。0009为了实现上述发明目标,采用的技术方案如下一种基于ARM平台的ANDROID启动加速方法,包括如下步骤(1)修改LINUX。
10、内核编译选项,添加ENABLELOADABLEMODULESUPPORT以支持动态模块加载。编译基于ARM平台的LINUX内核镜像。修改LINUX内核配置为基于ARM平台,修改BLCRBERKELEYLABCHECKPOINT/RESTART内核模块文件以支持ARM平台。然后交叉BLCR说明书CN104102506A2/5页4编译动态内核模块。0010(2)修改ANDROID的BIONIC的线程库文件,添加BLCR动态链接库模块所需的线程库API函数接口,修改ANDROID的启动脚本INITRC,实现将BLCR的动态内核模块在系统进入用户空间后添加进去的功能,以供后续BLCR动态链接库调用。0。
11、011(3)编写了ANDROID平台下调用BLCR内核模块的动态链接库编译的ANDROIDMK文件,并对BLCR动态链接库模块进行了修改以支持ANDROID系统。将BLCR在X86平台的API库移植到ARM平台。0012(4)编写了ANDROID平台下的JNI接口函数,调用BLCR底层动态链接库。编写了在ZYGOTEINITJAVA文件中通过JNI调用BLCR模块,在耗时的预加载类及预加载资源过程之后设置断点,将ZYGOTE进程保存到镜像文件中。下次启动时通过恢复进程的镜像文件,从断点处往下执行程序,跳过了耗时的预加载类及预加载资源的过程,从而提高了ANDROID的启动速度。0013(5)编写。
12、ANDROID启动的INITRC调用的脚本,判断镜像文件是否存在,如果存在则直接从镜像文件启动,如果不存在,则生成通过调用BLCR动态内核模块生成ZYGOTE进程的镜像文件。0014如步骤(1)所述将BLCR技术移植到ARM平台,然后通过修改BLCR的内核模块源码,使其支持ARM平台,然后通过交叉编译链将其编译成基于ARM平台的动态加载模块。0015步骤(2)中,由于ANDROID为了具有更高的效率、低内存占用、非常快和小的线程实现、内置了对ANDROID特有服务的支持等特点。使用了优化和裁剪的LIBC库BIONIC,BIONIC使用的线程库由于部分被裁剪了,ANDROID系统的BIONIC并。
13、没有实现所有的POSIX线程库中的API。所以为了支持BLCR底层函数API使用了的线程库,需要添加BLCR所需的线程函数API。0016所述步骤(3)修改BLCR的动态链接库文件,使其可以在ANDROID平台下供上层JAVA应用程序通过JNI进行调用,通过设置断点来实现进程镜像文件的生成。需要编写相应平台的ANDROIDMK文件生成ARM平台的动态链接库。0017步骤(4)通过对ZYGOTEINITJAVA文件的修改,对ANDROID启动过程中比较耗时的预加载类与预加载资源过程采用BLCR技术进行优化,优化的方式是采用BLCR的断点重启技术,在断点处将ZYGOTE进程保存到镜像文件中,下次启。
14、动的时候直接从镜像文件中启动,从而加快ANDROID的启动速度。0018所述步骤(5)通过修改ANDROID的启动脚本INITRC添加判断是否生成了ZYGOTE进程的镜像文件的执行脚本,如果存在,则从该镜像文件启动ZYGOTE进程,如果不存在则通过执行正常的启动流程生成ZYGOTE进程的镜像文件。0019步骤(5)实现ANDROID系统的“冷启动”,相比基于电源管理的休眠方式“热启动”技术,可以更加有效的节约电能。而且,采用BLCR技术弥补了预加载类和预加载资源的裁剪或定制影响ANDROID系统后续性能的问题。0020与现有技术相比,本发明具有如下优点和技术效果A、支持所有ARM平台的ANDR。
15、OID系统通过移植BLCR技术,对ANDROID系统的ZYGOTE进程的耗时的预加载类及预加载资源进行优化,从而达到加快ANDROID启动的目的,这种方式适用于所有的基于ARM平台的说明书CN104102506A3/5页5ANDROID系统。0021B、采用“冷启动”方式实现的加速本发明适用的加速方式是基于“冷启动的”,相比其他基于电源管理技术的“热启动”方式,可以让用户真正意义上的关机,这样可以更好的节约能源。同时也满足了用户对快速启动ANDROID系统的需求。0022C、采用BLCR断点重启技术实现的加速采用BLCR技术实现的加速方法,弥补了传统优化方法(对ANDROID系统预加载类及预加。
16、载资源进行定制和裁剪)对ANDROID的后续性能产生不良影响的缺陷。本发明采用的方法对ANDROID启动后的后续性能没有影响。0023D、ANDROID启动加速的高效性和可靠性本发明的BLCR技术对ANDROID的启动加速,可以将ANDROID的启动时间缩短至少13秒,对ANDROID的启动速度提高了接近3040。而且该项技术对ANDROID启动后的后续性能没有影响,是一项高效而且可靠的加速方法。0024本发明通过BLCR技术对基于ARM平台的ANDROID的启动过程进行加速,通过移植BLCR技术模块到ARM平台,并通过BOOTCHART工具对ANDROID的启动瓶颈进行度量,然后采用BLCR。
17、技术对ANDROID的启动过程的瓶颈进行优化,其中通过添加ANDROID的BIONIC库的线程库API来支持BLCR技术的动态链接库模块的底层内核调用。然后在ZYGOTE进程预加载类及预加载资源完成之后对ZYGOTE进程进行断点设置,保存ZYGOTE进程到一个镜像文件中,下次启动的时候,直接从镜像文件中启动ZYGOTE进程,从而达到加速ANDROID启动过程的目的。这种方式对ANDROID启动后的后续性能没有影响,弥补了传统加速方法(裁剪模块或定制ANDROID服务的方式)对后续性能产生影响的缺陷。而且适用于所有基于ARM平台的ANDROID系统,采用“冷启动”的方式,节约了设备的能源,也满足。
18、了ANDROID用户对真正意义上的关机服务的需求。附图说明0025图1为ANDROID启动加速总体架构逻辑示意图;图2为BLCR设置断点保存ZYGOTE进程流程示意图;图3为BLCR设置断点恢复ZYGOTE进程流程示意图;图4为ANDROID加速后的启动流程示意图。具体实施方式0026下面结合附图,对本发明的具体实施做进一步的详细描述,但本发明的实施和保护不限于此。0027图1展示了ANDROID启动加速的总体架构,该图主要包括1实现ANDROID启动加速对BLCR动态可加载内核模块改动。00282对BLCR基于ANDROID平台的动态链接库的改动。00293支持BLCR技术的BIONIC线程。
19、库函数接口的添加。00304ANDROID启动执行流程的改动。0031具体如下说明书CN104102506A4/5页6图中,BLCR技术可动态加载内核模块,主要将BLCR技术的动态加载内核模块移植到基于ARM平台下,BLCR动态加载模块,是BLCR内核级单机检查点技术的核心,主要通过进入内核态完成对ZYGOTE进程上下文信息、进程地址空间信息的保存。0032BLCR用户态的底层调用接口,主要对为支持ANDROID平台进行相关的修改,BLCR的动态链接库是链接ANDROID启动加速框架层与ANDROID内核层的桥梁,动态链接库通过调用内核层的BLCR动态内核模块实现进程的动态保存。0033支持B。
20、LCR断点重启技术,对ZYGOTE进程执行过程进行了相应的改动,主要是在比较耗时的预加载类与预加载资源完成之后设置断点,在断点处保存进程的上下文信息、地址空间信息、相关进程的寄存器信息。0034支持BLCR断点重启技术,对INIT进程的执行流程进行的修改,主要有动态加载BLCR技术的内核模块,根据镜像文件是否存在来决定是从镜像文件启动ZYGOTE进程,从镜像文件启动ZYGOTE进程可以跳过耗时的预加载类与预加载资源的过程,从而达到ANDROID启动加速的目的。0035附图2展示了使用BLCR技术对ANDROID进行加速时,对ZYGOTE进程设置断点,将ZYGOTE进程保存到镜像文件中的过程,进。
21、程的镜像文件是下次启动时直接从文件恢复进程后从断点处往下执行的基础。其具体执行过程如下步骤21、将ZYGOTE进程进行阻塞,开始执行进程状态信息的保存;步骤22、保存ZYGOTE进程地址空间信息,主要包括进程的数据段、堆栈段信息,进程的代码段不需要保存,可以通过保存进程的可执行二进制文件路径;步骤23、保存ZYGOTE进程进行上下文切换的CPU信息,主要包括PC程序计数器、PSW寄存器的内容等等;步骤24、保存ZYGOTE进程的打开文件描述符,以便下次从镜像文件中启动后可以恢复到保存时的状态。0036步骤25、保存ZYGOTE进程的信号状态和信号处理函数,以便下次进程可以正常捕获信号并进行相应。
22、的处理。0037步骤26、完成将进程保存到镜像文件后,启动ZYGOTE进程让其继续往下执行,启动ANDROID系统。0038附图3展示了使用BLCR技术对ANDROID进行加速时,从ZYGOTE进程镜像文件中恢复ZYGOTE进程后,从保存的断点处开始继续往下执行的过程,这也是ANDROID启动加速的关键,跳过了耗时的ZYGOTE预加载类和预加载资源的过程。具体如下步骤31、阻塞ZYGOTE进程的运行,直接从镜像文件中加载ZYGOTE进程,进程的代码段通过保存的进程可执行文件路径进行恢复;步骤32、将镜像文件中通过断点保存的ZYGOTE进程地址空间信息进行恢复,主要包括进程的数据段和堆栈段;步骤。
23、33、将镜像文件中保存的ZYGOTE进程的上下文切换信息进程恢复,主要有PC程序计数器、PSW状态寄存器;步骤34、根据镜像文件恢复ZYGOTE进程的打开文件描述符;步骤35、根据镜像文件恢复ZYGOTE进程的信号状态和信号处理函数;步骤36、启动ZYGOTE进程,然后从断点处继续往下执行,这样便可以跳过耗时的预加说明书CN104102506A5/5页7载类与预加载资源的过程,实现ANDROID的启动加速;附图4展示了采用BLCR技术对ANDROID启动加速的完整启动过程,下面将详细描述ANDROID系统启动时使用该发明方法的启动过程,具体如下步骤41、ANDROID启动开机,包括了BOOTL。
24、OADER、ANDROID底层LINUX内核的启动。0039步骤42、KERNEL启动完成之后,开始启动INIT进程,INIT进程通过读取INITRC完成进入ANDROID系统用户空间的初始化工作,包括文件系统的创建、ANDROID系统服务的创建等等。0040步骤43、如果步骤42成功完成,接下来就是通过INSMOD的方式执行BLCR动态内核模块的加载,为后续BLCR技术加速ANDROID启动建立基础。0041步骤44、判断是否存在ZYGOTE进程的镜像文件来决定是否启动执行流程,如果存在则从镜像文件中创建ZYGOTE进程,从断点处开始往下执行,如果不存在,则执行正常的ANDROID启动流程。。
25、0042步骤45、如果ZYGOTE进程镜像文件存在,从镜像文件中启动ANDROID系统,跳过耗时的预加载类和预加载资源的过程,从BLCR在ZYGOTE进程中设置的断点处继续往下执行,完成ANDROID的启动流程。0043步骤46、如果镜像文件不存在,则执行ANDROID的正常启动流程,执行到ZYGOTE进程的BLCR断点处时,将此时的ZYGOTE进程保存到镜像文件中,主要包括进程的地址空间信息和进程的上下文信息等等。0044步骤47、通过SYSTEMSERVER进程完成ANDROID系统除在INIT进程启动的所有其他服务的启动。0045步骤48、ANDROID启动完成,进入系统主界面。0046。
26、本发明对ANDROID启动速度进行深入的研究,采用BLCRBERKELEYLABCHECKPOINT/RESTART技术,对ANDROID启动过程进行加速,通过采用BLCR技术对ANDROID启动过程比较耗时的ZYGOTE进程预加载类和预加载资源过程进程断点设置,然后在进程启动到执行断点时保存进程的当前状态和信息到一个镜像文件中,下次启动的时候直接从镜像文件中启动该进程,从而跳过了耗时的预加载类和预加载资源过程,达到开机启动加速的目的。通过本发明的BLCR技术实现的ANDROID加速,可以将ANDROID的启动时间缩短至少13秒,对ANDROID的启动速度提高了接近3040,而且这种方式对ANDROID的后续性能没有影响,是一种高效而且可靠的加速方法,满足了对ANDROID系统开机快速启动的需求。说明书CN104102506A1/4页8图1说明书附图CN104102506A2/4页9图2说明书附图CN104102506A3/4页10图3说明书附图CN104102506A104/4页11图4说明书附图CN104102506A11。