Android系统全貌 (转)
轉自Gityuan的Android開篇,對自我學習作進一步整理。
Android系統以Linux內核作為基底,上層采用Native層和Java層。系統分為內核空間和用戶空間,并通過系統調用(Syscall)連通。用戶空間主要采用C++和Java代碼實現,通過JNI技術連通Java層和Native層(C/C++)。
圖片來源 GITYUAN
Loader層
- Boot ROM: 電源按下,引導芯片代碼開始從預定義的地方(固化在ROM)開始執行.加載引導程序到RAM,然后執行.
- Boot Loader: 這是Android系統系統之前的引導程序,主要用來檢測外部的RAM以及設置網絡、內存、初始化硬件參數等.
Kernel層
Kernel層是指Android內核層,到這里才剛剛開始進入Android系統。
- 啟動Kernel的swapper進程(pid=0):該進程又稱為idle進程, 系統初始化過程Kernel由無到有開創的第一個進程, 用于初始化進程管理、內存管理,加載Display,Camera Driver,Binder Driver等相關工作(圖中kernel層藍色區塊);
- 啟動kthreadd進程(pid=2):是Linux系統的內核進程,會創建內核工作線程kworkder,軟中斷線程ksoftirqd,thermal等一系列內核守護進程。kthreadd進程是所有內核進程的父進程。
Linux內核加載主要包括初始化kernel核心(內存初始化,打開中斷,初始化進程表等)、初始化驅動、啟動內核后臺(daemons)線程、安裝根(root)文件系統等。后續啟動第一個用戶級進程init(pid=1).
Native層
Native層主要包括啟動init進程(Android的第一個用戶空間進程)、HAL層(硬件抽象層)以及開機動畫等。init進程是所有用戶進程的鼻祖。同時init進程也會孵化一系列用戶進程,還會啟動關鍵的服務以及孵化Zygote進程。
- init進程會孵化出ueventd、logd、healthd、installd、adbd、lmkd等用戶守護進程;
- init進程還啟動servicemanager(binder服務管家)、bootanim(開機動畫)等重要服務
- init進程孵化出Zygote進程,Zygote進程是Android系統的第一個Java進程,Zygote是所有Java進程的父進程,Zygote進程本身是由init進程孵化而來的。
- kthreadd進程: 是所有內核進程的父進程
- init進程 : 是所有用戶進程的父進程(或者父父進程)
- zygote進程 : 是所有上層Java進程的父進程,另外zygote的父進程是init進程。
Framework層
如圖,Framework層分為Java Frameword和C++ Framework,分別由system_server進程和media_server進程負責啟動和管理。
Zygote本身是一個Native的應用程序,剛開始的名字為“app_process”,運行過程中,通過系統調用將自己名字改為Zygote。在圖中的紅色線,便是Zygote fork出來的進程,所有的App進程都是由Zygote fork產生的。
image.png
- Zygote進程,是由init進程通過解析init.rc文件后fork生成的,Zygote進程主要包含:
加載ZygoteInit類,注冊Zygote Socket服務端套接字;
加載虛擬機;
preloadClasses;
preloadResouces。 - System Server進程,是由Zygote進程fork而來,System Server是Zygote孵化的第一個進程,System Server負責啟動和管理整個Java framework,包含ActivityManager,PowerManager等服務。
- Media Server進程,是由init進程fork而來,負責啟動和管理整個C++ framework,包含AudioFlinger,Camera Service,等服務。
App層
- Zygote進程孵化出的第一個App進程是Launcher,這是用戶看到的桌面App;
- Zygote進程還會創建Browser,Phone,Email等App進程,每個App至少運行在一個進程上。
- 所有的App進程都是由Zygote進程fork生成的。
Syscall && JNI
- Native與Kernel之間有一層系統調用(SysCall)層,見Linux系統調用(Syscall)原理;
- Java層與Native(C/C++)層之間的紐帶JNI,見Android JNI原理分析。
Andorid的啟動過程
Android進程整理
?
轉載于:https://www.cnblogs.com/benchao/p/6243473.html
總結
以上是生活随笔為你收集整理的Android系统全貌 (转)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 闭包1
- 下一篇: bzoj1078【SCOI2008】斜堆