android系統(tǒng)啟動過程(1)

android系統(tǒng)啟動過程(1)

ID:11692652

大?。?71.00 KB

頁數(shù):9頁

時間:2018-07-13

android系統(tǒng)啟動過程(1)_第1頁
android系統(tǒng)啟動過程(1)_第2頁
android系統(tǒng)啟動過程(1)_第3頁
android系統(tǒng)啟動過程(1)_第4頁
android系統(tǒng)啟動過程(1)_第5頁
資源描述:

《android系統(tǒng)啟動過程(1)》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。

1、1Android系統(tǒng)的啟動過程1.1啟動過程Android系統(tǒng)完整的啟動過程,可分為Linux系統(tǒng)層、Android系統(tǒng)服務(wù)層、Zygote進程模型三個階段,從開機到啟動HomeLauncher完成具體的任務(wù)細節(jié)可分為七個步驟。1.啟動BootLoader2.加載系統(tǒng)內(nèi)核3.啟動Init和其它重要守護進程4.啟動Zygote進程5.啟動Runtime進程,初始化ServiceManager。ServiceManager用于binder通訊,負責(zé)綁定服務(wù)的注冊與查找。6.啟動SystemService7.啟動HomeLaucher8.啟動其它應(yīng)用程序1.1.1BootLoader

2、Android系統(tǒng)是基于Linux操作系統(tǒng)的,所以它最初的啟動過程和Linux一樣。當設(shè)備通電后首先執(zhí)行BootLoader引導(dǎo)裝載器,BootLoader是在操作系統(tǒng)內(nèi)核運行之前運行的一段小程序。通過這段小程序初始化硬件設(shè)備、建立內(nèi)存空間映射圖,從而將系統(tǒng)的軟硬件環(huán)境引導(dǎo)進入合適的狀態(tài),以便為最終調(diào)用操作系統(tǒng)內(nèi)核準備好正確的運行環(huán)境。1.1.2啟動Init和守護進程當系統(tǒng)內(nèi)核加載完成之后,會首先啟動Init守護進程,它是內(nèi)核啟動的第一個用戶級進程,進程號永遠是1。當Init進程啟動后,如(圖11)它還負責(zé)啟動其他的一些重要守護進程,主要包括:Usbd進程(USBDaemon

3、):USB連接后臺進程,負責(zé)管理USB連接。adbd進程(AndroidDebugBridgeDaemon):ADB連接后臺進程,負責(zé)管理ADB連接。debuggerd進程(DebuggerDaemon):調(diào)試器后臺進程,負責(zé)管理調(diào)試請求及調(diào)試過程。rild進程(RadioInterfaceLayerDaemon):無線接口層后臺進程,負責(zé)管理無線通信服務(wù)。圖11Init和其它重要守護進程的啟動,圖片來源:http://www-igm.univ-mlv.fr/~dr/XPOSE2008/android/fonct.html1.1.1啟動Zygote進程如(圖12)所示,當I

4、nit進程和一些重要的守護進程啟動完成之后,將啟動Zygote進程。Zygote進程在系統(tǒng)運行期間,當接收到創(chuàng)建虛擬機請求時,將孵化DalvikVM實例。圖12Zygote進程的啟動Zygote進程啟動后,首先初始化一個DalvikVM實例,然后為它加載資源與系統(tǒng)共享庫,并開啟Socket監(jiān)聽服務(wù),當收到創(chuàng)建DalvikVM實例請求時,會通過COW(copyonwrite)技術(shù)最大程度地復(fù)用自己,生成一個新的DalvikVM實例。DalvikVM實例的創(chuàng)建方法基于linux系統(tǒng)的fork原理。Zygote進程孵化DalvikVM實例流程如(圖13)所示:圖13Zygote

5、進程孵化DalvikVM實例流程1.1.2啟動Runtime進程和初始化ServiceManager當Zygote進程啟動完成之后,Init進程會啟動Runtime進程。Runtime進程首先初始化服務(wù)管理器(ServiceManager),并把它注冊為綁定服務(wù)(Binderservices)的默認上下文管理器,負責(zé)綁定服務(wù)的注冊與查找。圖14Runtime進程啟動過程1.1.1啟動系統(tǒng)服務(wù)當Runtime進程啟動ServiceManager后,將會啟動SystemService。SystemService的啟動流程如下所示:1)如(圖15)所示,Runtime進程向Zyg

6、ote進程發(fā)送啟動系統(tǒng)服務(wù)(SystemService)的請求,Zygote進程收到請求后,會“孵化”出一個新的DalvikVM實例并啟動系統(tǒng)服務(wù)進程。2)如(圖16)所示,SystemService首先啟動兩個本地服務(wù)(由C或C++編寫的native服務(wù)):SurfaceFlinger和AudioFlinger。這兩個本地系統(tǒng)服務(wù)向服務(wù)管理器注冊成為IPC服務(wù)對象,以便在需要它們的時候很容易查找到。3)如(圖17所示),SystemService然后啟動一些Java層的Android系統(tǒng)管理服務(wù),包括硬件服務(wù)和系統(tǒng)框架核心平臺服務(wù),并將它們注冊成IPC服務(wù)對象。這些服務(wù)啟

7、動的代碼位于SystemServer.java的run函數(shù)當中。4)當SystemService加載完所有的系統(tǒng)服務(wù)后就意味著系統(tǒng)就準備好了,整個系統(tǒng)的進程圖如(圖18)。然后SystemService會向所有服務(wù)發(fā)送一個系統(tǒng)準備完畢(systemready)的廣播消息。圖15SystemServer啟動過程圖16AndroidNativeSystemservice的啟動圖17Androidmanagedservices的啟動圖18系統(tǒng)準備完畢1.1.1啟動Launcher如(圖1

當前文檔最多預(yù)覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動畫的文件,查看預(yù)覽時可能會顯示錯亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負責(zé)整理代發(fā)布。如果您對本文檔版權(quán)有爭議請及時聯(lián)系客服。
3. 下載前請仔細閱讀文檔內(nèi)容,確認文檔內(nèi)容符合您的需求后進行下載,若出現(xiàn)內(nèi)容與標題不符可向本站投訴處理。
4. 下載文檔時可能由于網(wǎng)絡(luò)波動等原因無法下載或下載錯誤,付費完成后未能成功下載的用戶請聯(lián)系客服處理。