文章正文
进程退出时,内存回收流程
在android优化中,有一个是技术是ZRAM,ZRAM是基于swap技术的,前几天同事问了个问题,linux内核中通过kswapd或是直接reclaim一个进程到zram中,如果这个进程被杀,那这个进程对应在ZRAM中的内存会不会先解压然后在free,这个问题以前只是知道不会解压的,具体的流程不是很清楚,用了两天时间搞了明白,现在先上图:
进程退出最终调用的是do_exit函数,然后通过一层层vma,pud,pmd,pte找到所有的page,对应page如果是在swap中的,通过swap_slot_free_notify回调调用swap设备中的notify方法,直接释放swap中的页,如果不是在swap中最终通过调用free_pages_and_swap_cache释放到buddy系统中,这里如果是0阶页通过free_hot_cold_page释放到pcp中,如果是高阶页使用put_compound_page释放。
这里还有个没搞清楚的地方,因为没找到高阶页一定是复合页的代码,所以这里可能理解有误,后面需要在仔细确认一下,如有清楚的大神,可以直接告诉我。
July 29, 2017, 8:27 a.m. 作者:zachary 分类:Linux相关 阅读(2164) 评论(0)
评论列表:
评论: