梳理一下Android 系統啟動流程
Android系統是一款基於Linux的開源系統,系統的架構劃分為:系統應用層、Java API Framework層、native C/C++庫和Android 執行時、硬體抽象層、和Linux核心層。
各層級之間的銜接關係可以以程式的視角來理解。如下圖,
-
當按下手機的開機鍵,會引導晶片從固化在ROM利的預設程式碼開始執行,載入載入程式到RAM
-
然後啟動Android系統的載入程式Boot Loader
載入程式的主要作用是:1 檢測外部的RAM;2 載入程式設定網路、記憶體等。 -
進入核心層
①啟動swapper程式(pid = 0,又叫idle程式,是系統初始化過程中開創的第一個程式),用於初始化程式管理、記憶體管理,載入Display,Camer Driver,Binder Driver等工作。
②啟動kthreadd程式(pid = 2),是Liunx系統的核心程式,會建立核心工作執行緒kworkder,是所有核心程式的鼻祖
pid:是程式號 -
當kernel啟動過程中會建立init程式(pid = 1),init程式是使用者空間的第一個程式。
-
init程式會啟動Zygote程式、serviceManager。Zygote程式是所有app的父程式
-
接著Zygote程式fork出systemserver程式提供給所有app。
圖片參考自 http://gityuan.com/images/android-arch/android-boot.jpg
相關文章
- Linux作業系統啟動流程梳理Linux作業系統
- Android 系統啟動流程Android
- Android系統啟動流程(四)Launcher啟動過程與系統啟動流程Android
- Android系統啟動流程(二)解析Zygote程式AndroidGo
- Android系統原始碼分析–Service啟動流程Android原始碼
- Android系統啟動流程(一)解析init程式Android
- Android系統原始碼分析--Service啟動流程Android原始碼
- Android系統啟動流程(三)解析SyetemServer程式啟動過程AndroidServer
- Android 系統原始碼-1:Android 系統啟動流程原始碼分析Android原始碼
- 系統的啟動流程
- Android小知識-深入淺出Android系統啟動流程(上)Android
- Android小知識-深入淺出Android系統啟動流程(下)Android
- (連載)Android 8.0 : 系統啟動流程之init程式(二)Android
- (連載)Android 8.0 : 系統啟動流程之init程式(一)Android
- (連載)Android 8.0 : 系統啟動流程之Linux核心AndroidLinux
- Linux系統啟動流程圖Linux流程圖
- 標題:Windows系統啟動流程Windows
- 【android 7.1.2】系統啟動Android
- FlutterEngin啟動流程&androidFlutterAndroid
- 談談Linux系統啟動流程Linux
- linux系統開機啟動流程Linux
- Android系統流程Android
- Android系統啟動自動開啟mtklogAndroid
- Android 系統啟動過程Android
- Android 9.0 init 啟動流程Android
- Android 應用啟動流程Android
- Android APP 冷啟動流程AndroidAPP
- android app啟動流程解析AndroidAPP
- android系統啟動之PMS啟動原始碼解析Android原始碼
- Android系統啟動過程剖析Android
- Android應用啟動流程分析Android
- android重新啟動應用程式和重新啟動系統 .Android
- 征服Android面試官路漫漫(四):5 張圖帶你搞懂Android系統啟動的核心流程Android面試
- Flutter Android 端啟動流程淺析FlutterAndroid
- Android Activity啟動流程原始碼分析Android原始碼
- Android App應用啟動流程(一)AndroidAPP
- Android原始碼分析:Activity啟動流程Android原始碼
- [譯]Android Application 啟動流程分析AndroidAPP