Android框架結(jié)構(gòu)了解

Android是一個非常龐大,非常復(fù)雜的系統(tǒng)工程,通過系統(tǒng)調(diào)用(Syscall)連通系統(tǒng)的用戶空間和系統(tǒng)空間,通過JNI(Java Native Interface)連接用戶空間中的Java層和Native層(C++/Java)。

Google官方發(fā)布的Android四層架構(gòu)圖,將Android按照模塊自下而上分為Linux Kernel(Drivers)、Libraries(Android Runtime)、Application Framework(Managers)、Application。

GitYuan將Android框架按照進程的啟動視角分為Loader、Kernel、Native、Framework、App五層。

1、Loader:

Boot ROM:當手機處于關(guān)機狀態(tài),長安電源將i難道芯片執(zhí)行固化在ROM內(nèi)的內(nèi)的代碼,并加載引導(dǎo)程序到RAM中;

Boot Loader:啟動Android系統(tǒng)之前的引導(dǎo)程序,主要是檢查RAM、初始化硬件參數(shù)。

2、Kernel:

啟動Kernel的Swapper進程(pid=0),初始化內(nèi)存管理、進程管理/加載Driver;

啟動Kernel的kthreadd進程(pid=2),該進程是內(nèi)核進程,創(chuàng)建內(nèi)核工作線程kworkder、軟中斷線程ksoftirqd、thermal等內(nèi)核守護線程。kthreadd進程是所有內(nèi)核進程的鼻祖。

3、Native:

包括init孵化而來的用戶空間的守護進程、HAL層以及開機動畫等。init進程的pid=1.init進程是所有用戶進程的鼻祖。

init進程孵化出Zygote進程,Zygote進程是Android系統(tǒng)的第一個Java進程(即虛擬機進程),Zygote是所有Java進程的父進程。

4、framework:

Zygote進程,是由init進程孵化而來的進程,是所有java層進程的母體,所有的java層進程都是由Zygote孵化而來的。

System Server進程

Media Server進程

5、App層:

Zygote進程孵化出的第一個App進程是Launcher,這是用戶看到的桌面App;

Zygote進程還會創(chuàng)建Browser,Phone,Email等App進程,每個App至少運行在一個進程上。

所有的App進程都是由Zygote進程fork生成的。

通信方式:

IPC(Inter-Process Communication,進程間通信),Linux目前有管道、消息隊列、共享內(nèi)存、套接字、信號量、信號通信方式,Android額外提供Binder通信方式。

Binder/Socket用于進程間通信,而Handler消息機制用于同進程的線程間通信。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容