Google官方提供了一張經(jīng)典的四層架構(gòu)圖,從下往上依次分為:Linux內(nèi)核、系統(tǒng)庫和Android運行時環(huán)境、框架層、應(yīng)用層,其中每一層都包含大量的子模塊或子系統(tǒng)。
Android系統(tǒng)啟動過程從下往上的一個過程:
Loader - > Kernel - > Native - > Framework - > App
1、Loader
Boot ROM:當手機處于關(guān)機狀態(tài)時,長按Power鍵開機,引導(dǎo)芯片開始從固化在ROM里的預(yù)設(shè)出代碼開始執(zhí)行,然后加載引導(dǎo)程序到RAM;
Boot Loader:這是啟動Android系統(tǒng)之前的引導(dǎo)程序,主要是檢查RAM,初始化硬件參數(shù)等功能。
2、Kernel
到這里才剛剛開始進入Android系統(tǒng).
啟動Kernel的0號進程:初始化進程管理、內(nèi)存管理,加載Display,Camera Driver,Binder Driver等相關(guān)工作;
啟動kthreadd進程(pid=2):是Linux系統(tǒng)的內(nèi)核進程,會創(chuàng)建內(nèi)核工作線程kworkder,軟中斷線程ksoftirqd,thermal等內(nèi)核守護進程。kthreadd進程是所有內(nèi)核進程的鼻祖。
Android基于Linux 提供核心系統(tǒng)服務(wù),
例如:安全、內(nèi)存管理、進程管理、網(wǎng)絡(luò)堆棧、驅(qū)動模型。Linux Kernel也作為硬件和軟件之間的抽象層,它隱藏具體硬件細節(jié)而為上層提供統(tǒng)一的服務(wù)。如果你只是做應(yīng)用開發(fā),就不需要深入了解Linux Kernel層
3、Native
啟動init進程(pid=1),是Linux系統(tǒng)的用戶進程,init進程是所有用戶進程的鼻祖。
init進程啟動Media Server(多媒體服務(wù))、servicemanager(binder服務(wù)管家)、bootanim(開機動畫)等重要服務(wù);
init進程還會孵化出installd(用于App安裝)、ueventd、adbd、lmkd(用于內(nèi)存管理)等用戶守護進程;
init進程孵化出Zygote進程,Zygote進程是Android系統(tǒng)的第一個Java進程,Zygote是所有Java進程的父進程,Zygote進程本身是由init進程孵化而來的。
4、Framework
Zygote進程,是由init進程通過解析init.rc文件后fork生成的,Zygote進程主要包含:- 加載ZygoteInit類,注冊Zygote Socket服務(wù)端套接字;-加載虛擬機;- PreloadClasses;-PreloadResouces。
Zygote進程fork出System Server進程,System Server是Zygote孵化的第一個進程,地位非常重要。
System Server進程:負責啟動和管理整個Java framework,包含ActivityManager,PowerManager等服務(wù)。
Media Server進程:負責啟動和管理整個C++ framework,包含AudioFlinger,Camera Service等服務(wù)。
5、App
Zygote進程孵化出的第一個App進程是Launcher,這是用戶看到的桌面App;
Zygote進程還會創(chuàng)建Browser,Phone,Email等App進程,每個App至少運行在一個進程上。
所有的App進程都是由Zygote進程fork生成的。
-
Android
+關(guān)注
關(guān)注
12文章
3973瀏覽量
130208 -
RAM
+關(guān)注
關(guān)注
8文章
1392瀏覽量
117463
原文標題:Android系統(tǒng)架構(gòu)及啟動流程
文章出處:【微信號:Imgtec,微信公眾號:Imagination Tech】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
詳解STM32啟動過程
Linux和Windows系統(tǒng)啟動過程的簡單分析
關(guān)于Android系統(tǒng)啟動的理解
FreeRTOS系統(tǒng)啟動過程
嵌入式Linux系統(tǒng)的構(gòu)成和啟動過程
系統(tǒng)啟動過程
嵌入式uCLinux內(nèi)核啟動過程分析
走進Linux之systemd啟動過程
MCU和SOC啟動過程對比

stm32啟動過程

logd的啟動過程和內(nèi)容

評論