歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

Android系統啟動過程淺談

一、 系統啟動流程簡介

在Linux內核啟動後,init 1(1號進程)將作為第一個用戶空間(Linux虛擬內存的大小為232(在32位的x86機器上),內核將這4G字節的空間分為兩部分。最高的1G字節供內核使用,稱為“內核空間”。而較低的3G字節供各個進程使用,稱為“用戶空間”。)的進程來啟動Android系統,該啟動流程可以分為如下5個階段,如下圖:

 

(1) 啟動准備:該階段包括創建文件系統的基本目錄、打開基本輸入、輸出設備,初始化日志功能等;

(2) 解析init.rc文件:該階段對init.rc腳本文件進行解析,主要對Service(服務)和Action(動作)進行解析。其中,Service由命令(Command)和一系列服務的附加內容(Option,選項)組成,如:“service vold /system/bin/vold”為一個Service,而“socket vold stream 0660 root mount“則為配合該服務使用的Option;Action則由一系列的命令組成,如:“on init mkdir /system”為系統初始化時建立系統文件夾的Action;

(3) 觸發需要執行的action:Action需要在Triggers(觸發條件)中調用,本階段對需要執行的Action進行觸發,並根據觸發條件將需要執行的Action放入Action隊列;

(4) 執行在action隊列中的命令:對上一階段觸發的Action以及Service進行執行。並在此過程中,派生了Zygote和Service Manager兩個非常重要的進程;

(5) 循環處理事件:init進程進入無限循環,處理設備插入/拔出,服務屬性狀態變化和signal事件等。

Copyright © Linux教程網 All Rights Reserved