系统进程运行异常引起卡顿的恢复方法、装置及移动终端的制作方法_2

文档序号:9547019阅读:来源:国知局
台,但与用户的使用也 密切相关,移动终端用户也不希望它们被终止(用户肯定不希望时钟、天气,新闻等widget 被终止,那它们将无法同步,用户也不希望输入法被终止,否则你每次输入时都需要重新启 动输入法)
[0052] 3.次要服务(secondary server):目前正在运行的一些服务(主要服务,如拨号 等,是不可能被进程管理终止的,故这里只谈次要服务),举例来说:谷歌企业套件,Gmail 内部存储,联系人内部存储等。这部分服务虽然属于次要服务,但很一些系统功能依然息息 相关,移动终端用户时常需要用到这些进程,所以也不希望这些进程被终止。
[0053] 4.后台进程(hidden) :hidden实际即是后台进程(background),就是通常意义上 理解的启动后被切换到后台的进程,如浏览器,阅读器等。当程序显示在屏幕上时,它所运 行的进程即为前台进程(foreground),一旦用户按home返回主界面(注意是按home,不是 按back),程序就驻留在后台,成为后台进程(background)。后台进程的管理策略有多种: 有较为积极的方式,一旦程序到达后台立即终止,这种方式会提高程序的运行速度,但无法 加速程序的再次启动;也有较消极的方式,尽可能多的保留后台程序,虽然可能会影响到单 个程序的运行速度,但在再次启动已启动的程序时,速度会有所提升。这里就需要用户根据 自己的使用习惯找到一个平衡点。
[0054] 5.内容供应节点(content provider):没有程序实体,进提供内容供别的程序去 用的,比如日历供应节点,邮件供应节点等。在终止进程时,这类程序应该有较高的优先权。
[0055] 6.空进程(empty):没有任何东西在内运行的进程,有些程序,比如BTE,在程序退 出后,依然会在进程中驻留一个空进程,这个进程里没有任何数据在运行,作用往往是提高 该程序下次的启动速度或者记录程序的一些历史信息。这部分进程无疑是应该最先终止 的。
[0056] 因为造成阻塞的原因是统计周期时间TT内多次前后调用系统进程时间差值ATi 超过定时的阈值时间T并且该系统进程运行占用CPU的比例大于阈值比例m(% ),此时默 认该系统进程将导致操作系统的卡顿。步骤SlOl的具体细化如下,相关的流程图可以参照 附图2:
[0057] 步骤S1011、初始化阈值时间T,初始化阀值比例m,初始化统计周期时间TT,初始 化每次调用系统进程的时间Tij,其中,i = l,2,3,…;i表示第i个进程,j = l,2,…;j 表示第j次调用第i个进程。
[0058] 比如:针对统计记录中的第三种进程,i记为3,在统计周期时间TT内第4次调用 第3种系统进程的时间记为T34,类似情况以此类推。
[0059] 步骤S1012、分别计算所述系统进程在所述统计周期时间TT内多次前后调用时间 平均差值ATi,其中计算公式如下:
[0061] 该步骤用于分别计算各个系统进程i在统计周期时间TT内多次前后调用时间的 统计平均差值ATi,通过该平均差值ATi判断在统计周期时间TT内该第i个进程是否被 过于频繁调用。
[0062] 步骤S1013、分别比较所述调用时间平均差值ATi是否小于所述阈值时间T,若小 于,进入下一步骤;
[0063] 该步骤用于分别判断各种系统进程i在统计周期时间TT内多次前后调用时间的 统计平均差值ATi与所述阈值时间T的大小,如果小于阀值时间T,则判定该系统进程被 过于频繁调用,则可能引起系统卡顿的诱因非常大,进入下一判断步骤;如果大于阀值时间 T,则判断该系统进程未被过于频繁调用,该系统进程i不会成为引起系统卡顿的因素。
[0064] 步骤S1014、获取所述系统进程的内存占用率,并比较是否超过阀值比例m,若超 过,则判断所述系统进程为阻塞进程。
[0065] 该步骤在上述步骤S103的基础上,当比较某第i个进程在统计周期时间TT内多 次前后调用时间的统计平均差值ATi小于所述阈值时间T,判断第i个系统进程在统计周 期时间TT内被频繁调用,继续判断所述系统进程的内存占用率,首先获取所述系统进程的 内存占用率,然后比较所述系统进程的内存占用率是否超过阀值比例m,其中,内存占用的 阀值比例m是工程技术人员根据开发经验定义的一个阀值,若超过阀值比例m,则判断所述 系统进程为阻塞进程,若未超过阀值比例m,则判断所述系统进程的运行和调用不会引起系 统的卡顿。
[0066] 步骤S102、若检测到存在阻塞进程,则查找所述阻塞进程中内存占用率最多的一 个或几个系统进程,并标记为禁止进程;
[0067] 本步骤中,当检测到存在某个或者某几个系统进程在一个统计周期时间TT内多 次前后调用时间的统计平均差值ATi小于所述阈值时间T,并且同时该个系统进程的内存 占用率超过阀值比例m,将上述一个或者几个系统进程标注为禁止进程,确定其为造成系统 卡顿的问题进程。
[0068] 步骤S103、启动定时器T1,通知操作系统在定时器Tl内禁止调用所述禁止进程。
[0069] -旦确定了引起系统卡顿的问题进程,启动定时器T1,同时将禁止进程的进程名 单列表发送给操作系统,通知操作系统在定时器Tl内禁止调用进程名单列表上进程。
[0070] 在另一优选的实施例中,本实施例公开的一种系统进程运行异常引起卡顿的恢复 方法在所述步骤S103、启动定时器T1,通知操作系统在定时器Tl内禁止调用所述禁止进程 之后,还包括下列步骤,具体流程步骤图可参照附图3所示:
[0071] 步骤S104、降低发生阻塞的系统进程的优先级。
[0072] Android操作系统会对系统进程的重要性进行评估,并将重要性以"〇〇m_adj"这 个数值表示出来,赋予各个进程。操作系统会根据"〇〇m_adj"来判断需要优先结束哪些进 程,一般来说,"〇〇m_adj"的值越大,该进程被操作系统选中终止的可能就越高,前台程序 的"oom_adj"值为0,这意味着它不会被操作系统终止。Android操作系统将系统进程分为 6个等级,它们按优先级顺序由高到低依次是:foreground(前台进程)、visible(可见进 程)、secondary server (次要服务)、hidden (后台进程)、content provider (内容供应 节点)、empty (空进程);同时,结束进程的顺序:Empty (空进程)>content provider (内 容供应节点)>hidden (后台进程)>secondary server (次要服务)>visible (可见进 程)>foreground (前台进程)。
[0073] Android操作系统可根据"〇〇m_adj"值的范围来决定进程管理策略,比如可以设 定"当内存小于X时,结束"〇〇m_adj "大于Y的进程"。
[0074] 查看现在的设置可以:
[0075] shelliandroid:/sys/module/lowmemorykiIler/parameters$cat minfree 3599,4881,6164,8212,9495,11294相对应的Foreground>Visible>Secondary Server>Hidden>Content Provider>Empty显示出的应该是6个数字,以逗号隔开,例 如:3599,4881,6164,8212,9495,11294 注意这些数字的单位是 page. Ipage = 4kb。上 面的六个数字对应的就是(MB) : 14, 19, 24, 32, 37, 44,这些数字也就是对应的内存阀值, 一旦低于该值,Android操作系统便开始按顺序关闭系统进程。因此,当可用内存小于 44MB (11294*4/1024)时,Android操作系统开始结束优先级最低的EMPTY_APP。
[0076] 综上所述,当移动终端开机正常工作后,操作系统对系统进程进行监测,检测出引 起阻塞的系统进程,然后操作系统通过启动定时器在禁止时间周期Tl内禁止调用该阻塞 进程,同时通过降低调用异常频繁引起系统卡顿的所述系统进程的优先级,降低发生进程 阻塞的系统进程的优先级,实现卡顿自动检测和恢复功能,以避免操作系统卡顿不流畅的 问题出现。
[0077] 实施例二
[0078] 为了实现由于系统进程运行异常引起卡顿的自动检测和恢复功能以避免操作系 统卡顿不流畅的问题出现的目的,本实施例公开了一种系统进程运行异常引起卡顿的恢复 装置及移动终端,该系统进程运行异常引起卡顿的恢复装置可以是运行于各终端设备(例 如手机、平板电脑、掌上上网设备)内的软件单元、硬件单元或者软硬件相结合的单元,也 可以作为独立的挂件集成到所述终端设备中或者运行于所述终端设备的应用系统中。
[0079] 本发明实施例中所述操作系统为Android操作系统,但是针对Android操作系 统的描述并不构成对本技术方案的限制,同样的解决技术方案可以类似延展到symbian、 Linux、Palm、BlackBerry、WindowsMobile 或 iOS 操作系统。
[0080] 图4示出了本发明第二实施例提供的一种系统进程运行异常引起卡顿的恢复装 置的组成结构框图,为了便于描述,仅示出了与本发明实施例相关的部分。
[0081] 如图4所示,本实施例二公开的一种系统进程运行异常引起卡顿的恢复装置,包 括下列模块:监测模块2
当前第2页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1