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