Android啟動過程的分析

2021-09-23 02:45:05 字數 2066 閱讀 5377

本文講的是android啟動過程的分析

大多數智慧型手機使用者使用的android作業系統的功能和操作過程都比較複雜。

對於android作業系統的初學者來說,引導過程,只不過是終端使用者的一些花哨的影象和動畫。但當你閱讀完這篇文章後,你可能會打破原來對引導過程的狹隘思維。

基本核心過程

引導rom >引導引導程式 >核心 > init過程》 zygote > dalvik v m >系統伺服器 >管理器

該過程是android啟動的核心過程,下面讓我來詳細介紹每一步及其並行操作(如果有的話)。

引導rom

一旦android作業系統開始執行,就會執行負責「boot rom」部分的**。起始**恰好是預定義的硬編碼位置,**將引導引導程式載入到ram中並開始執行。

引導程式

雖然引導程式只是android系統的一小部分,但卻非常重要。你可能已經聽說過oem或製造商放置的某些限制和規則,而引導程式正是儲存所有這些「規則」的地方。一開始提到的「引導引導程式」的過程其實包括兩個階段:

第一階段:檢測ram。引導引導程式檢測ram並執行啟動第二步所需的應用程式。

第二步:設定。引導引導程式現在繼續設定網路、低階記憶體管理和安全選項。

這一步對於執行核心至關重要。位於/ bootable / bootloader / legacy / usbloader的引導引導程式包含兩個非常重要的檔案,即init.s和main.c。

init.s檔案基本上負責的是初始化棧, 0和bss段,然後繼續在main.c.中初始化call_main()。 main.c檔案在並行建立linux標籤的同時初始化硬體,特別是時間,控制台和鍵盤。

核心

android核心的初始化過程模仿的是linux核心的初始化,當核心執行時,它將快取記憶體,受保護的記憶體設定為不同的載入驅動程式。當完成所有設定和排程驅動程式後,核心會在系統檔案中查詢init。

初始化過程

init過程是相當重要的一步,這一步,不僅會安裝/ sys和/ dev等目錄或分割槽,還會啟動init.rc指令碼。 init程序位於/ init,而init.rc指令碼位於/ rootdir。

zygote和dalvik vm

zygote是乙個vm程序,會在系統啟動時啟動。它可以實現dalvik vm的**共享,從而有助於把啟動時間降至最低。 zygote還確保更低的記憶體占用,使dalvik vm不會消耗大量記憶體。此外,它還會初始化核心庫類。

zygote載入過程的框架看起來與開頭概述的框架完全相同:

載入zygote init類 > registerzygotesocket() > preloadclasses() > preloadresources() >使用者看到啟動的動畫

系統伺服器

在這一步,zygote會要求乙個新的過程,這樣以下的過程才會啟動,處理和執行。

啟動電源管理器 >建立活動管理器 >啟動**登錄檔 >啟動包管理器 >將活動管理器服務設定為系統程序 >啟動上下文管理器 >啟動系統聯絡人 >啟動電池服務 >啟動警報管理 >啟動 >感測器服務 >啟動視窗管理器 >啟動藍芽服務 >啟動安裝服務 >啟動狀態列服務 >啟動硬體服務 >啟動netstat服務 >啟動連線服務 >啟動通知管理器 >啟動devicestoragemonitor服務 >啟動位置管理器 >啟動搜尋服務 >啟動剪貼簿服務 >啟動檢查服務 >啟動牆紙服務 >啟動音訊服務 >啟動headsetobserver >啟動adbsettingsobserver >呈現到使用者眼前

分析

現在,啟動就已經全部完成,與此同時服務已啟動並執行,這時,你可能需要了解建立日誌的一些方法。

使用adb logca從啟動過程獲取日誌,你可以按照相應順序輸入以下命令:

adb logcat –d –b events | grep 「boot」

adb logcat –d | grep preload```

原文發布時間為:2023年9月4日

Android啟動過程分析 1

從系統的角度看,android的啟動過程可以分為bootloader引導 裝載和啟動linux核心,啟動andorid系統的3個大的階段。其中android系統的啟動還可以細分為啟動init程序,啟動zygote,啟動sytemserver,啟動各項服務等多個階段。1 bootloader的引導 b...

Android啟動過程

android啟動過程之image分析過程 android在啟動的時候,會由uboot傳入乙個init引數,這個init引數指定了開機的時候第乙個執行的程式,預設就是init程式,這個程式在ramdisk.img中。可以分析一下它的 看看在其中到底做了一些什麼樣的初始化任務,它的原始檔在system...

ARM Linux啟動過程分析

5 呼叫 linux核心映像 bootloader完成的最後一項工作便是呼叫 linux核心。如果 linux 核心存放在 flash 中,並且可直接在上面執行 這裡的 flash 指 nor flash 那麼可直接跳轉到核心中去執行。但由於在 flash 中執行 會有種種限制,而且速度也遠不及 r...