利用blcr加快android的启动过程,一种基于ARM平台的Android系统加速启动方法与流程...

4435417ce1a5c919735a246273ff050d.gif

本发明公开一种Android系统加速启动方法,涉及移动终端操作系统领域,具体地说是一种基于ARM平台的Android系统加速启动方法。

背景技术:

近年来,由于Android设备的大量普及,相对于经常开关机的设备,如平板电脑,其开启速度直接影响到用户体验,也是判断产品的优劣的一个重要标准。

而目前,对于加速开机速度常用的方式有:

一是采用电源管理技术,使用休眠或睡眠的方式对Android系统进行非真正意义上的关机,当用户需要使用设备时再唤醒设备。但是这不是真正意义上的关机,很难满足用户的需求。另一种是将Android启动过程的Zygote预加载类和资源进行了裁剪,这种方式因打开应用程序的次数远远多于用户开关机的次数而使Android启动后的后续性能不良。

因此在Android系统中,上述优化方法存在一定的局限性,有些甚至带来Android启动后的后续性能问题,所以都不能满足Android启动加速需求。

本发明提供了一种基于ARM平台的Android系统加速启动方法,采用BLCR(Berkeley Lab Checkpoint/Restart)技术,对Android启动过程中比较耗时的Zygote进程预加载类和预加载资源过程进行断点设置,然后在进程启动到执行断点时,保存进程的当前状态和信息到镜像文件中,下次启动的时候直接从镜像文件中启动该进程,从而跳过了耗时的预加载类和预加载资源过程,实现的Android加速,而且对Android的后续性能没有影响。

技术实现要素:

本发明针对现有技术存在的不足和问题,提供一种基于ARM平台的Android系统加速启动方法,实现的Android加速,而且对Android的后续性能没有影响。

本发明提出的具体方案是:

一种基于ARM平台的Android系统加速启动方法,基于ARM平台,利用BLCR技术对BLCR内核进行加载并进行修改以适应ARM平台,同时对BLCR的动态链接库进行修改,然后对Android系统启动过程中Zygote进程预加载类和预加载资源过程进行断点设置,并在进程启动执行到断点时,保存进程的当前状态和信息到镜像文件中,下次Android系统启动直接从镜像文件中启动该进程,跳过Zygote预加载类和预加载资源过程。

修改ARM平台的Linux内核镜像,以支持BLCR内核的加载,修改BLCR内核文件以支持ARM平台,通过交叉编译,生成BLCR内核模块。

所述修改Android的bionic的线程库文件,添加BLCR动态链接库所需的线程库函数接口,修改Android的启动脚本init.rc,在系统进入用户空间后添加BLCR内核模块的功能,供BLCR动态链接库调用。

编写BLCR动态链接库的Android.mk文件,以支持Android系统,并将BLCR的函数接口库移植到ARM平台。

编写Android启动的init.rc调用脚本,用于判断镜像文件是否存在。

在ZygoteInit.java文件中通过JNI调用BLCR内核模块,在预加载类和预加载资源过程进行时设置断点,将Zygote进程启动执行到断点时,保存进程的当前状态和信息到镜像文件中。

Android系统加速启动具体步骤为:

1)Android启动开机;

2)kernel启动完成后,开始启动Init进程,init进程通过读取init.rc完成进入Android系统用户空间的初始化工作;

3)执行BLCR内核模块的加载;

4)判断是否存在Zygote进程的镜像文件来决定是否启动执行流程,如果存在则从镜像文件中创建Zygote进程,从断点处开始往下执行,如果不存在,则执行正常Android启动流程;

5)通过调研Systemserver进程完成Android系统在init进程启动所有其他服务的启动;

6)Android系统启动完成,进入主界面。

本发明的有益之处是:

本发明提供了一种基于ARM平台的Android系统加速启动方法,采用BLCR(Berkeley Lab Checkpoint/Restart)技术,对Android启动过程中比较耗时的Zygote进程预加载类和预加载资源过程进行断点设置,然后在进程启动到执行断点时,保存进程的当前状态和信息到镜像文件中,下次启动的时候直接从镜像文件中启动该进程,从而跳过了耗时的预加载类和预加载资源过程;

与现有技术相比,本发明支持所有ARM平台的Android系统的应用;Android启动时间缩短至少13秒,对Android的目前启动速度提高了接近30%-40%,而且采用“冷启动”方式实现的加速,节约了设备的能源,也满足了Android用户对真正意义上的关机服务的需求。实现的Android加速,对Android的后续性能没有影响。

附图说明

图1是本发明方法应用框架示意图;

图2是应用本发明方法Android系统加速启动操作流程示意图。

具体实施方式

本发明提供一种基于ARM平台的Android系统加速启动方法,基于ARM平台,利用BLCR技术对BLCR内核进行加载并进行修改以适应ARM平台,同时对BLCR的动态链接库进行修改,然后对Android系统启动过程中Zygote进程预加载类和预加载资源过程进行断点设置,并在进程启动执行到断点时,保存进程的当前状态和信息到镜像文件中,下次Android系统启动直接从镜像文件中启动该进程,跳过Zygote预加载类和预加载资源过程。

结合附图,对本发明做一步说明。

本发明方法,基于ARM平台,利用BLCR技术对BLCR内核进行加载并进行修改以适应ARM平台,其中修改ARM平台的Linux内核镜像,以支持BLCR内核的加载,修改BLCR内核文件以支持ARM平台,通过交叉编译,生成BLCR内核模块;

同时对BLCR的动态链接库进行修改:编写BLCR动态链接库的Android.mk文件,以支持Android系统,并将BLCR的函数接口库移植到ARM平台,修改Android的bionic的线程库文件,添加BLCR动态链接库所需的线程库函数接口,修改Android的启动脚本init.rc,在系统进入用户空间后添加BLCR内核模块的功能,供BLCR动态链接库调用;

编写Android系统下的JNI接口函数,用于调用BLCR动态链接库;在ZygoteInit.java文件中通过JNI调用BLCR内核模块,在预加载类和预加载资源过程进行时设置断点,将Zygote进程启动执行到断点时,保存进程的当前状态和信息到镜像文件中,下次启动时通过恢复进程的镜像文件,从断点处往下执行程序,跳过了耗时的预加载类和预加载资源的过程,从而提高了Android的启动速度。

上述提及的镜像文件,可以通过编写Android启动的init.rc调用脚本,判断镜像文件是否存在。如果存在则直接从镜像文件中启动,如果不存在,则通过调用BLCR内核模块生成Zygote进程的镜像文件。

利用上述方法,对Android系统启动加速进行加速,具体步骤为:

1)Android启动开机,包括bootloader、Android底层Linux内核的启动;

2)kernel启动完成之后,开始启动Init进程,init进程通过读取init.rc完成进入Android系统用户空间的初始化工作;

3)如果步骤2成功完成,接下来就是通过insmod的方式执行BLCR动态内核模块的加载,为后续BLCR技术加速Android启动建立基础;

4)判断是否存在Zygote进程的镜像文件来决定是否启动执行流程,如果存在则从镜像文件中创建Zygote进程,从断点处开始往下执行,如果不存在,则执行正常Android启动流程;

5)通过调研Systemserver进程完成Android系统在init进程启动所有其他服务的启动;

6)Android系统启动完成,进入主界面。

利用本发明方法对Android系统启动后的后续性能没有影响,弥补了传统加速方法如裁剪或定制Android服务的方式对后续性能产生影响的缺陷。同时,采用了“冷启动”的方式,节约了设备的能源,也满足了Android用户对真正意义上的关机服务的需求。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值