CN104216776A - 一种基于blcr技术的安卓操作***快速启动方法 - Google Patents
一种基于blcr技术的安卓操作***快速启动方法 Download PDFInfo
- Publication number
- CN104216776A CN104216776A CN201410420148.0A CN201410420148A CN104216776A CN 104216776 A CN104216776 A CN 104216776A CN 201410420148 A CN201410420148 A CN 201410420148A CN 104216776 A CN104216776 A CN 104216776A
- Authority
- CN
- China
- Prior art keywords
- zygote
- checkpoint
- breakpoint
- restart
- blcr
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Landscapes
- Retry When Errors Occur (AREA)
- Stored Programmes (AREA)
Abstract
本发明公开了一种基于BLCR技术的Andriod操作***快速启动方法,它包括以下步骤:S1:镜像生成:在进程启动的任意执行点上,对zygote上下进程做一次checkpoint断点设置,将断点进程的地址空间及上下文信息保存到一个快照文件,形成镜像文件;S2:快速启动恢复:在重启时,检查是否存在checkpoint的快照文件,如果存在则直接根据快照文件中的信息来恢复重启之前的状态,如果不存在,则通过checkpoint设置的断点保存当前的进程的信息。本发明通过Zygote进程优化、镜像生成和快速启动恢复,使Andriod***开启时,跳过Zygote进程的设置断点前执行的步骤,减少了预加载类和资源的时间消耗,提高Android***的启动速度。
Description
技术领域
本发明涉及一种安卓操作***快速启动技术,特别是涉及一种基于BLCR技术的安卓操作***快速启动方法。
背景技术
随着Android操作***的不断发展和完善,它正被应用于移动平板设备和智能家居***、车载***、数字电视、医疗和娱乐等消费电子领域。Android操作***采用基于Linux内核的软件叠层式架构,支持多种硬件平台,提供丰富的功能。
当前市场上的Android设备开机时间长,平均开机时间在35秒以上,某些智能设备的开机时间长达一分钟多,甚至超过两分钟。
Android启动过程分为Linux内核载入,文件***挂接,Zygote进程启动和软件包扫描几个主要过程。其中耗时较长的发生在Zygote的类预加载和软件包扫描过程两处,只要减少这两处的时间,启动速度就会发生明显的改变。
设备启动时间对于用户体验来说非常重要,直接关系到用户对电子产品的第一印象,所以提高Android***设备的开机启动速度具有非常重要的意义。
发明内容
本发明的目的在于克服现有技术的不足,提供一种基于BLCR技术的安卓操作***快速启动方法,克服基于Android***的智能设备开机启动时间长的困难。
本发明的目的是通过以下技术方案来实现的:一种基于BLCR技术的Andriod操作***快速启动方法,它包括以下步骤:
S1:镜像生成:在进程启动的任意执行点上,对zygote上下进程做一次checkpoint断点设置,将断点进程的地址空间及上下文信息保存到一个快照文件,形成镜像文件;
S2:快速启动恢复:在重启时,检查***是否存在checkpoint的镜像文件,如果存在则直接根据镜像文件中的信息来恢复重启之前的状态,如果不存在,则通过checkpoint设置的断点保存当前的进程的信息。
所述的镜像生成包括以下子步骤:
S11:请求断点设置:Android操作***启动Zygote进程时,调用checkpoint发出断点设置请求,通过内核kernel向将要被断点设置的进程发送一个通知信号,通知将要被断点设置的进程对自己做Checkpoint,通过输入输出控制IOCTL向内核发出断点保存请求;
S12:正常运行的进程收到中断保存信号,执行回调函数,同步保存进程与线程关系,保存进程数据;
S13:传递参数CR_OP_CHKPT_DONE通过IOCTL通知内核等待保存请求处理,RESTART进程同步处理;
S14:传递参数CR_OP_CHKPT_REAP通过IOCTL通知内核完成断点保存,关闭节点,保存工作结束,设置结束标志。
所述的快速启动恢复包括以下子步骤:
S21:Android操作***启动发送断点恢复命令,cr_restart读入文件参数,初始化及注册处理函数;
S22:参数CR_OP_RETST_REQ通过IOCTL发送restart请求,调用alloc_rstrt_req分配并初始化restart请求变量;
S23:参数CR_OP_RETST_PROCS通过IOCTL确定要恢复的进程,孕育Zygote进程,开始Restart进程;
S24:Restart进程恢复进程的空间地址和上下文信息,同步锁定内存进程表,根据进程PID恢复进程间关系;
S25:参数CR_OP_RETST_DONE通过IOCTL检查内核参数是否完成,等待子进程结束退出,从内核态返回用户态;
S26:参数CR_OP_RETST_REAP进行Restart请求的清除,用释放请求release_retst_req清除Restart请求,并且释放占用空间。
它还包括一个Zygote进程优化步骤,Zygote进程优化包括以下子步骤:
S31:初始化Zygote进程,创建BLCR设置断点对象,添加checkpoint调用,保存Zygote进程运行到该执行点的信息到镜像文件;
S32:优化ZygoteInit.java中的main函数,并对init.rc文件中的zygote进程进行修改。
本发明的有益效果是:通过Zygote进程优化、镜像生成和快速启动恢复,使Andriod***开启时,跳过Zygote进程的设置断点前执行的步骤,减少了预加载类和资源的时间消耗,提高Android***的启动速度。
附图说明
图1为本发明的快速启动方法流程图;
图2为本发明的Zygote进程优化流程图;
图3为本发明的镜像生成流程示意图图;
图4为本发明的快速启动恢复流程示意图图。
具体实施方式
下面结合附图进一步详细描述本发明的技术方案,但本发明的保护范围不局限于以下所述。
BLCR(BerkeleyLab Checkpoint/Restart)是应用于linux下的check point/restore软件,它可以将正在运行于linux上的应用当前的运行点保存成为一个文件并且在以后的时间可以按照需要将该程序直接恢复到保存时候的状态。
BLCR主要包含三层架构,即用户层接口、libcr函数库层和内核模块层,内核模块主要包含文件处理模块、信号处理模块和/proc内核配置模块,通过内核模块完成快照文件的保持和恢复。
BLCR的用户态工具(cr_checkpoint和cr_restart)通过proc file跟内核kernel进行交互,cr_module在初始化的时候创建了proc entry /proc/checkpoint/ctrl,并定义了该entry的open、release、ioctl和poll方法,open和release主要做一些和CR相关的初始化工作和资源释放工作,用户态工具与kernel的交互主要通过ioctl来完成。
如图1所示,一种基于BLCR技术的Andriod操作***快速启动方法,它包括以下步骤:
S1:镜像生成:在进程启动的任意执行点上,对zygote上下进程做一次checkpoint断点设置,将断点进程的地址空间及上下文信息保存到一个快照文件,形成镜像文件;
首先设置断点的进程进行阻塞,然后主要通过BLCR的内核模块来完成其对设置断点进程的地址空间信息、上下文等信息的保存,保存到指定的路径文件总,然后再启动用户。其中,不需要保存程序的二进制可执行文件;
S2:快速启动恢复:在重启时,检查是否存在checkpoint的快照文件,如果存在则直接根据快照文件中的信息来恢复重启之前的状态,如果不存在,则通过checkpoint设置的断点保存当前的进程的信息;
基本上就是镜像生成的逆过程,其工作过程是直接通过读取进程文件然后创建新进程,根据进程文件恢复进程,并从上次checkpoint的点继续往下开始运行,其中,进程文件包含进程运行到断点是保存的地址空间,上下文切换等信息。
本发明方法允许我们将一个或多个进程文件信息保存在一个快照文件中,下次启动的时候就直接通过加载这个文件重启,其主要有以下方面的运用:
1、调度:checkpoint可以让一个程序在任意的执行点安全的停止,使其他的程序可以运行在其他地方,执行点之前、之后的停止程序可以再次运行;
2、进程迁移:如果一个计算机执行点将要崩溃或者其他原因(维修或者硬件更新等)需要关闭,checkpoint/restart允许将其上的所有进程转移到其他的计算机节点上运行,或者等到该计算机节点再次可用时运行;
3、故障恢复:一个长期运行的程序可以通过周期性的checkpoint,如果其因为硬件、***软件或者其他不确定的原因崩溃,那么其可以从它开始运行以来最近的执行点重启。
如图2所示,它还包括一个Zygote进程优化步骤,Zygote进程优化步骤为镜像生成和快速启动恢复进行的前提,Zygote进程优化包括以下子步骤:
1、初始化ZygoteInit源码修改,需要用到BLCR技术移植的模块,对ZygoteInit.java文件修改,创建BLCR设置断点对象,添加checkpoint调用,保存Zygote进程运行到该点的信息到镜像文件;
2、优化ZygoteInit.java,对init.rc文件进行相应修改,以便下次启动Android***时,不需要再走和没有优化时一样的启动流程,而是通过判断checkpoint保存的文件是否存在来决定是否从镜像文件中启动Zygote;
优化ZygoteInit.java中的main函数,如下部分代码:
public static void main(String argv[]) {
CheckPoint cp = new CheckPoint();
try {
// Start profiling the zygote initialization.
SamplingProfilerIntegration.start();
EventLog.writeEvent(LOG_BOOT_PROGRESS_PRELOAD_START,
SystemClock.uptimeMillis());
preload();
EventLog.writeEvent(LOG_BOOT_PROGRESS_PRELOAD_END,
SystemClock.uptimeMillis());
// Finish profiling the zygote initialization.
SamplingProfilerIntegration.writeZygoteSnapshot();
// Do an initial gc to clean up after startup
gc();
cp.checkPoint("/data/blcr.zygote");
registerZygoteSocket();
// If requested, start system server directly from Zygote;
对init.rc文件zygote进程进行相应更改,如下代码:
service zygote /system/bin/sh /zygote.sh -Xzygote /system/bin --zygote --start-system-server;
3、BLCR启动脚本,判断启动流程,通过cr_restart从快照文件中恢复进程。
如图3所示,所述的镜像生成包括以下子步骤:
S11:请求断点设置:Android操作***启动Zygote阶段,调用checkpoint发出请求,通过在内核kernel中向将要被断点设置的进程发送一个信号,来通知将要被断点设置的进程对自己做Checkpoint,BLCR使用signum=64的实时信号,CR_OP_CHKPT_REQ为参数,通过输入输出控制IOCTL向内核发出断点保存请求;
S12:正常运行的进程收到中断保存信号,执行回调函数,同步保存进程与线程关系,保存进程数据;
S13:CR_OP_CHKPT_DONE传递参数IOCTL通知内核等待保存请求处理,RESTART进程同步处理;
S14:CR_OP_CHKPT_REAP传递参数IOCTL通知内核完成断点保存,关闭节点,保存工作结束,设置结束标志。
如图4所示,所述的快速启动恢复包括以下子步骤:
S21:Android操作***启动发送断点恢复命令,cr_restart读入文件参数,初始化及注册处理函数;
S22:CR_OP_RETST_REQ通过IOCTL发送restart请求,调用alloc_rstrt_req分配并初始化restart请求变量;
S23:CR_OP_RETST_PROCS通过IOCTL确定要恢复的进程,孕育Zygote进程,Restart;
S24:Restart进程恢复进程私有数据和上下文信息,同步锁定内存进程表,根据进程PID恢复进程间关系;
S25:CR_OP_RETST_DONE通过IOCTL检查内核参数是否完成,等待子进程结束退出,从内核态返回用户态;
S26:CR_OP_RETST_REAP进行Restart请求的清除,用release_retst_req清除Restart请求并且释放占用空间。
快速启动恢复通过传入文件参数读取镜像文件创建的Zygote进程,然后恢复Zygote进程的上下信息、私有数据和进程间的PID关系。通过Zygote进程优化、镜像生成和快速启动恢复,使Andriod***开启时,跳过Zygote进程的设置断点前执行的步骤,减少了预加载类和资源的时间消耗,提高Android***的启动速度。
Claims (4)
1.一种基于BLCR技术的Andriod操作***快速启动方法,其特征在于:它包括以下步骤:
S1:镜像生成:在进程启动的任意执行点上,对zygote上下进程做一次checkpoint断点设置,将断点进程的地址空间及上下文信息保存到一个快照文件,形成镜像文件;
S2:快速启动恢复:在重启时,检查***是否存在checkpoint的镜像文件,如果存在则直接根据镜像文件中的信息来恢复重启之前的状态,如果不存在,则通过checkpoint设置的断点保存当前的进程的信息。
2.根据权利要求1所述的一种基于BLCR技术的Andriod操作***快速启动方法,其特征在于:所述的镜像生成包括以下子步骤:
S11:请求断点设置:Android操作***启动Zygote进程时,调用checkpoint发出断点设置请求,通过内核kernel向将要被断点设置的进程发送一个通知信号,通知将要被断点设置的进程对自己做Checkpoint,通过输入输出控制IOCTL向内核发出断点保存请求;
S12:正常运行的进程收到中断保存信号,执行回调函数,同步保存进程与线程关系,保存进程数据;
S13:传递参数CR_OP_CHKPT_DONE通过IOCTL通知内核等待保存请求处理,RESTART进程同步处理;
S14:传递参数CR_OP_CHKPT_REAP通过IOCTL通知内核完成断点保存,关闭节点,保存工作结束,设置结束标志。
3.根据权利要求1所述的一种基于BLCR技术的Andriod操作***快速启动方法,其特征在于:所述的快速启动恢复包括以下子步骤:
S21:Android操作***启动发送断点恢复命令,cr_restart读入文件参数,初始化及注册处理函数;
S22:参数CR_OP_RETST_REQ通过IOCTL发送restart请求,调用alloc_rstrt_req分配并初始化restart请求变量;
S23:参数CR_OP_RETST_PROCS通过IOCTL确定要恢复的进程,孕育Zygote进程,开始Restart进程;
S24:Restart进程恢复进程的空间地址和上下文信息,同步锁定内存进程表,根据进程PID恢复进程间关系;
S25:参数CR_OP_RETST_DONE通过IOCTL检查内核参数是否完成,等待子进程结束退出,从内核态返回用户态;
S26:参数CR_OP_RETST_REAP进行Restart请求的清除,用释放请求release_retst_req清除Restart请求,并且释放占用空间。
4.根据权利要求1所述的一种基于BLCR技术的Andriod操作***快速启动方法,其特征在于:它还包括一个Zygote进程优化步骤,Zygote进程优化包括以下子步骤:
S31:初始化Zygote进程,创建BLCR设置断点对象,添加checkpoint调用,保存Zygote进程运行到该执行点的信息到镜像文件;
S32:优化ZygoteInit.java中的main函数,并对init.rc文件中的zygote进程进行修改。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410420148.0A CN104216776A (zh) | 2014-08-25 | 2014-08-25 | 一种基于blcr技术的安卓操作***快速启动方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410420148.0A CN104216776A (zh) | 2014-08-25 | 2014-08-25 | 一种基于blcr技术的安卓操作***快速启动方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN104216776A true CN104216776A (zh) | 2014-12-17 |
Family
ID=52098297
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410420148.0A Pending CN104216776A (zh) | 2014-08-25 | 2014-08-25 | 一种基于blcr技术的安卓操作***快速启动方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104216776A (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107203386A (zh) * | 2017-06-09 | 2017-09-26 | 山东超越数控电子有限公司 | 一种基于ARM平台的Android***加速启动方法 |
WO2018103045A1 (zh) * | 2016-12-08 | 2018-06-14 | 华为技术有限公司 | 测试点的创建方法,装置和*** |
CN108829460A (zh) * | 2018-06-12 | 2018-11-16 | 深圳市众鸿科技股份有限公司 | 车载终端快速启动的方法、装置及车载终端 |
CN109460258A (zh) * | 2017-08-28 | 2019-03-12 | 西安中兴新软件有限责任公司 | 一种启动电子设备的方法及装置 |
CN110716758A (zh) * | 2018-06-26 | 2020-01-21 | 阿里巴巴集团控股有限公司 | 程序运行方法、装置、设备以及存储介质 |
CN111930429A (zh) * | 2020-07-07 | 2020-11-13 | 上海商米科技集团股份有限公司 | 一种Android操作***快速启动的方法及电子设备 |
WO2023168875A1 (zh) * | 2022-03-10 | 2023-09-14 | 北京百度网讯科技有限公司 | 启动模型服务的方法、装置、设备、介质及产品 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102012832A (zh) * | 2010-12-14 | 2011-04-13 | Tcl集团股份有限公司 | 一种加速Android***启动的方法及装置 |
CN102215432A (zh) * | 2011-06-02 | 2011-10-12 | Tcl集团股份有限公司 | 一种电视机***、电视机***启动方法及装置 |
-
2014
- 2014-08-25 CN CN201410420148.0A patent/CN104216776A/zh active Pending
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102012832A (zh) * | 2010-12-14 | 2011-04-13 | Tcl集团股份有限公司 | 一种加速Android***启动的方法及装置 |
CN102215432A (zh) * | 2011-06-02 | 2011-10-12 | Tcl集团股份有限公司 | 一种电视机***、电视机***启动方法及装置 |
Non-Patent Citations (2)
Title |
---|
帅文: "利用BLCR加快Android的启动过程", 《HTTP://WWW.LINUXIDC.COM/LINUX/2011-02/32330.HTM》 * |
缪汉威: "Android启动优化研究及应用", 《中国优秀硕士学位论文全文数据库 信息科技辑》 * |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2018103045A1 (zh) * | 2016-12-08 | 2018-06-14 | 华为技术有限公司 | 测试点的创建方法,装置和*** |
CN108604205A (zh) * | 2016-12-08 | 2018-09-28 | 华为技术有限公司 | 测试点的创建方法,装置和*** |
CN108604205B (zh) * | 2016-12-08 | 2021-02-12 | 华为技术有限公司 | 测试点的创建方法,装置和*** |
CN107203386A (zh) * | 2017-06-09 | 2017-09-26 | 山东超越数控电子有限公司 | 一种基于ARM平台的Android***加速启动方法 |
CN109460258A (zh) * | 2017-08-28 | 2019-03-12 | 西安中兴新软件有限责任公司 | 一种启动电子设备的方法及装置 |
CN109460258B (zh) * | 2017-08-28 | 2024-02-13 | 西安中兴新软件有限责任公司 | 一种启动电子设备的方法及装置 |
CN108829460A (zh) * | 2018-06-12 | 2018-11-16 | 深圳市众鸿科技股份有限公司 | 车载终端快速启动的方法、装置及车载终端 |
CN110716758A (zh) * | 2018-06-26 | 2020-01-21 | 阿里巴巴集团控股有限公司 | 程序运行方法、装置、设备以及存储介质 |
CN111930429A (zh) * | 2020-07-07 | 2020-11-13 | 上海商米科技集团股份有限公司 | 一种Android操作***快速启动的方法及电子设备 |
WO2023168875A1 (zh) * | 2022-03-10 | 2023-09-14 | 北京百度网讯科技有限公司 | 启动模型服务的方法、装置、设备、介质及产品 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104216776A (zh) | 一种基于blcr技术的安卓操作***快速启动方法 | |
US20220179682A1 (en) | Task processing method, apparatus, and system based on distributed system | |
CN104102506B (zh) | 一种基于ARM平台的Android启动加速方法 | |
CN107636612B (zh) | 应用迁移装置、方法与存储介质 | |
CN103885847A (zh) | 一种基于嵌入式***的喂狗方法及装置 | |
CN102567047B (zh) | 快速计算机启动 | |
EP2864873B1 (en) | Auto-update while running a client software application with update handshake between versions and runtime validation of the successor version | |
CN103152419A (zh) | 一种云计算平台的高可用集群管理方法 | |
CN110401700B (zh) | 模型加载方法及***、控制节点及执行节点 | |
CN103796066A (zh) | 一种智能电视***及其关机和开机方法 | |
CN106201690A (zh) | 应用运行控制方法及装置 | |
US20110197193A1 (en) | Device and method for controlling communication between bios and bmc | |
CN107291510A (zh) | 一种Linux车载信息***快速启动方法 | |
CN106569871A (zh) | 升级处理方法及装置 | |
CN109976886B (zh) | 内核远程切换方法及装置 | |
CN108268302A (zh) | 实现设备启动的方法和装置 | |
CN116560802B (zh) | 一种基于虚拟机负载的虚拟机自适应热迁移方法及*** | |
WO2015184902A1 (zh) | 一种智能分屏的并发处理方法及相应的智能终端 | |
CN109117277B (zh) | 异步环境中模拟同步阻塞的方法及装置、存储介质、服务器、终端 | |
JPH117382A (ja) | ファームウェアのバージョンアップ方法 | |
CN108196982A (zh) | 一种linux***自动重启服务的配置方法 | |
CN112379973B (zh) | 重载方法和装置 | |
CN114217905A (zh) | 虚拟机高可用恢复处理方法及*** | |
CN110609765B (zh) | 服务器自动进行随机重启的方法、***、设备及存储介质 | |
TWI554876B (zh) | 節點置換處理方法與使用其之伺服器系統 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20141217 |