一种Android系统的重启方法转让专利

申请号 : CN201110312529.3

文献号 : CN102331947B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 张琛雨

申请人 : 中科创达软件股份有限公司

摘要 :

本发明提供的一种Android系统的重启方法,包括以下步骤:A、重启前,采集当前Android系统信息;B、使用kexec重新启动Android系统;C、根据所采集的Android系统信息,筛选出影响系统启动速度的程序;D、有选择地禁用或启用影响系统启动速度的程序。以实现快速重启Android系统。

权利要求 :

1.一种Android系统的重启方法,其特征在于,包括以下步骤:A、重启前,采集当前Android系统信息;

B、使用kexec重新启动Android系统;

C、根据所采集的Android系统信息,筛选出影响系统启动速度的程序;

D、有选择地禁用或启用影响系统启动速度的程序;

所述步骤A包括:

在指定时间内周期采集所述Android系统信息并将该信息保存下来;

所述Android系统信息包括当前各个程序占用CPU、内存以及I/O请求的情况;

所述步骤C包括:

C1、判断Android系统在重启之前每个程序占用的系统资源,包括:分别判断每个程序的 和 的大小:如果某一程序的 大于 阀值或大于 阀值或 大于 阀值,则将该程序标记为可能影响系统响应速度的程序;

C2、判断被标记为可能影响系统响应速度的程序的数量:如果该数量在第一范围内,则认定标记为可能影响系统响应速度的程序为影响系统响应速度的程序;如果该数量在第二范围内,则将这些被标记为可能影响系统响应速度的程序的 和分别带入方程 从中选

出方程解最大的给定数量的程序作为影响系统响应速度的程序;

其中, 和 (i=1,2,……n)分别是每个程序的平均CPU占用率、平均内存占用率和平均I/O请求率;λcpu、λmem和λiow分别为所述CPU占用率、内存占用率和I/O请求率的权重。

2.根据权利要求1所述的方法,其特征在于,步骤D所述有选择地禁用或启用影响系统启动速度的程序具体为:在Android系统重启时禁止启动所有影响系统启动速度的程序;或者,在Android系统重启时启动具有最小所述方程解的影响系统启动速度的程序。

3.根据权利要求1所述的方法,其特征在于,所述步骤C还包括:筛选并记录下除上述影响系统响应速度的程序之外的其他程序;

筛选并记录下在Android系统重启前最后运行的程序;

所述步骤D还包括:

启动除上述影响系统响应速度的程序之外的其他程序;

启动Android系统重启前最后运行的程序,而暂不启动除此之外的其他程序。

4.根据权利要求1所述的方法,其特征在于,在所述步骤C1之前还包括:根据所述Android系统信息判断 是否大于 阀值或 是否大于 阀值亦或 是否大于 阀值:如果上述任一不等式成立,则进入所述步骤C1;否则,退出所述步骤C并跳过所述步骤D完成重启过程,其中,分别是所有程序的平均CPU占用率、平均内存占用率和平均I/O请求率。

5.根据权利要求1所述的方法,其特征在于,所述 阀值为70%,所述阀值为80%,所述 阀值为50%;

所述 阀值为30%,所述 阀值为30%,所述 阀值为20%;

所述第一范围为大于等于1且不小于3,所述第二范围为大于3;

所述给定数量为3;

所述λcpu、λmem和λiow分别为1,0.6和0.3。

6.根据权利要求1所述的方法,其特征在于,在所述步骤A之前还包括:触发Android系统的重启操作。

说明书 :

一种Android系统的重启方法

技术领域

[0001] 本发明涉及一种Android系统的重启方法。

背景技术

[0002] Android(安卓)系统是由谷歌公司开发的一种基于Linux平台的开源操作系统,目前被广泛应用于手机等智能便携式数码设备中。Android系统中的引导过程有两个阶段:引导装载程序阶段和内核阶段。引导装载程序阶段主要包括硬件阶段、固件阶段、第一级引导装载程序和第二级引导装载程序。引导过程从硬件加电启动开始。一些初始化工作完成后,控制转到固件。固件在一些体系结构中也称为“BIOS”,它去检测系统上的各种设备,包括内存控制器、存储设备、总线桥和其他硬件。固件基于设置将控制移交给一个最小化的引导装载程序,即大家所知的主引导记录(master boot record),这个主引导记录可能在磁盘驱动器上,或者在可移动媒体上,或者在网络上。将控制移交给操作系统的实际工作由第二阶段引导装载程序(通常被简单地认为是“引导装载器(boot loader)”)执行。这个引导装载程序让用户可以选择要装载的内核,将内核和相关参数装载到内存,初始化内核,设置需要的环境变量,并最终“运行”内核。引导的下一个阶段是内核阶段,此时内核已经获得控制权。它设置需要的数据结构,检测当前在系统上的设备,装载需要的设备驱动程序,并初始化设备。引导过程的最后阶段包括用户级初始化。在这个阶段,内核检查文件系统的完整性,挂载文件系统,设置交换分区(或者交换文件),启动系统服务,设置系统终端,并完成所有其他设置。在系统重新启动时,引导装载阶段之前要先关闭先前正在运行的系统。这涉及到停止运行的进程,将高速缓冲存储器内容写回到磁盘,卸载文件系统,然后执行硬件的重启。
[0003] 然而,上述繁琐的重启过程对于以简单、快速实现用户体验见长的便携式智能数码设备来说耗时显然过长,增加了用户的等待时间。

发明内容

[0004] 有鉴于此,本发明的主要目的在于提供一种Android系统的重启方法,以实现快速重启Android系统。
[0005] 本发明提供的一种Android系统的重启方法,包括以下步骤:
[0006] A、重启前,采集当前Android系统信息;
[0007] B、使用kexec重新启动Android系统;
[0008] C、根据所采集的Android系统信息,筛选出影响系统启动速度的程序;
[0009] D、有选择地禁用或启用影响系统启动速度的程序。
[0010] 由上可以看出,本发明方法可以跳过整个引导装载程序阶段并直接跳转到希望引导的内核,而不再有硬件的重启,不再有固件操作,不再涉及引导装在程序,完全避开了引导过程中比较耗时的一环-固件阶段,且通过有选择地禁用或启用影响系统启动速度的程序,例如建议用户不要在系统重启的同时打开某些影响系统启动速度的程序,以避免再次造成系统响应速度缓慢,并进一步提高了Android系统的重启速度。
[0011] 在上述方法中,所述步骤A包括:
[0012] 在指定时间内周期采集所述Android系统信息并将该信息保存下来;
[0013] 所述Android系统信息包括当前各个程序占用CPU、内存以及I/O请求的情况。
[0014] 由上可以看出,通过采集所述Android系统信息为找出影响系统启动速度的程序提供了前提基础。
[0015] 在上述方法中,所述步骤C包括:
[0016] C1、判断Android系统在重启之前每个程序占用的系统资源,包括:分别判断每个程序的 和 的大小:如果某一程序的 大于 阀值或 大于 阀值或 大于 阀值,则将该程序标记为可能影响系
统响应速度的程序;
[0017] C2、判断被标记为可能影响系统响应速度的程序的数量:如果该数量在第一范围内,则认定标记为可能影响系统响应速度的程序为影响系统响应速度的程序;如果该数量在第二范围内,则将这些被标记为可能影响系统响应速度的程序的 和分别带入方程 从中选出
方程解最大的给定数量的程序作为影响系统响应速度的程序;
[0018] 其中, 分别是所有程序的平均CPU占用率、平均内存占用率和平均I/O请求率; 和 (i=1,2,......n)
分别是每个程序的平均CPU占用率、平均内存占用率和平均I/O请求率;λcpu、λmem和λiow分别为所述CPU占用率、内存占用率和I/O请求率的权重。
[0019] 由上可以看出,通过判断程序CPU占用率、内存占用率和I/O请求率可以客观、真实地反映出哪些程序影响系统的响应速度。
[0020] 在上述方法中,步骤D所述对于影响系统启动速度的程序的处理包括:
[0021] 在Android系统重启时禁止所有启动影响系统启动速度的程序;或者,[0022] 在Android系统重启时启动具有最小所述方程解的影响系统启动速度的程序。
[0023] 由上可以看出,在Android系统重启时通过禁止所有启动影响系统启动速度的程序可以获得最佳的系统启动速度;在Android系统重启时启动具有最小所述方程解的影响系统启动速度的程序可以在重启速度和程序使用便利性上获得折中的效果。
[0024] 在上述方法中,所述步骤C还包括:
[0025] 筛选并记录下除上述影响系统响应速度的程序之外的其他程序;
[0026] 筛选并记录下在Android系统重启前最后运行的程序;
[0027] 所述步骤D还包括:
[0028] 启动除上述影响系统响应速度的程序之外的其他程序;
[0029] 启动Android系统重启前最后所行的程序,而暂不启动除此之外的其他程序。
[0030] 由上可以看出,在重启Android系统时启动除上述不启动的程序外的、在重启前所记录的其他的所有程序,可使手机恢复到运行导致其性能变得响应迟钝的某程序之前的状态;在重启Android系统时启动重启前所运行的最后的程序,而暂不启动其他程序,可以使有较多的资源(CPU、内存资源)提供给该程序使用,并在用户关闭该程序时,启动所述其他的程序,使手机恢复到手机重启之前运行上述最后程序之前的状态。
[0031] 在上述方法中,在所述步骤C1之前还包括:
[0032] 根据所述Android系统信息判断 是否大于 阀值或是否大于 阀值亦或 是否大于 阀值:如果上述任一不等
式成立,则进入所述步骤C1;否则,退出所述步骤C并跳过所述步骤D完成重启过程;
[0033] 在上述方法中,所述 阀值为70%,所述 阀值为80%,所述阀值为50%;
[0034] 所述 阀值为30%,所述 阀值为30%,所述 阀值为20%;
[0035] 所述第一范围为大于等于1且不小于3,所述第二范围为大于3;
[0036] 所述给定数量为3;
[0037] 所述λcpu、λmem和λiow分别为1,0.6和0.3。
[0038] 在上述方法中,在所述步骤A之前还包括:
[0039] 触发Android系统的重启操作。

附图说明

[0040] 图1为本发明提供的一种Android系统的重启方法流程图。

具体实施方式

[0041] 下面结合附图,以应用在手机上的Android系统为例,详细介绍本发明提供的一种Android系统的重启方法。
[0042] 如图1所示,本发明提供的一种Android系统的重启方法包括以下三个主要阶段:重启Android系统前的准备阶段,重启Android系统阶段以及Android系统重启后的后续阶段。其中:
[0043] 重启Android系统前的准备阶段包括以下步骤:
[0044] 步骤100:触发Android系统的重启操作。
[0045] 由于在手机Android系统上运行的程序(进程)出现错误等原因致使Android系统运行缓慢。此时为了恢复对于手机的顺畅使用,需要重启安装于手机上的Android系统。在执行本步骤之前,用户一般可通过按动手机的电源键来激活包括关机、重启等选项的Android系统关机管理菜单,进而从中选择重启选项以触发重启操作。
[0046] 步骤200:采集当前Android系统信息。
[0047] 在本步骤中,通常在重新启动Android系统之前,需要连续采集3s内Android系统信息,即每隔50ms采集一次Android系统内当前各个程序占用CPU、内存以及I/O请求的情况并将该情况保存下来,共采集60次。
[0048] 重启Android系统阶段包括以下步骤:
[0049] 步骤300:重新启动Android系统。
[0050] 在本步骤中,使用kexec(kernel execution)来实现Android系统的重启。kexec是一种可用于x86平台上的Linux内核的功能部件,是Linux内核的一个补丁。使用kexec可以从当前正在运行的内核直接引导到一个新内核。在上述描述的Android系统引导过程中,使用kexec可以跳过整个引导装载程序阶段并直接跳转到希望引导的内核,而不再有硬件的重启,不再有固件操作,不再涉及引导装在程序,完全避开了引导过程中最耗时的一环-固件阶段。kexec这种功能部件为Android系统带来的最大益处在于:Android系统可以极其快速地重新启动。由此大大减少了Android系统重新启动引起的系统宕机时间。
[0051] kexec有两个组件。第一个是用户空间组件,叫做“kexec-tools”,第二个是真正的内核补丁。在向Android系统内核移植kexec时,需要使用这两部分实现kexec的两个主要操作:编译“kexec-tools”包以得到kexec工具,并将内核补丁加入到Android系统内核树中并重装启动到它,便可容易地获得一个启用kexec的Android系统内核。
[0052] 在向Android系统完成kexec的移植后,使用kexec重启Android系统的过程包括:
[0053] (1)将重新启动到的内核装载到内核中,然后;
[0054] (2)真正重新启动到它。装载内核的语法如下:
[0055] kexec-l--append=″″;
[0056] 在这里,是重新启动后的内核文件,容纳的是需要传递到新内核的命令行参数。由于错误的命令行选项可能会在重新启动时引发问题,所以,确保合法值传递到重新启动的内核的安全方法是传递“/proc/cmdline”的内容。例如,如果希望重新启动的内核映像是“/boot/bzImage”,“/proc/cmdline”的内容是″root=/dev/hda1″,那么装载内核的命令将是:kexec-l/boot/bzImage-append=″root=/dev/hda1″。然后,为了真正重新启动已装载的内核,只需要输入:kexec-e,系统将立即重新启动。不同于正常的重新启动过程,在重新启动之前,kexec不去执行彻底停止系统。
[0057] Android系统重启后的后续阶段包括以下步骤:
[0058] 步骤400:根据上述Android系统信息,对所述系统内的程序进行筛选。
[0059] 设在步骤200中经过3s、60次Android系统信息采集后的所有程序的总CPU占用率为Sumcpu,平均CPU占用率为 总内存占用率为Summem,平均内存占用率为 总I/O请求率为Sumiowait,平均I/
O请求率为 设每个程序的总CPU占用率、总内存占用
率和总I/O请求率分别为CPUpi、MEMpi和IOWpi,每个程序的平均CPU占用率、平均内存占用率和平均I/O请求率分别为 和
其中(i=1,2,......n)。设CPU占用率、内存占用率和I/O请求
率的权重分别为λcpu=1、λmem=0.6和λiow=0.3。
[0060] 步骤400中的筛选的具体步骤如下:
[0061] 1、首先判断Android系统在重启之前是否存在响应迟钝的现象,即:如果或 亦或 则认定Android系统在重启之前存在响应迟钝的现象,并进入步骤2;否则,认定Android系统在重启之前不存在响应迟钝的现象并进入系统完成重启过程。
[0062] 2、判断Android系统在重启之前存在的响应迟钝现象是由哪些程序引起的,即:判断Android系统在重启之前哪些程序占用的系统资源较多,包括:分别判断每个程序的 和 的大小:如果某一程序的 或或 则将该程序标记为可能影响系统响应速度的程序;否
则,将该程序标记为不影响系统响应速度的程序。重复执行步骤2的上述判断过程,直至完成对所有程序的判断之后,进入下一步。
[0063] 3、判断被标记为可能影响系统响应速度的程序的数量:如果该数量大于1且不小于3,则将这些被标记为可能影响系统响应速度的程序作为影响系统响应速度的程序(不推荐随系统重启而同时启动的程序)反馈给用户,以建议用户不要使这些程序随系统重启而自动同时启动;如果该数量等于1,则将这一单独启动便会影响系统响应速度的程序反馈给用户,以告知用户该程序消耗系统资源过大,不建议在当前手机上使用该程序;如果该数量大于3,则将这些被标记为可能影响系统响应速度的程序的 和分别带入方程 从中选出
方程解最大的3个程序作为影响系统响应速度的程序(不推荐随系统重启而同时启动的程序)反馈给用户,以建议用户不要使这些程序随系统重启而自动同时启动。
[0064] 此外,还可以统计Android系统重启前不同程序的运行次数/时间,通过设置运行次数/时间的阀值,筛选出运行次/时间在该阀值以上的程序作为常用程序(在下次重启时可以优先启动)。
[0065] 此外,将既属于影响系统响应速度的程序又是属于常用程序范畴内的程序作为特殊程序筛选出来。
[0066] 步骤500:处理经过所述筛选的程序。
[0067] 在本步骤中,可根据用户的选择(禁止/允许某些影响系统启动速度的程序随系统重启的同时自动启动)记录下可以/不可以在系统重启时自动启动的影响系统启动速度的程序,从而实现重启时禁止启动一些影响系统启动速度的程序,从而获得最佳的系统启动速度。
[0068] 优选地,在由步骤400判断出影响系统响应速度的程序后,可自动将这些影响系统响应速度的程序视为禁止在系统重启时自动启动的程序,以便在重启Android系统时自动关闭这些影响系统响应速度的程序,以便实现Android系统重启速度的最大化。但此举可能会影响一些程序使用的便利性,例如在系统重启时自动关闭了需要经常打开但影响重启速度的病毒监控程序,那么在重启后则需要手动打开该程序,此举无疑会增加用户的操作从而影响了该程序的使用便利性。
[0069] 优选地,在由步骤400判断出影响系统响应速度的程序后,可自动将这些影响系统响应速度的程序中的某一个(例如在影响系统响应速度的程序中产生最小影响即具有最小所述方程解的那个程序)视为允许在系统重启时自动启动的程序,以便在重启Android系统时仅自动启动这一个影响系统响应速度的程序,从而在重启速度和程序使用便利性上获得折中的效果。
[0070] 优选地,在重启Android系统时优先启动所述常用程序,以便尊重用户的程序使用习惯,避免为用户带来不必要的麻烦。
[0071] 优选地,在重启Android系统时启动上述特殊程序。
[0072] 优选地,在重启Android系统时启动除上述不启动的程序外的、在重启前所记录的其他的所有程序,使手机恢复到运行导致其性能变得响应迟钝的某程序之前的状态。
[0073] 另外,也可以在重启Android系统时启动重启前所运行的最后的程序(即导致手机变得响应迟钝的程序),而暂不启动其他程序,以使有较多的资源(CPU、内存资源)提供给该程序使用。并在用户关闭该程序时,启动所述其他的程序,使手机恢复到手机重启之前运行上述最后程序之前的状态。
[0074] 以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。