LMKD十 有问有答 - FAQ

Posted 高桐@BILL

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LMKD十 有问有答 - FAQ相关的知识,希望对你有一定的参考价值。

基于Android的车载操作系统 目录

这部分主要是记录下调查lmkd过程中想到的几个疑问,如果读者有其他的问题也可留言,我会根据自己的理解做出相应的分享。

1.ULMK中,进程查杀的adj与内存水位源自何处?

AMS会将查杀的进程adj和对应的内存水位写入/dev/socket/lmkd,最终在lmkd的处理函数中设置的属性sys.lmk.minfree_levels可以看到相关水位。在Runtime,AMS会根据进程状态来调整相应adj的值,并更新到lmkd;

lmkd使用proc结构体来管理进程,并通过size为PIDHASH_SZ的hash表和长度为ADJTOSLOT_COUNT的procadjslot_list来维护所有proc;

android_master/system/memory/lmkd/lmkd.cpp 
struct adjslot_list 
    struct adjslot_list *next;
    struct adjslot_list *prev;
;

struct proc 
    struct adjslot_list asl;
    int pid;
    int pidfd;
    uid_t uid;
    int oomadj;
    pid_t reg_pid; /* PID of the process that registered this record */
    struct proc *pidhash_next;
;

#define ADJTOSLOT(adj) ((adj) + -OOM_SCORE_ADJ_MIN)
#define ADJTOSLOT_COUNT (ADJTOSLOT(OOM_SCORE_ADJ_M

以上是关于LMKD十 有问有答 - FAQ的主要内容,如果未能解决你的问题,请参考以下文章

有问有答 | 算法和数据结构精华问答

Rust 有问有答之 use 关键字

Rust 有问有答之 use 关键字

Solr的知识点学习(Solr有问有答哦)

程序员面试攻略之基础技术题准备秘籍

有问必有答!身为Android开发者,想进入小米需要做什么准备?