一种基于Linux系统的设备及其应用启动的方法转让专利

申请号 : CN201010112878.6

文献号 : CN101770385B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 孔志强

申请人 : 青岛海信移动通信技术股份有限公司

摘要 :

为了解决现有技术中基于Linux系统的设备存在的启动一个全新的应用,且物理内存已经全部分配完时,新应用启动的速度非常慢的问题,本发明公开了一种基于Linux系统的设备及其应用启动的方法,该方法包括:当基于Linux系统的设备的一个新应用进行启动,且内存不够新应用使用时,将当前CPU的频率提高;基于提高后的CPU的频率进行内存释放,并启动新应用,正是由于当物理内存已经全部分配完时,将CPU的频率提高,进而基于提高后的CPU的频率进行内存释放,并进行新应用的启动,加快了基于Linux系统的设备新应用启动的速度。

权利要求 :

1.一种基于Linux系统的智能移动终端应用启动的方法,其特征在于,包括:当需要启动新应用但内存不够新应用使用时,将CPU的频率提高并提高总线的频率,频率提高的总线包括第一总线和第二总线,第一总线为读取启动新应用所需数据的总线,第二总线为向内存中写入由第一总线读取的数据的总线;

基于提高后的CPU的频率和总线的频率进行内存释放;

在内存释放后基于提高后的CPU的频率和总线的频率启动新应用。

2.如权利要求1所述的方法,其特征在于,进行内存释放并启动新应用具体为:提高CPU的频率和总线的频率后,启动定时器在预定时间进行内存释放并启动新应用。

3.如权利要求1所述的方法,其特征在于,将当前CPU的频率提高具体为:将当前CPU的频率提高为CPU所支持的最高频率;

进行新应用启动后还包括:

根据CPU此时的负载小于等于阈值对CPU的频率进行调节,降低CPU的频率。

4.如权利要求1所述的方法,其特征在于,通过一个调频函数发送调频事件,通知频率控制线程将CPU和总线的频率提高。

5.一种基于Linux系统的智能移动终端,其特征在于,包括:变频模块,用于当需要启动新应用但内存不够新应用使用时,将CPU的频率提高并提高总线的频率,频率提高的总线包括第一总线和第二总线,第一总线为读取启动新应用所需数据的总线,第二总线为向内存中写入由第一总线读取的数据的总线;

释放模块,用于基于提高后的CPU的频率和总线的频率进行内存释放;

启动模块,用于在内存释放后基于提高后的CPU的频率和总线的频率启动新应用。

6.如权利要求5所述的智能移动终端,其特征在于,释放模块,还用于提高CPU的频率和总线的频率后,启动定时器在预定时间进行内存释放;

启动模块,还用于还用于提高CPU的频率和总线的频率后,启动定时器在预定时间启动新应用。

7.如权利要求5所述的智能移动终端,其特征在于,变频模块,还用于将当前CPU的频率提高为CPU所支持的最高频率,以及进行新应用启动后,根据CPU此时的负载小于等于阈值对CPU的频率进行调节,降低CPU的频率。

8.如权利要求5所述的智能移动终端,其特征在于,变频模块,还用于通过一个调频函数发送调频事件,通知频率控制线程将CPU和总线的频率提高。

说明书 :

一种基于Linux系统的设备及其应用启动的方法

技术领域

[0001] 本发明属于计算机技术领域,特别涉及一种基于Linux系统的设备及其应用启动的方法。

背景技术

[0002] Linux内存管理的原则是利用贪梦算法尽可能的使用物理内存,和Windows 2K/XP使用的均衡算法相比,Linux内存管理的出发点和使用的算法都不相同。Windows在应用退出后立刻释放占用的内存,所以查看内存的时候,空闲的内存空间跟当前正在运行的程序多少有关系,如果运行的应用多,那么空闲内存就小,如果运行的应用少,那么空闲的内存就比较大。而Linux则不同,开机后运行一些应用后,把这些应用都退出,却发现内存空间已经所剩无几,差不多全部被占用。从深层次上看,Linux充分利用了内存作为缓存使得再次打开应用程序的速度大大加快;而且在没有必要的情况下,尽量减少使用硬盘作为缓冲以提高硬盘的寿命。
[0003] 但是,如果Linux的物理内存使用得差不多时,再运行一个大点的应用程序,此时Linux会根据内存不够(为了方便描述,后续文档中将这种内存空间不够的情况统称为物理内存已经全部分配完),唤醒Kswapd内核线程(用于释放内存空间的内核线程)来释放一些内存空间,当释放出空间后,再从内存的空闲列表申请内存,所以Linux启动一个全新的应用就比较慢。

发明内容

[0004] 为了解决现有技术中基于Linux系统的智能移动终端存在的启动一个全新的应用,且物理内存已经全部分配完时,新应用启动的速度非常慢的问题,本发明实施例提供了一种基于Linux系统的设备应用启动的方法,包括:
[0005] 当需要启动新应用但内存不够新应用使用时,提高CPU频率;
[0006] 基于提高后的CPU的频率进行内存释放;
[0007] 在内存释放后启动新应用。
[0008] 同时本发明实施例还提供一种基于Linux系统的智能移动终端,包括:
[0009] 变频模块,用于当需要启动新应用但内存不够新应用使用时,提高CPU频率;
[0010] 释放模块,用于基于提高后的CPU的频率进行内存释放;
[0011] 启动模块,用于在内存释放后启动新应用。
[0012] 由本发明提供的具体实施方案可以看出,正是由于当物理内存已经全部分配完时,将CPU的频率提高,进而基于提高后的CPU的频率进行内存释放,并进行新应用的启动,加快了基于Linux系统的智能移动终端新应用启动的速度。

附图说明

[0013] 图1为本发明提供的第一实施例方法流程图;
[0014] 图2为本发明提供的第二实施例设备拓扑图。

具体实施方式

[0015] 为了解决现有技术中基于Linux系统的智能移动终端存在的启动一个全新的应用,且物理内存已经全部分配完时,新应用启动的速度非常慢的问题,本发明第一实施例提供了一种基于Linux系统的智能移动终端应用启动的方法,该方法应用于基于Linux系统的手机(后序的描述均采用手机代替)中,当启动手机的MP3播放器进行MP3播放时,Linux系统会通过_alloc_pages函数来分配物理内存,如果有空闲的物理内存,那么直接从空闲列表中得到内存,返回内存地址。如果内存已经全部分配,则将当前CPU的频率由60M提高到624M,当CPU工作在624M时,基于624M的CPU频率,进行内存释放,并启动MP3播放器进行MP3播放。其中内存释放具体过程为,通过wakeup_kswapd函数发送唤醒kswapd内核线程事件,来唤醒kswapd内核线程来进行内存释放。释放的内存被重新放置到内存的空闲列表中,_alloc_pages再次从内存的空闲列表申请内存时就可以得到需要的内存空间。由于得到需要的内存空间进而可以启动MP3播放器进行MP3播放。在Linux系统中kswapd内核线程是一个释放内存空间的内核线程。当然本实施例不限于基于Linux系统的手机,同样也可实施于其它基于Linux系统的设备,如基于Linux系统的计算机等。启动MP3播放器进行MP3播放也只是本实施例的一个优选的方案,本实施例的方法也适用于其它新应用的启动,如启动浏览器进行网页的浏览等。当然为了进一步的提高启动MP3播放器的速度,在CPU的频率提高的同时,还可以提高总线的频率。
[0016] 本实施例方案的关键就是当物理内存全部分配后,发送调频的事件通知频率控制的线程将CPU的频率和总线频率提高,使得CPU和其他资源都处于一个高性能状态,然后再通过wakeup_kswapd函数发送唤醒kswapd内核线程事件,通过kswapd的内核线程来释放内存,这样就可以保证内存的空闲列表有足够的内存空间进行分配,进而启动MP3播放器进行MP3播放,具体的流程如图1所示,包括:
[0017] 步骤101:启动手机的一个全新的应用MP3播放器。
[0018] 启动一个全新的应用需要重新分配内存空间,由于Linux内存管理机制,所有的物理内存已经分配完。
[0019] 步骤102:内存分配完,启动MP3播放器时内存申请失败,发送调节CPU频率的事件,提高当前CPU频率且延时50毫秒。
[0020] 本实施例在本步骤具体实施时,作为优选方案是让CPU频率控制的线程将频率由60M提高到624M,总线频率提高到312M,并启动定时器,延时50毫秒,当然如前述,也可以只提高CPU频率而不提高总线频率。
[0021] 其中本实施例中的CPU的频率可工作在60M、104M、208M和624M,在进行CPU频率时,如果当前CPU的频率工作在60M,还可以将CPU的频率提高到104M和208M,如果当前CPU的频率工作在104M,还可以将CPU的频率提高到208M和624M,总之要将当前CPU的频率提高。
[0022] Linux系统是通过_alloc_pages函数来分配物理内存,当内存已经全部分配时,将当前CPU的频率由60M提高到624M,启动定时器,延时50毫秒让CPU频率工作在624M,总线频率工作在到312M。其中,延时50毫秒可以是根据手机中不同的应用,综合考虑确定的统一的经验值,也可以根据手机中不同的应用,分别确定的对应不同应用的延时,如启动MP3播放器对应的时延是50毫秒,启动浏览器对应的时延是40毫秒。
[0023] 频率提高的总线包括存储空间(NAND)总线和内存空间(SDRAM,即本实施例中使用的内存)总线,其中启动新应用如启动MP3播放器和启动浏览器所需数据均存储于存储空间(NAND),存储空间(NAND)总线为读取启动新应用所需数据的总线。由存储空间(NAND)读取出来的启动新应用所需的数据,均被写入内存空间(SDRAM)中供新应用启动使用,内存空间(SDRAM)总线为向内存中写入由存储空间(NAND)总线读取的数据的总线。
[0024] 提高CPU频率和总线的频率,具体实施时是通过调频函数increase_cpu_freq发送调频事件,通知频率控制线程将CPU和总线的频率提高。
[0025] 步骤103:在CPU和总线频率提高的情况下,发送唤醒kswapd的内核线程事件。
[0026] 本步骤在具体实施时,是在CPU和总线频率提高的情况下,通过wakeup_kswapd函数发送唤醒kswapd内核线程事件,来唤醒kswapd内核线程来进行内存释放。
[0027] 步骤104:kswapd内核线程被唤醒后进行内存释放。
[0028] 本步骤在具体实施时,释放内存完成后kswapd的内核线程继续睡眠。
[0029] 步骤105:再次从内存空闲列表申请内存。
[0030] 由于kswapd内核线程已经释放了内存,所以可以申请到内存,保证MP3播放器启动需要的资源。具体是将释放的内存被重新放置到内存的空闲列表中,由于内存已经被释放,分配物理内存的_alloc_pages函数再次从内存的空闲列表申请内存时,就可以得到MP3播放器启动需要的内存空间。
[0031] 步骤106:在定时器延时的50毫秒内,完成新应用MP3播放器的启动。
[0032] 以上CPU和总线一直工作在高性能状态,保证操作的快速性。当定时器延时50毫秒到时后,新应用MP3播放器的启动已经完成,再次将CPU的频率根据CPU当前的负载进行调节,以降低手机的功耗。
[0033] 当然,还可以是定时器设定的延时为20毫秒,在20毫秒内,在CPU和总线频率提高的情况下(也可以是只提高CPU的频率)进行内存释放,之后降低CPU和总线频率,在降低CPU和总线频率后启动MP3播放器。具体的方案可根据需求进行选择。但是作为本实施例方案的核心思想是,内存不够新应用MP3播放器使用时,将当前CPU的频率提高,基于提高后的CPU的频率进行内存的释放,使得有足够的内存供新应用启动。
[0034] 本实施例中的手机上采取的电源管理方法为动态的调节CPU的频率,也就是根据当前CPU的负载,来调节CPU的频率,如表1所示。
[0035]操作点 低门限值(%) 高门限值(%)
60M NULL 95
104M 28 70
208M 30 95
624M 65 NULL
[0036] 表1
[0037] 当CPU的频率在60M,如果CPU的负载大于等于95%时,将CPU的频率提高到104M;
[0038] 当CPU的频率在104M,如果CPU的负载大于等于70%时,将CPU的频率提高到208M;如果CPU的负载小于等于28%时,将CPU的频率降低到60M;
[0039] 当CPU的频率在208M,如果CPU的负载大于等于95%时,将CPU的频率提高到624M;如果CPU的负载小于等于30%时,将CPU的频率降低到104M;
[0040] 当CPU的频率在624M,如果CPU的负载小于等于65%时,将CPU的频率降低到208M。
[0041] 基于上述的CPU频率调整策略,本实施例中CPU的频率被调整到624M并完成新应用MP3播放器的启动后,将会根据CPU的频率在624M时,CPU的负载小于等于65%,将CPU频率调整到208M。再根据CPU的频率在208M时,CPU的负载小于等于30%,将CPU频率调整到104M,最终根据CPU的频率在104M时,CPU的负载在28%和70%之间,停止负载调整。
[0042] 根据当前CPU的负载不同,动态的调节CPU的频率,进一步很好的解决了功耗和性能的矛盾,能让手机速度比较快的情况下,功耗相对较低。
[0043] 本发明实施例的方案,根据内存分配的机制,可以精确了解内存的使用情况,而内存的使用情况直接影响了应用的启动速度,所以可以在很恰当的时间来提高CPU的频率,保证手机的运行速度;并且进一步也能在很恰当的时候将CPU的频率降低,减小手机的功耗。这样就很好的解决了性能和功耗的矛盾,让手机既有快速响应的性能,又保持在较低功耗状态工作。
[0044] 本发明提供的第二实施例是一种基于Linux系统的智能移动终端,如图2所示,包括:
[0045] 变频模块201,用于当需要启动新应用但内存不够新应用使用时,提高CPU频率;
[0046] 释放模块202,用于基于提高后的CPU的频率进行内存释放;
[0047] 启动模块203,用于在内存释放后启动新应用。
[0048] 进一步,变频模块201,还用于将当前CPU的频率提高的同时,提高总线的频率,频率提高的总线包括第一总线和第二总线,第一总线为读取启动新应用所需数据的总线,第二总线为向内存中写入由第一总线读取的数据的总线;
[0049] 释放模块202,还用于基于提高后的CPU的频率和总线的频率进行内存释放;
[0050] 启动模块203,还用于基于提高后的CPU的频率和总线的频率启动新应用。
[0051] 进一步,释放模块202,还用于提高CPU的频率和总线的频率后,启动定时器在预定时间进行内存释放;
[0052] 启动模块203,还用于提高CPU的频率和总线的频率后,启动定时器在预定时间启动新应用。
[0053] 进一步,变频模块201,还用于将当前CPU的频率提高为CPU所支持的最高频率,以及进行新应用启动后,根据CPU此时的负载小于等于阈值对CPU的频率进行调节,降低CPU的频率。
[0054] 进一步,变频模块201,还用于通过一个调频函数发送调频事件,通知频率控制线程将CPU和总线的频率提高。
[0055] 显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。