发明内容
本发明提供了一种终端进行***升级后生效的方法,该方法能够使终端进行***升级后快速生效。
本发明还提供了一种终端,该终端使***升级后快速生效。
一种终端进行***升级后生效的方法,该方法包括:
升级进程进行***升级,升级成功后向初始化进程发送用于指示重新加载的重载指令;
初始化进程接收重载指令后通知关闭应用层进程中的底层进程和服务进程,底层进程和服务进程保存数据并退出;
初始化进程加载升级后的底层进程和服务进程。
一种终端,该终端包括升级进程单元、初始化进程单元、底层进程单元和服务进程单元;
所述升级进程单元,用于进行***升级,升级成功后向初始化进程单元发送用于指示重新加载的重载指令;
所述初始化进程单元,用于接收来自升级进程单元的重载指令,通知底层进程单元和服务进程单元关闭进程;而后加载升级后的底层进程和服务进程;
所述底层进程单元,用于根据初始化进程单元的通知保存数据后退出底层进程;
所述服务进程单元,用于根据初始化进程单元的通知保存数据后退出服务进程。
从上述方案可以看出,本发明中,在升级成功后,升级进程向初始化进程发送重载指令,初始化进程通知关闭应用层进程中的底层进程和服务进程,而后,初始化进程重新加载升级后的底层进程和服务进程。采用本发明方案,在***升级完成后无需进行重启,缩短了***生效的时间。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,下面结合实施例和附图,对本发明进一步详细说明。
发明人在进行本发明的过程中发现,***升级是针对应用层的升级,而对硬件、内核没有改变;具体地,***升级只涉及应用层进程中底层进程和服务进程的重新加载,因而,本发明在升级完成后,只重新加载应用层进程中升级后的底层进程和服务进程。
终端在进行***启动的过程中,会加载应用层进程。加载应用层进程的流程具体包括:启动应用层进程中的初始化(init)进程,初始化进程为父进程,而后再由初始化进程加载其所有子进程。
参见图2,为初始化进程加载其子进程的流程,其包括以下步骤:
步骤201,初始化所有设备文件,加载分区***。
步骤202,设置设备及内核参数,设置***权限及环境。
步骤203,加载底层进程。
底层进程主要包括:SystemServer、servicemanager、vold、netd、drmserver、mediaserver、adbd、dhcpcd、rild、dbus、sdptool、mtpd、gator等进程。
步骤204,加载服务进程。
具体地,启动zygote进程,zygote进程是所有服务进程中的父进程,所有的服务进程都是由zygote孵化。Zygote启动android应用层的一些关键服务,包括:setting、mail、wallpaper、surfaceflinger、audioflinger等
参见图3,为本发明终端进行***升级后生效的方法示意性流程图,其包括以下步骤:
步骤301,升级进程进行***升级,升级成功后向初始化进程发送用于指示重新加载的重载指令。
重载指令为本发明中定义的用于指示升级进程进行重新加载的指令。
由于本发明仅针对应用层进行升级,因此,优选地,本步骤可在完成应用层升级后向初始化进程发送重载指令。
步骤302,初始化进程接收重载指令后通知关闭应用层进程中的底层进程和服务进程,底层进程和服务进程保存数据并退出。
初始化进程与底层进程和服务进程之间使用linux的signal消息机制进行交互,signal为函数名,用于设置某一消息的对应动作;本发明在linux中自定义一类消息,即预关闭指令,用该指令来标识进行程序关闭,具体地,将对应底层进程的预关闭指令表示为SIG_LINUX_PREKILL,将对应服务器进程的预关闭指令表示为SIG_APP_PREKILL。相应地,底层进程和服务器进程接收预关闭指令后,保存数据并退出。
进一步地,初始化进程通知关闭应用层进程中的底层进程和服务进程时,还可设置等待时间,判断底层进程和服务进程是否在等待时间内关闭,如果不是,则通知未关闭的底层进程和服务进程强制关闭;如果是,则执行步骤303。所述等待时间例如为2秒。
所述初始化进程通知未关闭的底层进程和服务进程强制关闭具体包括:初始化进程向未关闭的底层进程和服务进程发送关闭(kill)指令。关闭指令为signal消息机制中用于通知进程进行强行关闭的指令。底层进程和服务进程接收关闭指令后不进行数据保存而强行退出。
判断底层进程和服务进程是否在等待时间内关闭可具体包括:在等待时间内每隔设定时间遍历底层进程和服务进程是否关闭,以确定底层进程和服务进程在等待时间内是否关闭。所述设定时间例如为100ms。
终端***的进程列表中记录了***当前运行的各进程的信息,包括各进程的标识(ID)、名字、占用CPU的比例等。如果底层进程和服务进程都已关闭,则进程列表中只包含关于初始化进程的记录;如果还有未关闭的底层进程和服务进程,则进程列表中包含关于初始化进程、未关闭的底层进程和未关闭的服务进程的记录。初始化进程可通过***提供的用于调用进程列表的接口,调用进程列表,以获知当前还有哪些底层进程和服务进程没有关闭。
每隔设定时间遍历底层进程和服务进程是否关闭可结合进程列表实现,具体地,包括:初始化进程每隔设定时间判断进程列表中是否只有关于初始化进程的记录,如果是,则确定底层进程和服务进程都已关闭。
步骤303,初始化进程加载升级后的底层进程和服务进程。
初始化进程加载升级后的底层进程和服务进程的过程,与现有方式相同。
下面同样以升级android***为例,通过图4的流程对本发明升级后生效的方法进行举例说明,图4流程包括以下步骤:
步骤401,启动硬件初始化加载程序。
步骤402,运行***内核(kernel)进程。
步骤403,加载应用层进程。
本步骤具体包括:
初始化所有设备文件,加载分区***;
设置设备及内核参数,设置***权限及环境;
加载底层进程;
加载服务进程。
步骤404,升级进程进行***升级,升级成功后向初始化进程发送重载指令。
步骤405,初始化进程接收重载指令后向应用层进程中的底层进程和服务进程发送预关闭指令,并设置等待时间和设定时间,底层进程和服务进程接收预关闭指令后保存数据并退出。
本实例中,假设等待时间为2s,设定时间为100ms;关于等待时间的定时器和关于设定时间的定时器都在发送预关闭指令时开启。
步骤406,在设定时间到来时,初始化进程判断进程列表中是否只有关于初始化进程的记录,如果是,则确定底层进程和服务进程都已关闭,执行步骤407,否则,执行步骤408。
设定时间到来时,即关于设定时间的定时器计时结束时;关于设定时间的定时器计时结束时,重新启动计时。
步骤408,初始化进程判断下一个设定时间是否到达,如果到达,则执行步骤409,如果没有到达,则继续等待,返回步骤406。
步骤409,初始化进程向未关闭的底层进程和服务进程发送关闭指令,底层进程和服务进程接收关闭指令后不进行数据保存而强行退出。
初始化进程在2s内,每个100ms检查一次,看是否底层进程和服务进程都已关闭。
步骤407,初始化进程加载升级后的底层进程和服务进程。
至此,升级后的***生效。
图4的实例中,***升级完成后,向初始化进程发送重载指令,由初始化进程关闭android应用层进程中的底层进程和服务进程,待关闭后,再发送重启事件,以重新加载新的底层进程和服务进程。该过程中,只重新加载了Android应用层进程中的底层进程和服务进程,无需加载启动bootloader,也无需运行kernel进程;并且,由于加载应用层进程的时间主要花在加载升级后的底层进程和服务进程上,而加载应用层仅和运行kernel进程的时间差不多,从而,相比现有技术升级***后重新启动的方式,本发明方案节省了至少一半的时间。
参见图5,为本发明终端的结构示意图,其包括升级进程单元、初始化进程单元、底层进程单元和服务进程单元;
所述升级进程单元,用于进行***升级,升级成功后向初始化进程单元发送用于指示重新加载的重载指令;
所述初始化进程单元,用于接收来自升级进程单元的重载指令,通知底层进程单元和服务进程单元关闭进程;而后加载升级后的底层进程和服务进程;
所述底层进程单元,用于根据初始化进程单元的通知保存数据后退出底层进程;
所述服务进程单元,用于根据初始化进程单元的通知保存数据后退出服务进程。
可选地,所述初始化进程单元包括判断子单元,用于在通知关闭应用层进程中的底层进程和服务进程时,设置等待时间,判断底层进程和服务进程是否在等待时间内关闭,如果不是,则通知未关闭的底层进程和服务进程强制关闭;
所述底层进程单元,还用于根据初始化进程单元的通知强制退出底层进程;
所述服务进程单元,用于根据初始化进程单元的通知强制退出服务进程。
可选地,所述判断子单元包括进程关闭判断模块,用于在等待时间内每隔设定时间判断进程列表中是否只有关于初始化进程的记录,如果是,则确定底层进程和服务进程都已关闭。
本发明所述终端可以是基于android***的终端。
本发明实施例所描述的终端可以在硬件、软件、固件或这三者的任意组合来实现。如果在软件中实现,这些功能可以存储与计算机可读的媒介上,或以一个或多个指令或代码形式传输于计算机可读的媒介上。计算机可读媒介包括电脑存储媒介和便于使得让计算机程序从一个地方转移到其它地方的通信媒介。存储媒介可以是任何通用或特殊电脑可以接入访问的可用媒体。例如,这样的计算机可读媒体可以包括但不限于RAM、ROM、EEPROM、CD-ROM或其它光盘存储、磁盘存储或其它磁性存储装置,或其它任何可以用于承载或存储以指令或数据结构和其它可被通用或特殊计算机、或通用或特殊处理器读取形式的程序代码的媒介。此外,任何链接都可以被适当地定义为计算机可读媒介,所述的碟片(disk)和磁盘(disc)包括压缩磁盘、镭射盘、光盘、DVD、软盘和蓝光光盘,磁盘通常以磁性复制数据,而碟片通常以激光进行光学复制数据。上述的组合也可以包含在计算机可读媒介中。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。