首页|嵌入式系统|显示技术|模拟IC/电源|元件与制造|其他IC/制程|消费类电子|无线/通信|汽车电子|工业控制|医疗电子|测试测量
首页 > 分享下载 > 消费类电子 > Android内核驱动—内存管理

Android内核驱动—内存管理

资料介绍
Android内核驱动—-内存管理_1345772063359第十四章 Android 内核驱动――内存管理
14.1 Low Memory Killer
基本原理
Android 的 Low Memory Killer 是在标准 linux kernel 的 OOM 基础上修改而来的一种内存管理 机制, 当系统内存不足时, 杀死 Bad 进程释放其内存。 Bad 进程的选择标准有两个: oom_adj 和占用内存的大小。 oom_adj 代表进程的优先级, 数值越大, 优先级越高, 对应每个 oom_adj 都有一个空闲内存的阈值。Android Kernel 每隔一段时间会检查当前空闲内存是否低于某个 阈值, 如果是, 则杀死 oom_adj 最大的 Bad 进程, 如果有两个以上 Bad 进程 oom_adj 相同, 则杀死其中占用内存最多的进程。

Low Memory Killer 与 OOM 的区别
OOM 即 Out of Memory 是标准 linux Kernel 的一种内存管理机制,Low Memory Killer 在它基 础上作了改进: OOM 基于多个标准给每个进程打分,分最高的进程将被杀死;Low Memory Killer 则用 oom_adj 和占用内存的大小来选择 Bad 进程 OOM 在内存分配不足时调用,而 Low Memory Killer 每隔一段时间就会检查,一旦发现 空闲内存低于某个阈值,则杀死 Bad 进程。

Low Memory Killer 的实现
Low Memory Killer 的源代码在 drivers/staging/android/lowmemorykiller.c 中,它是通过注册 Cache Shrinker 来实现的。Cache Shrinker 是标准 linux kernel 回收内存页面的一种机制,它由 内核线程 kswapd 监控,当空闲内存页面不足
Android内核驱动—内存管理
本地下载

评论