天天看點

android--系統啟動--init程序啟動過程

init啟動過程

android--系統啟動--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

繼續閱讀