android啟動隨筆

https://mp.weixin.qq.com/s/AtXlQGuWv4ad4YcU50gSBw

開機加載 boot loader ,啟動0號進程 init_task
init_task 兩個階段 引導+啟動。
引導是 匯編語言
啟動 走 start_kernel(kernel\common\init\main.c)
start_kernel 啟動進程pid 1 kernel_init 以及 pid 2 kthreadd
kernel_init 最終執行 system/core/init 編譯出來的二進制文件
最終執行的是system\core\init\main.cpp#main
core init 啟動Epoll來處理多路IO復用。并且啟動RC加載文件。
其中zygote就在rc中被加載啟動。
zygote 代碼 在frameworks/base/cmds/app_process/app_main.cpp
反射啟動 runtime.start("com.android.internal.os.ZygoteInit", args, zygote); main
執行 frameworks/base/core/java/com/android/internal/os/ZygoteInit.java main
main 中forkSystemServer ,自身執行 runSelectLoop,循環等待響應新的進程
forkSystemServer 中反射執行 SystemServer#main

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容