init啟動過程
1、init程序啟動如上圖。
2、init程序是android使用者系統中的第一個程序,程序号為1。
3、init程序主要做的工作
(1)建立和挂載啟動所需的系統檔案目錄(隻在系統運作時才會存在,系統停止時會消失)
(2)初始化和啟動系統所需的屬性服務
(3)解析init.rc配置檔案并啟動zygote程序
(4)監聽SIGCHLD信号,防止init程序中的子程序成為僵屍程序
僵屍程序
概念:父程序用fork建立子程序,子程序終止,父程序不知道,造成占用資源,被稱為僵屍程序
危害:系統程序表資源有限,僵屍程序占用,引起無法建立新程序。
init程序如何啟動子程序
1.init程序通過讀取init.rc這個配置檔案來建立系統運作時的子程序
2.init.rc檔案 可以想象中一個xml檔案,解析然後取出資料,取出的資料就是init程序建立子程序的資訊
3.init.rc 檔案中最重要的是Service類型語句,Service
類型語句封裝的子程序的資訊,init程序通過ServcieParser和ParseLineSection這兩個類解析Service語句,生成Service對象,并且存入Service隊列中。
4.init程序通過 init.rc 中的配置語句(比如程序名字) 循環周遊Service隊列,取出Service,然後建立子程序,通過Servcie中解析出的執行檔案,找到執行檔案的main函數,調用start則啟動了(比如Zygote,此時Zygote啟動了)
init程序啟動屬性服務
1.屬性服務是幹啥的?
答:其實就是系統啟動時被加載到記憶體的一些基礎配置資訊,這些配置資訊,系統啟動時就直接可以拿來用了,over