android init進程說明
android是基于linux內核的,因此android的init進程是android應用程序的第1個進程。下面簡要說明一下該進程的處理流程,后續還要進一步細化。
1.注冊處理子進程的信號處理函數
2.在根目錄下創建系統目錄以及mount必要的文件系統
3.在/dev目錄下創建null和kmsg設備節點
4.解析/init.rc文件
5.解析/proc/cmdline文件獲取必要的參數,如:qmeu, console, bootloader等
6.通過分析/proc/cpuinfo獲取硬件類型,從而進一步解析/init.硬件類型.rc文件
7.執行early-init部分的服務
8.根據netlink(/sys/block,/sys/class,/sys/devices)在/dev目錄下生成設備節點
9.讀取/default.prop文件描述的屬性
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步
本文由用戶 openkk 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!