Android啟動流程
介紹
Android啟動流程是啟動計算機以供使用的過程。可以透過開啟電源來啟動計算機系統。啟動計算機時,它只能讀取稱為只讀儲存器的一部分儲存空間。啟動計算機時會啟動一個小型程式,該程式儲存並稱為韌體。它允許訪問其他型別的記憶體,例如主記憶體和硬碟。韌體用於載入大型程式並將其執行到計算機的主記憶體中。無論是在移動裝置、計算機系統還是其他裝置上,所有裝置都會執行啟動管理器。
Android的啟動流程分為6個步驟,如下所示:
引導ROM。
引導載入程式。
核心。
Init程序。
Zygote和Dalvik虛擬機器。
系統服務。
引導ROM
引導ROM是在系統啟動時計算機電源開啟時呼叫的步驟。當系統開啟電源時,引導ROM程式碼開始從ROM中預定義的硬編碼位置執行一組指令。引導ROM將引導載入程式載入到RAM中並開始執行。
引導載入程式
引導載入程式是在Android作業系統啟動之前執行的小程式。手機制造商會在引導載入程式中設定他們的鎖和限制。引導載入程式包含在啟動任何作業系統之前執行的程式碼。引導載入程式執行以下兩個步驟:
在第一階段,引導載入程式檢測裝置的外部RAM並在其中載入程式以用於第二階段。
在第二階段,引導載入程式設定執行核心所需的記憶體和網路。
核心
Android作業系統由包含Linux核心以及一系列使用者空間應用程式和庫的作業系統組成。核心是作業系統的最低層,它直接與硬體互動併為使用者空間元件提供基本服務。當核心完成系統設定後,它會在系統檔案中查詢init並啟動系統的root程序或第一個程序。
Init程序
Init是Android裝置上執行的第一個使用者空間程序。它負責啟動其他使用者空間程序和服務,以及設定裝置環境。此程序讀取/init.rc目錄中的配置檔案並啟動必要的服務和守護程式。Init是第一個以root許可權執行的程序,它負責設定裝置的安全策略、掛載檔案系統和設定網路。它還啟動Android執行時,該執行時負責執行Android框架和應用程式。
Zygote和Dalvik虛擬機器
Zygote是一個虛擬機器程序,它在系統啟動時啟動。當應用程式程序啟動Zygote時,它會建立Dalvik虛擬機器,然後呼叫Zygote的主方法以接收透過dev/zygote啟動應用程式的請求。啟動應用程式後,將觸發fork()方法,該方法將建立自身的克隆以將其複製到另一個記憶體空間。
系統服務
當Zygote載入所有Java類和資源後,它將啟動系統服務。此伺服器是Android系統的核心。此係統服務載入android_servers原生庫以提供對原生功能的介面。然後,原生init方法將設定呼叫的原生服務。建立服務後,將建立伺服器執行緒。其餘服務將根據特定順序由執行緒啟動。一旦系統服務開始在記憶體中執行,Android的啟動過程就完成了,此時將觸發“ACTION_BOTT_COMPLETED”操作。
結論
在本文中,我們瞭解了Android中的啟動流程是什麼,以及啟動流程中包含的各種程序。