Android系統啓動總結
-
init進程
android系統中用戶空間第一個進程。當我們按下電源鍵,系統啓動會加載引導程序,引導程序會把linux內核啓動起來,linux內核加載完成後,第一件事就是要啓動init進程。
總結:init進程中主要做的幾件事:
-
創建和掛載啓動所需的文件目錄
-
初始化和啓動屬性服務
(windows平臺上有一個註冊表管理器,其內容採用鍵值對的形式記錄用戶、軟件的使用信息,即使系統和軟件重啓,還能夠根據之前註冊表中的記錄,進行相應初始化工作。Android中也提供了類似機制,叫屬性服務)
-
啓動
zygote
進程
-
-
zygote進程
android中的虛擬機:DVM、ART和應用程序以及系統的關鍵服務SystemServer進程都是由Zygote進程創建的。
總結:zygote進程中主要做了幾件事:
- 創建Java虛擬機並註冊JNI方法
- 通過JNI調用ZygoteInit的main函數進入Zygote的Java框架層
- 創建socket服務端,等待AMS的請求來創建新的應用程序進程
- 啓動SystemServer進程
-
system_server進程
主要用於創建系統服務,比如熟知的AMS、WMS和PMS等。
總結
-
啓動Binder線程池,這樣就可以與其他進程進行通信
-
創建SystemServiceManager,對系統服務進行創建、啓動等管理
-
啓動各種系統服務
-
-
Launcher(桌面程序)
這個應用程序用來展示、打開、卸載系統中已安裝的應用程序