CN108804207A - 一种基于Android系统的进程管控方法 - Google Patents
一种基于Android系统的进程管控方法 Download PDFInfo
- Publication number
- CN108804207A CN108804207A CN201710296937.1A CN201710296937A CN108804207A CN 108804207 A CN108804207 A CN 108804207A CN 201710296937 A CN201710296937 A CN 201710296937A CN 108804207 A CN108804207 A CN 108804207A
- Authority
- CN
- China
- Prior art keywords
- white list
- target process
- target
- android system
- series
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/485—Task life-cycle, e.g. stopping, restarting, resuming execution
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明公开了一种基于Android系统的进程管控方法,包括以下步骤:启动Android系统;在该系统中注册需要保护和长驻的进程的白名单;启动该系统的Low memory killer机制,筛选出该系统中可能需要消除的目标进程;判断该目标进程是否被列入在该白名单中;若为是,保持该目标进程继续运行;若为否,则消除该目标进程并释放该目标进程所占用的系统资源。本发明通过设置进程白名单,将关键的进程列入白名单中,禁止Android系统的LMK机制杀除白名单中所列的关键进程,有效的保护了系统中的关键进程不会因为LMK机制造成数据丢失或存储异常,提高了系统的可靠性和体验性。
Description
技术领域
本发明涉及计算机通信技术领域,尤其涉及基于Android系统的进程管控方法。
背景技术
在开发汽车中控产品中,客户需要有自己的单独的服务去管理设备的运行,且需要有关键的几个应用和服务长期同时在后台运行。
Android是一个多任务系统,也就是说可以同时运行多个应用程序和后台服务。由于android系统自身特性及内存的碎片在长期的使用中会堆积非常多,内存会出现不足,导致android的垃圾回收工作及LMK(Low memory killer)的产生,旨在当系统内存低于某值时,清除相关的程序,保障系统保持拥有一定数量的空闲内存。
然而,这种机制将会对客户的关键性的后台服务及进程产生致命的杀除,进而导致数据的瞬间丢失,例如:后台的DVR行车记录功能如果瞬间被退出,会导致录制数据的丢失;严重时可能会导致存储设备的异常。
发明内容
针对现有技术的不足,本发明提出了一种基于Android系统的进程管控方法,该方法设置进程白名单,将关键的进程列入白名单中,禁止Android系统的LMK机制杀除白名单中所列的关键进程,解决了Android系统的LMK机制错误杀除关键性进程,导致数据丢失或存储异常的问题。
为了实现上述目的,本发明技术方案如下:
一种基于Android系统的进程管控方法,包括以下步骤:启动Android系统;在该系统中注册需要保护和长驻的进程的白名单;启动该系统的Low memory killer机制,筛选出该系统中可能需要消除的目标进程;判断该目标进程是否被列入在该白名单中;若为是,则保持该目标进程继续运行;若为否,则消除该目标进程并释放该目标进程所占用的系统资源。
进一步地,该筛选出该系统中可能需要消除的目标进程,包括以下步骤:设置该系统的警戒级数,并设置与各该警戒级数分别一一对应的系统剩余内存警戒值;按照进程的重要性依次降低的顺序对该系统中的若干进程依照该警戒级数进行分级;获取系统当前剩余内存大小;将该系统当前剩余内存与各该系统剩余内存警戒值逐一进行比较,确认该系统当前的警戒级数;对级数大于该系统当前的警戒级数的每个进程进行遍历,获取其中级数最大的进程,作为可能需要消除的该目标进程。
一种基于Android系统的进程管控方法,包括以下步骤:启动Linux内核,开启服务管理线程;加载需要保护和长驻的进程的白名单;实时检测初始化进程,判断初始化进程是否被列入在该白名单;若为是,则保持该初始化进程继续运行;若为否,则消除该初始化进程并释放该初始化进程所占用的系统资源;启动Android系统;开启并注册进程管理机制,加载Low memory killer机制;根据Android系统的当前剩余内存的大小判断是否启动该Low memory killer机制;若为是,则通过虚拟文件系统开关在Linux内核中启动该Lowmemory killer机制;通过该Low memory killer机制获取可能需要消除的目标进程;判断该目标进程是否被列入在该白名单;若为是,则保持该目标进程继续运行;若为否,则消除该目标进程并释放该目标进程所占用的系统资源。
进一步地,还包括步骤:开启白名单更新线程,Android系统通过该虚拟文件系统开关更新该白名单。
本发明的有益效果:
本发明通过设置进程白名单,将关键的进程列入白名单中,禁止Android系统的LMK机制杀除白名单中所列的关键进程,有效的保护了系统中的关键进程不会因为LMK机制造成数据丢失或存储异常,提高了系统的可靠性和体验性。
附图说明
图1为本发明的的第一实施例的流程示意图。
图2为图1中步骤S13的具体流程示意图。
图3为本发明的的第二实施例的流程示意图。
具体实施方式
下面结合附图和实施例,进一步阐述本发明。
实施例1:
如图1所示,一种基于Android系统的进程管控方法,包括以下步骤:
S11:启动Android系统。
S12:在该系统中注册需要保护和长驻的进程的白名单。
S13:启动该系统的Low memory killer机制,筛选出该系统中可能需要消除的目标进程。
S14:判断该目标进程是否被列入在白名单中;若为是,则保持该目标进程继续运行;若为否,则消除该目标进程并释放该目标进程所占用的系统资源。
LMK(Low memory killer)为Android系统的内存管理机制。Low memory killer根据两个原则,进程的重要性和释放这个进程可获取的空闲内存数量(即系统资源),来决定释放的进程。
为了避免Low memory killer将关键性的进程造成致命杀除,本实施例在系统中设置了进程白名单,将关键的进程列入白名单中,避免Low memory killer错杀掉白名单中所列的进程。
如图2所示,具体地,S13中该筛选出该系统中可能需要消除的目标进程的步骤包括:
S1301:设置系统的警戒级数oom_adj,并设置与各警戒级数oom_adj分别一一对应的系统剩余内存警戒值minfree。
设置有两个数组:lowmem_adj和lowmem_minfree。数组lowmem_adj用于存放警戒级数oom_adj,数组lowmem_minfree用于存放与警戒级数相对应的系统剩余内存警戒值minfree,以page为单位(4K),如下表2:
oom_adj | minfree(单位:page) |
0 | 1536 |
1 | 2048 |
2 | 4096 |
4 | 4608 |
7 | 5120 |
14 | 6144 |
表1
也就是说,当系统的剩余内存为小于1536 page的时候,当前警戒级数oom_adj为0;当系统内存剩余小于2048 page而大于1536 page的时候,当前警戒级数oom_adj为1;当内存小于4096 page大于2048 page的时候,当前警戒级数oom_adj为2;当内存小于4608page大于4096 page的时候,当前警戒级数oom_adj为4;以此类推。
S1302:按照进程的重要性依次降低的顺序对系统中的若干进程依照警戒级数进行分级。例如下表2:
进程名称 | oom_adj | 说明 |
FOREGROUD_APP | 0 | 前台程序,可以理解为你正在使用的程序 |
VISIBLE_APP | 1 | 用户可见的程序 |
SECONDARY_SERVER | 2 | 后台服务,比如说QQ会在后台运行服务 |
HOME_APP | 4 | HOME,就是主界面 |
HIDDEN_APP | 7 | 被隐藏的程序 |
CONTENT_PROVIDER | 14 | 内容提供者 |
EMPTY_APP | 15 | 空程序,既不提供服务,也不提供内容 |
表2
一般地,oom_adj越小,进程就越重要,越不容易被杀掉。通过get_mm_rss函数获取进程的内存,在相同的oom_adj下,内存大的进程,优先被杀。
S1303:获取系统当前剩余内存other_file大小。
S1304:将系统当前剩余内存other_file与各系统剩余内存警戒值逐一进行比较,确认系统当前的警戒级数。
将系统当前剩余内存other_file分别与数组lowmem_minfree内的各系统剩余内存警戒值minfree由低到高进行逐一比较,当比较结果为当前剩余内存other_file小于lowmem_minfree内的某个系统剩余内存警戒值minfree时,将该系统剩余内存警戒值minfree所对应的lowmem_adj设为基准值min_adj,即为系统当前的警戒级数。
可以设计一个Low memory killer机制启动阈值OOM_SCORE_ADJ_MAX。判断基准值min_adj是否达到预设阈值OOM_SCORE_ADJ_MAX+1;若为是,则启动系统的Low memorykiller机制。
S1305:对级数大于系统当前的警戒级数的每个进程进行遍历,获取其中级数最大的进程,作为可能需要消除的目标进程。
如果最大的oom_adj值有多个进程,则选取minfree内存最大的进程作为可能需要消除的目标进程。
Low memory killer 的规则就是根据当前系统的剩余内存多少来获取当前的警戒级数,如果进程的oom_adj大于系统当前的警戒级数并且最大,进程将会被杀死(相同omm_adj的,则杀死占用内存较多的)。omm_adj越小,代表进程越重要。一些前台的进程,oom_adj会比较小,而后台的服务,omm_adj会比较大。所以当内存不足的时候,Low memorykiller一般先杀掉的是后台服务而不是前台的进程。
该可能需要消除的目标进程确定后,判断该目标进程是否列入在白名单中;若为是,则说明该目标进程为不可消除的重要的进程,保持该目标进程继续运行;若为否,则消除(杀掉)该目标进程并释放该目标进程所占用的系统资源。若当前的目标进程在白名单中,不可消除,则重新选择目标进程。如果与当前目标进程同级的进程有多个,则选取除当前目标进程以外的minfree内存最大的进程作为目标进程作为新的目标进程;如果没有与当前目标进程同级的其它进程,则从比当前目标进程oom_adj值小一级的进程中选取minfree内存最大的进程作为新的目标进程。并且将新的目标进程与白名单匹配,直至找到未列入白名单的oom_adj值和minfree值最大的进程,作为最终要杀除的目标进程。
确定目标进程不在白名单中后,通过force_sig(SIGKILL, selected)函数来向目标进程发送一个不可以忽略或阻塞的SIGKILL信号,杀掉该目标进程并释放掉这个进程的内存。
实施例2:
一种基于Android系统的进程管控方法,包括以下步骤:
S201:启动Linux内核,开启服务管理线程。
Android是基于Linux内核的操作系统,Android本质上是一个基于Linux内核上面运行的java虚拟机。在加载Android系统前先启动Linux内核。
S202:加载需要保护和长驻的进程的白名单。
白名单列入系统关键的进程。白名单列入了Linux内核的服务和应用进程,并列入了上层的服务和应用进程。
S203:并且实时检测初始化进程,判断初始化进程是否被列入在该白名单;若为是,则保持该初始化进程继续运行;若为否,则消除该初始化进程并释放该初始化进程所占用的系统资源。
S204:启动Android系统。
S205:开启并注册进程管理机制,加载Low memory killer机制。
S206:根据Android系统的当前剩余内存的大小判断是否启动Low memory killer机制;若为是,则执行S27。
S207:通过VFS(Virtual File System,虚拟文件系统,也称为虚拟文件系统开关)在Linux内核中启动Low memory killer机制。
VFS是Linux档案系统对外的接口,任何要使用档案系统的程序都必须经由这层接口来使用它。
S208:通过Low memory killer机制获取可能需要消除的目标进程。获取可能需要消除的目标进程的方法与实施例1中的方法相同,在此不再累述。
S209:判断目标进程是否被列入在该白名单;若为是,则保持该目标进程继续运行;若为否,则消除该目标进程并释放该目标进程所占用的系统资源。
S210:开启白名单更新线程,Android系统通过VFS更新白名单。
为了避免Low memory killer将关键性的进程造成致命杀除,本实施例在系统中设置了Linux内核和上层Android程序可共享的进程白名单,将系统中关键的进程列入白名单中,当系统启动Low memory killer机制时,Low memory killer将匹配该白名单,禁止Android系统的Low memory killer机制杀除白名单中所列的关键进程。
以上所述的仅是本发明的优选实施方式,本发明不限于以上实施例。可以理解,本领域技术人员在不脱离本发明的基本构思的前提下直接导出或联想到的其它改进和变化均应认为包含在本发明的保护范围之内。
Claims (4)
1.一种基于Android系统的进程管控方法,其特征在于:
包括以下步骤:
启动Android系统;
在所述系统中注册需要保护和长驻的进程的白名单;
启动所述系统的Low memory killer机制,筛选出所述系统中可能需要消除的目标进程;
判断所述目标进程是否被列入在所述白名单中;若为是,则保持所述目标进程继续运行;若为否,则消除所述目标进程并释放所述目标进程所占用的系统资源。
2.根据权利要求1所述的基于Android系统的进程管控方法,其特征在于:
所述筛选出所述系统中可能需要消除的目标进程,包括以下步骤:
设置所述系统的警戒级数,并设置与各所述警戒级数分别一一对应的系统剩余内存警戒值;
按照进程的重要性依次降低的顺序对所述系统中的若干进程依照所述警戒级数进行分级;
获取系统当前剩余内存大小;
将所述系统当前剩余内存与各所述系统剩余内存警戒值逐一进行比较,确认所述系统当前的警戒级数;
对级数大于所述系统当前的警戒级数的每个进程进行遍历,获取其中级数最大的进程,作为可能需要消除的所述目标进程。
3.一种基于Android系统的进程管控方法,其特征在于:
包括以下步骤:
启动Linux内核,开启服务管理线程;
加载需要保护和长驻的进程的白名单;
实时检测初始化进程,判断初始化进程是否被列入在所述白名单;若为是,则保持所述初始化进程继续运行;若为否,则消除所述初始化进程;
启动Android系统;
开启并注册进程管理机制,加载Low memory killer机制;
根据Android系统的当前剩余内存的大小判断是否启动所述Low memory killer机制;若为是,则通过虚拟文件系统开关在Linux内核中启动所述Low memory killer机制;
通过所述Low memory killer机制获取可能需要消除的目标进程;
判断所述目标进程是否被列入在所述白名单;若为是,则保持所述目标进程继续运行;若为否,则消除所述目标进程并释放所述目标进程所占用的系统资源。
4.根据权利要求3所述的基于Android系统的进程管控方法,其特征于:
还包括步骤:
开启白名单更新线程,Android系统通过所述虚拟文件系统开关更新所述白名单。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710296937.1A CN108804207A (zh) | 2017-04-28 | 2017-04-28 | 一种基于Android系统的进程管控方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710296937.1A CN108804207A (zh) | 2017-04-28 | 2017-04-28 | 一种基于Android系统的进程管控方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN108804207A true CN108804207A (zh) | 2018-11-13 |
Family
ID=64053264
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710296937.1A Pending CN108804207A (zh) | 2017-04-28 | 2017-04-28 | 一种基于Android系统的进程管控方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108804207A (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110096347A (zh) * | 2019-03-29 | 2019-08-06 | 努比亚技术有限公司 | 一种进程后台管理方法、终端及计算机可读存储介质 |
CN110806926A (zh) * | 2019-09-05 | 2020-02-18 | 华为技术有限公司 | 一种资源管控方法及设备 |
WO2020197916A1 (en) * | 2019-03-22 | 2020-10-01 | Verifone, Inc. | Systems and methods for providing low memory killer protection to non-system applications |
CN112306371A (zh) * | 2019-07-30 | 2021-02-02 | 伊姆西Ip控股有限责任公司 | 存储管理的方法、设备和计算机程序产品 |
CN112685088A (zh) * | 2019-10-17 | 2021-04-20 | 成都鼎桥通信技术有限公司 | 保护应用运行的方法、装置、设备及可读存储介质 |
CN114969719A (zh) * | 2022-05-27 | 2022-08-30 | 南京网藤科技有限公司 | 通过关键模块判定来防止错误拦截系统运行的方法及系统 |
CN115665311A (zh) * | 2022-10-25 | 2023-01-31 | 北京鸿途信达科技股份有限公司 | 一种手机定时优化后台进程的系统优化方法 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103677893A (zh) * | 2012-09-19 | 2014-03-26 | 财团法人工业技术研究院 | 开机的映像文件的大小缩减方法及运算装置 |
US20140137227A1 (en) * | 2012-09-03 | 2014-05-15 | Tencent Technology (Shenzhen) Company Limited | Systems and Methods for Enhancement of Single Sign-On Protection |
CN104199669A (zh) * | 2014-09-12 | 2014-12-10 | 北京奇虎科技有限公司 | 对应用程序的进程进行管理的方法及装置 |
CN105718791A (zh) * | 2014-12-01 | 2016-06-29 | Tcl集团股份有限公司 | 一种保护应用程序数据的方法和装置 |
CN105824663A (zh) * | 2015-12-31 | 2016-08-03 | 维沃移动通信有限公司 | 后台应用清理方法及移动终端 |
CN106156628A (zh) * | 2015-04-16 | 2016-11-23 | 阿里巴巴集团控股有限公司 | 一种用户行为分析方法及装置 |
CN106407000A (zh) * | 2015-08-10 | 2017-02-15 | 联想移动通信科技有限公司 | 一种终端内存优化的方法、装置及系统 |
-
2017
- 2017-04-28 CN CN201710296937.1A patent/CN108804207A/zh active Pending
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140137227A1 (en) * | 2012-09-03 | 2014-05-15 | Tencent Technology (Shenzhen) Company Limited | Systems and Methods for Enhancement of Single Sign-On Protection |
CN103677893A (zh) * | 2012-09-19 | 2014-03-26 | 财团法人工业技术研究院 | 开机的映像文件的大小缩减方法及运算装置 |
CN104199669A (zh) * | 2014-09-12 | 2014-12-10 | 北京奇虎科技有限公司 | 对应用程序的进程进行管理的方法及装置 |
CN105718791A (zh) * | 2014-12-01 | 2016-06-29 | Tcl集团股份有限公司 | 一种保护应用程序数据的方法和装置 |
CN106156628A (zh) * | 2015-04-16 | 2016-11-23 | 阿里巴巴集团控股有限公司 | 一种用户行为分析方法及装置 |
CN106407000A (zh) * | 2015-08-10 | 2017-02-15 | 联想移动通信科技有限公司 | 一种终端内存优化的方法、装置及系统 |
CN105824663A (zh) * | 2015-12-31 | 2016-08-03 | 维沃移动通信有限公司 | 后台应用清理方法及移动终端 |
Non-Patent Citations (4)
Title |
---|
WOLFCSTECH: "Android low memory killer 机制", 《HANPFEI.GITHUB.IO/2015/10/04/LOWMEMORYKILLER/》 * |
ZHOUZHENGTING1: "LMK低内存管理机制", 《HTTPS://BLOG.CSDN.NET/ZHOUZHENGTING1/ARTICLE/DETAILS/48595821》 * |
吕为工等: "《嵌入式计算机系统设计》", 31 March 2017 * |
郑鹏等: "《linux原理与应用》", 31 March 2008 * |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2020197916A1 (en) * | 2019-03-22 | 2020-10-01 | Verifone, Inc. | Systems and methods for providing low memory killer protection to non-system applications |
US11281508B2 (en) | 2019-03-22 | 2022-03-22 | Verifone, Inc. | Systems and methods for providing low memory killer protection to non-system applications |
CN110096347A (zh) * | 2019-03-29 | 2019-08-06 | 努比亚技术有限公司 | 一种进程后台管理方法、终端及计算机可读存储介质 |
CN112306371A (zh) * | 2019-07-30 | 2021-02-02 | 伊姆西Ip控股有限责任公司 | 存储管理的方法、设备和计算机程序产品 |
CN110806926A (zh) * | 2019-09-05 | 2020-02-18 | 华为技术有限公司 | 一种资源管控方法及设备 |
CN112685088A (zh) * | 2019-10-17 | 2021-04-20 | 成都鼎桥通信技术有限公司 | 保护应用运行的方法、装置、设备及可读存储介质 |
CN114969719A (zh) * | 2022-05-27 | 2022-08-30 | 南京网藤科技有限公司 | 通过关键模块判定来防止错误拦截系统运行的方法及系统 |
CN114969719B (zh) * | 2022-05-27 | 2023-12-08 | 南京网藤科技有限公司 | 通过关键模块判定来防止错误拦截系统运行的方法及系统 |
CN115665311A (zh) * | 2022-10-25 | 2023-01-31 | 北京鸿途信达科技股份有限公司 | 一种手机定时优化后台进程的系统优化方法 |
CN115665311B (zh) * | 2022-10-25 | 2024-02-06 | 北京鸿途信达科技股份有限公司 | 一种手机定时优化后台进程的系统优化方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108804207A (zh) | 一种基于Android系统的进程管控方法 | |
CN106559395B (zh) | 一种基于工业网络的数据报文检测方法及装置 | |
CN104700037B (zh) | 保护云存储视频数据的方法及其系统 | |
CN106445604A (zh) | 一种应用程序的清理方法和装置 | |
CN102929768B (zh) | 提示误装软件的方法和客户端 | |
CN104281479B (zh) | 一种固件升级方法及装置 | |
CN103034803B (zh) | 误装软件提示系统 | |
CN111885005A (zh) | 一种容器云平台服务通信方法、装置、设备及介质 | |
CN105893166A (zh) | 一种处理内存错误的方法及装置 | |
CN109492406A (zh) | 监测内核漏洞攻击的方法、装置和系统 | |
CN111625841B (zh) | 一种病毒处理方法、装置及设备 | |
CN105095749A (zh) | 状态栏通知的接管方法及装置 | |
CN102622290A (zh) | 一种进程监控的方法及系统 | |
CN105045641B (zh) | 一种启动组件的界面的方法及装置 | |
CN105893471A (zh) | 一种数据处理方法及电子设备 | |
CN108509322A (zh) | 避免过度回访的方法、电子装置及计算机可读存储介质 | |
CN104461741B (zh) | 基于图形设备接口的计算设备优化方法及装置 | |
CN106161122A (zh) | 一种自动化集中监控预警方法及系统 | |
CN110472381A (zh) | 基于安卓系统的root权限隐藏方法、系统及存储介质 | |
CN106227569A (zh) | 一种应用升级方法及终端设备 | |
CN108334435A (zh) | 一种共享内存泄漏的提醒方法及装置 | |
CN103034636A (zh) | 一种非关系型数据库的回滚方法、装置及系统 | |
CN106406771A (zh) | 日志记录方法及日志记录器 | |
CN104104666A (zh) | 一种探测云端服务异常的方法和装置 | |
CN107016054A (zh) | 一种日志信息存储的方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20181113 |