Android Zygote随记

Android Zygote随记,第1张

Android Zygote随记 Android Binder随记_暮冬一十四的博客-CSDN博客

init进程
    由pid为0的Linux内核进程启动启动系统关键进程: 执行init.rc脚本,执行脚本中一行一行的Linux命令来启动进程守护系统关键进程:如蓝牙、铃声、接打电话、安装应用等进程名结尾带“d”的系统进程当守护的进程被杀死时,重启被杀死的进程当守护的进程无法被重启时,重启手机:如Zygote

Zygote
    由init进程执行zygote.rc脚本启动的最开始启动的时候名字并不是叫Zygote,而是app_process在app_main.cpp中当解析到命令中有“--zygote”时,将app_process的名字改为了Zygote(niceName=ZYGOTE_NICE_NAME,可能是感觉app_process不好听吧)Zygote是native进程:由c++代码启动的;Zygote创建一个Server端的Socket,实现与其他进程通信提前加载系统资源、系统类;从而让APP进程不用重复加载系统资源、系统类;如Activity的Class、系统主题等ZygoteInit.java还去fork出了SystemServer这个java进程启动App时,Zygote还负责fork出App进程
与Zygote进程通信为什么要用Socket,而不是Binder?
    Zygote它负责开进程Binder效率太高了,而开进程又比较慢,用Binder同时发多个启动进程请求时,会让内存瞬间暴涨; 安全方面:容易被Hook;Socket:请求串行,执行完一个开进程,再执行下一个;

Android Framwork源码-PMS随记_暮冬一十四的博客-CSDN博客

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5712492.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存