android init進程說明

android是基於linux內核的,所以android的init進程是android應用程序的第1個進程。下面簡要說明一下該進程的處理流程,後續還要進一步細化。linux

1.註冊處理子進程的信號處理函數android

2.在根目錄下建立系統目錄以及mount必要的文件系統socket

3.在/dev目錄下建立null和kmsg設備節點函數

4.解析/init.rc文件ui

5.解析/proc/cmdline文件獲取必要的參數,如:qmeu, console, bootloader等隊列

6.經過分析/proc/cpuinfo獲取硬件類型,從而進一步解析/init.硬件類型.rc文件進程

7.執行early-init部分的服務cmd

8.根據netlink(/sys/block,/sys/class,/sys/devices)在/dev目錄下生成設備節點虛擬機

9.讀取/default.prop文件描述的屬性it

10.對於啓動內核的cmdline中有console的狀況則在/dev/目錄下建立該設備節點

11.在屏幕上顯示「ANDROID」字樣(android虛擬機上能看到)

12.進一步解析/proc/cmdline文件且設置對應的屬性和值

13.根據第5步驟分析的參數設置指定的屬性和值

14.執行init部分的服務

15.讀取系統屬性文件且建立socket監聽

16.建立本地socket監聽退出的子進程

17.執行early-boot和boot部分的服務

18.執行全部屬性對應的服務

19.執行全部的action隊列

20.從新啓動須要啓動的進程

21.監聽子進程退出文件描述符、屬性socket文件描述符、設備變化文件描述符,當對應的文件描述符有變化則調用對應的處理函數處理

22.從新回到第19步

相關文章
相關標籤/搜索