[0072] 在一个实施例中,移动终端按照后台进程的优先级进行分配后,每次进行分配后可重新计算除分配给前台进程的CPU外的其他各个CPU的占用率,并将未分配的后台进程中优先级别最后的后台进程,分配至除分配给前台进程的CPU外的其他各个CPU中,占用率最低的CPU进行运行。例如,后台进程根据优先级进行排序的结果是进程A>进程B>进程C>进程D,CPU的占用率排序是CPU1
[0073] 步骤306,控制其他CPU的占用率不大于第一阈值。
[0074] 具体地,移动终端将在占用率最低的CPU上运行的后台进程分配至其他CPU时,可控制其他的各个CPU的占用率不大于第一阈值,其中,第一阈值可根据实际需求进行设定,当CPU的占用率大于第一阈值时,CPU的占用率较高,可认为该CPU处于繁忙状态,例如,第一阈值可设定为50%、60%等。
[0075] 在一个实施例中,步骤306控制其他CPU的占用率不大于第一阈值,包括:当其他CPU中存在占用率大于第一阈值的CPU,可采集分配至该大于第一阈值的CPU的各个后台进程的CPU占用率,并停止运行该大于第一阈值的CPU中CPU占用率大于第二阈值的后台进程。
[0076] 具体地,当除被分配给前台进程的CPU外的其他CPU中,存在占用率大于第一阈值的CPU,则可采集在该占用率大于第一阈值的CPU上运行的各个后台进程的CPU占用率。在一个实施例中,当检测到预设应用列表中的应用程序在前台运行时,移动终端可每隔第二预设时间从特定的文件中读取在后台运行的各个后台进程的CPU使用数据,其中,第二预设时间可根据实际需求进行设定,第二预设时间可以是比第一预设时间长的时间段,例如1分钟、40秒等,可减少频繁读取CPU的数据带来的功耗损失。进一步地,移动终端可每隔第二预设时间从/proc目录下的/proc/stat文件中,读取各个后台进程从移动终端启动至当前时刻使用CPU的累计时间等。针对每个后台进程,可计算本次记录的使用CPU的累计时间与上一次记录的使用CPU的累计时间的差值,得到第二采集周期内对应后台进程的真正使用CPU的时间,其中,第二采集周期即为第二预设时间,可确定第二采集周期内后台进程真正使用CPU的时间与第二采集周期的比值,该比值即为对应后台进程的CPU占用率。移动终端可存储每次采集的各个后台进程的CPU占用率,当其他CPU中存在占用率大于第一阈值的CPU,可获取分配至该大于第一阈值的CPU的各个后台进程存储时刻最晚的CPU占用率。
[0077] 移动终端采集分配至该大于第一阈值的CPU的各个后台进程的CPU占用率后,可分别将各个后台的CPU占用率与第二阈值进行比较,判断CPU占用率是否大于第二阈值,其中,可根据实际需求进行设定,例如30%、40%等。当后台进程的CPU占用率大于第二阈值,可判定该后台进程占用CPU异常。移动终端可停止运行该大于第一阈值的CPU中占用CPU异常的后台进程。停止运行后台进程,可包括关闭或挂起后台进程等方式,其中,关闭后台进程指的是终止(kill)后台进程,挂起后台进程指的是暂停后台进程的运行,可将挂起的后台进程加入等待队列中,当对应的CPU空闲时,再恢复后台进程的运行。
[0078] 在一个实施例中,当其他CPU中存在占用率大于第一阈值的CPU,可选择停止运行分配至该占用率大于第一阈值的CPU中,优先级最低的后台进程,或是选择后台进程分配至其他CPU中占用率不大于第一阈值的CPU进行运行等。控制除被分配给前台进程的CPU外的其他CPU的占用率,可保证其他CPU的空闲时间,移动终端可将其他CPU的空闲时间再分配给前台进程使用,保证前台进程拥有充足的CPU资源。
[0079] 在本实施例中,可按照后台进程的优先级分配CPU资源,并保证其他各CPU的空闲时间,利用再次进行CPU资源的分配,可以减少前台运行的应用程序因资源被抢占而发生卡顿的情况。
[0080] 在一个实施例中,步骤停止运行该大于第一阈值的CPU中CPU占用率大于第二阈值的后台进程,包括:根据预设的过滤条件筛选大于第一阈值的CPU中CPU占用率大于第二阈值的后台进程,并停止运行筛选得到的后台进程。
[0081] 具体地,移动终端可预先建立过滤条件,对除被分配给前台进程的CPU外的其他CPU中,分配至占用率大于第一阈值的CPU上且CPU占用率大于第二阈值的后台进程进行过滤,其中,过滤条件可包括与前台进程关联、特定进程列表的进程、优先级较高的后台进程等。特定进程列表中存储有受保护的各个进程的进程编号、对应的应用程序的标识等,可以是用户自己选择设置的进程,也可以是系统根据实际需求进行设定的,例如可包括调用占用音频接口的音乐播放进程、
即时通信的信息接收进程等。移动终端根据过滤条件筛选大于第一阈值的CPU中CPU占用率大于第二阈值的后台进程,可停止运行筛选后得到的不满足过滤条件的后台进程。
[0082] 在一个实施例中,移动终端可在界面上显示筛选得到的后台进程,并由用户确定是否停止运行筛选得到的后台进程,根据用户的选择操作,停止运行被选择的后台进程。
[0083] 在本实施例中,可根据预设的过滤条件筛选占用率第一阈值的CPU中CPU占用率大于第二阈值的后台进程,并停止运行筛选得到的后台进程,对其他各CPU的使用情况进行控制,保证其他各CPU的空闲时间,方便再次进行CPU资源的分配,可有效减少前台运行的应用程序因资源被抢占而发生卡顿的情况。
[0084] 如图4所示,在一个实施例中,上述资源管理方法,还包括以下步骤:
[0085] 步骤402,确定前台进程的前台线程及后台线程。
[0086] 具体地,线程,有时被称为轻量级进程(Lightweight Process,LWP),是程序执行流的最小单元,一个进程可包含一个或多个线程。在一个实施例中,前台进程在运行时,可能启动多个线程,移动终端可获取每个启动的线程的线程属性,根据线程属性确定对应的线程是前台线程还是后台线程。前台线程一般可用于执行需要较长时间等待的任务,例如,监听用户的操作等,后台线程一般可用于执行时间较短的任务,例如,根据用户的操作进行相应的处理等。
[0087] 步骤404,将前台线程分配至占用率最低的CPU进行运行。
[0088] 步骤408,将后台线程分配至其他CPU,在其他CPU不运行后台进程时运行后台线程。
[0089] 具体地,移动终端可将前台进程中启动的前台线程分配至多核CPU中,占用率最低的CPU进行运行,并将前台进程启动的后台线程分配至其他CPU进行运行。移动终端在分配后台进程至其他CPU进行运行时,控制其他各CPU的占用率不大于第一阈值,将前台进程的后台线程分配至其他CPU后,可在其他CPU不运行对应的后台进程时,运行前台进程的后台线程,将其他各CPU的空闲时间也分配给前台进程进行使用。
[0090] 在本实施例中,可将其他CPU的空闲时间分配给前台进程使用,使前台运行的应用程序拥有充足的CPU资源,可有效减少前台运行的应用程序因资源被抢占而发生卡顿的情况。
[0091] 如图5所示,在一个实施例中,提供一种资源管理装置500,包括检测模块510、采集模块520、第一分配模块530及第二分配模块540。
[0092] 检测模块510,用于当检测到预设应用列表中的应用程序在前台运行时,确定对应的前台进程。
[0093] 采集模块520,用于采集多核中央处理器CPU中各个CPU的占用率。
[0094] 第一分配模块530,用于选取占用率最低的CPU,并将前台进程分配至占用率最低的CPU进行运行。
[0095] 第二分配模块540,用于当所述占用率最低的CPU上运行有后台进程时,将后台进程分配至其他CPU进行运行。
[0096] 上述资源管理装置,当检测到预设应用列表中的应用程序在前台运行时,确定对应的前台进程,采集多核中央处理器CPU中各个CPU的占用率,将前台进程分配至占用率最低的CPU进行运行,并将占用率最低的CPU上运行的后台进程分配至其他CPU进行运行,根据前台运行的应用程序动态分配CPU资源,可以减少前台运行的应用程序因资源被抢占而发生卡顿的情况。
[0097] 如图6所示,在一个实施例中,第二分配模块540,包括排序单元542、分配单元544及控制单元546。
[0098] 排序单元542,用于将各个后台进程按照优先级进行排序。
[0099] 分配单元544,用于按照优先级从高至低逐一将对应的后台进程分配至其他CPU进行运行。
[0100] 控制单元546,用于控制其他CPU的占用率不大于第一阈值。
[0101] 在一个实施例中,控制单元546,包括采集子单元及停止子单元。
[0102] 采集子单元,用于当其他CPU中存在占用率大于第一阈值的CPU,则采集分配至大于第一阈值的CPU的各个后台进程的CPU占用率。
[0103] 停止子单元,用于停止运行大于第一阈值的CPU中CPU占用率大于第二阈值的后台进程。
[0104] 在本实施例中,可按照后台进程的优先级分配CPU资源,并保证其他各CPU的空闲时间,利用再次进行CPU资源的分配,可以减少前台运行的应用程序因资源被抢占而发生卡顿的情况。
[0105] 在一个实施例中,停止子单元,还用于根据预设的过滤条件筛选该大于第一阈值的CPU中CPU占用率大于第二阈值的后台进程,停止运行筛选得到的后台进程。
[0106] 在本实施例中,可根据预设的过滤条件筛选占用率第一阈值的CPU中CPU占用率大于第二阈值的后台进程,并停止运行筛选得到的后台进程,对其他各CPU的使用情况进行控制,保证其他各CPU的空闲时间,方便再次进行CPU资源的分配,可有效减少前台运行的应用程序因资源被抢占而发生卡顿的情况。
[0107] 如图7所示,在一个实施例中,上述资源管理装置500,除了包括检测模块510、采集模块520、第一分配模块530及第二分配模块540,还包括确定模块550。
[0108] 确定模块550,用于确定前台进程的前台线程及后台线程。
[0109] 第一分配模块,还用于将前台线程分配至占用率最低的CPU进行运行。
[0110] 第二分配模块,还用于将后台线程分配至其他CPU,在其他CPU不运行后台进程时运行后台线程。
[0111] 在本实施例中,可将其他CPU的空闲时间分配给前台进程使用,使前台运行的应用程序拥有充足的CPU资源,可有效减少前台运行的应用程序因资源被抢占而发生卡顿的情况。
[0112] 本申请实施例还提供了一种移动终端。如图8所示,为了便于说明,仅示出了与本申请实施例相关的部分,具体技术细节未揭示的,请参照本申请实施例方法部分。该移动终端可以为包括手机、平板电脑、PDA(Personal Digital Assistant,个人数字助理)、POS(Point of Sales,销售终端)、车载电脑、穿戴式设备等任意终端设备,以移动终端为手机为例:
[0113] 图8为与本申请实施例提供的移动终端相关的手机的部分结构的框图。参考图8,手机包括:射频(Radio Frequency,RF)
电路810、存储器820、输入单元830、显示单元840、
传感器850、音频电路860、WiFi模块870、处理器880、以及电源890等部件。本领域技术人员可以理解,图8所示的手机结构并不构成对手机的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
[0114] 其中,RF电路810可用于收发信息或通话过程中,
信号的接收和发送,可将基站的下行信息接收后,给处理器880处理;也可以将上行的数据发送给基站。通常,RF电路包括但不限于天线、至少一个
放大器、
收发信机、
耦合器、
低噪声放大器(Low Noise Amplifier,LNA)、双工器等。此外,RF电路810还可以通过无线通信与网络和其他设备通信。上述无线通信可以使用任一通信标准或协议,包括但不限于GSM、通用分组无线服务(General Packet Radio Service,GPRS)、CDMA、宽带码分多址(Wideband Code Division Multiple Access,WCDMA)、长期演进(Long Term Evolution,LTE))、电子邮件、短消息服务(Short Messaging Service,SMS)等。
[0115] 存储器820可用于存储
软件程序以及模块,处理器880通过运行存储在存储器820的软件程序以及模块,从而执行手机的各种功能应用以及
数据处理。存储器820可主要包括程序存储区和数据存储区,其中,程序存储区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能的应用程序、图像播放功能的应用程序等)等;数据存储区可存储根据手机的使用所创建的数据(比如音频数据、通讯录等)等。此外,存储器820可以包括高速
随机存取存储器,还可以包括
非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
[0116] 输入单元830可用于接收输入的数字或字符信息,以及产生与手机800的用户设置以及功能控制有关的键信号输入。具体地,输入单元830可包括触控面板832以及其他输入设备834。触控面板832,也可称为
触摸屏,可收集用户在其上或附近的触摸操作(比如用户使用
手指、触笔等任何适合的物体或附件在触控面板832上或在触控面板832附近的操作),并根据预先设定的程式驱动相应的连接装置。在一个实施例中,触控面板832可包括触摸检测装置和触摸
控制器两个部分。其中,触摸检测装置检测用户的触摸方位,并检测触摸操作带来的信号,将信号传送给触摸控制器;触摸控制器从触摸检测装置上接收触摸信息,并将它转换成触点坐标,再送给处理器880,并能接收处理器880发来的命令并加以执行。此外,可以采用
电阻式、电容式、红外线以及表面
声波等多种类型实现触控面板832。除了触控面板832,输入单元830还可以包括其他输入设备834。具体地,其他输入设备834可以包括但不限于物理键盘、功能键(比如音量控制按键、
开关按键等)等中的一种或多种。
[0117] 显示单元840可用于显示由用户输入的信息或提供给用户的信息以及手机的各种菜单。显示单元840可包括
显示面板842。在一个实施例中,可以采用
液晶显示器(Liquid Crystal Display,LCD)、
有机发光二极管(Organic Light-Emitting Diode,OLED)等形式来配置显示面板842。在一个实施例中,触控面板832可覆盖显示面板842,当触控面板832检测到在其上或附近的触摸操作后,传送给处理器880以确定触摸事件的类型,随后处理器880根据触摸事件的类型在显示面板842上提供相应的视觉输出。虽然在图8中,触控面板
832与显示面板842是作为两个独立的部件来实现手机的输入和输入功能,但是在某些实施例中,可以将触控面板832与显示面板842集成而实现手机的输入和输出功能。
[0118] 手机800还可包括至少一种传感器850,比如光传感器、运动传感器以及其他传感器。具体地,光传感器可包括环境光传感器及
接近传感器,其中,环境光传感器可根据环境光线的明暗来调节显示面板842的
亮度,接近传感器可在手机移动到
耳边时,关闭显示面板842和/或
背光。运动传感器可包括
加速度传感器,通过加速度传感器可检测各个方向上加速度的大小,静止时可检测出重力的大小及方向,可用于识别手机
姿态的应用(比如横竖屏切换)、振动识别相关功能(比如计步器、敲击)等;此外,手机还可配置
陀螺仪、气压计、湿度计、
温度计、红外线传感器等其他传感器等。
[0119] 音频电路860、扬声器862和
传声器864可提供用户与手机之间的音频接口。音频电路860可将接收到的音频数据转换后的
电信号,传输到扬声器862,由扬声器862转换为
声音信号输出;另一方面,传声器864将收集的声音信号转换为电信号,由音频电路860接收后转换为音频数据,再将音频数据输出处理器880处理后,经RF电路810可以发送给另一手机,或者将音频数据输出至存储器820以便后续处理。
[0120] WiFi属于短距离无线传输技术,手机通过WiFi模块870可以帮助用户收发电子邮件、浏览网页和
访问流式媒体等,它为用户提供了无线的宽带互联网访问。
[0121] 处理器880是手机的控制中心,利用各种接口和线路连接整个手机的各个部分,通过运行或执行存储在存储器820内的软件程序和/或模块,以及调用存储在存储器820内的数据,执行手机的各种功能和处理数据,从而对手机进行整体监控。在一个实施例中,处理器880可包括一个或多个处理单元。在一个实施例中,处理器880可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、
用户界面和应用程序等;调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器880中。
[0122] 手机800还包括给各个部件供电的电源890(比如
电池),优选的,电源890可以通过电源管理系统与处理器880逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。
[0123] 在一个实施例中,手机800还可以包括摄像头、蓝牙模块等。
[0124] 在本申请实施例中,该移动终端所包括的处理器880执行存储在存储器上的计算机程序时实现上述的资源管理方法。
[0125] 在一个实施例中,提供一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现上述的资源管理方法。
[0126] 本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的
硬件来完成,所述的程序可存储于一非易失性计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)等。
[0127] 如此处所使用的对存储器、存储、
数据库或其它介质的任何引用可包括非易失性和/或易失性存储器。合适的非易失性存储器可包括
只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM),它用作外部
高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDR SDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)。
[0128] 以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本
说明书记载的范围。
[0129] 以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明
专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干
变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附
权利要求为准。