Android系統全貌

轉自Gityuan的Android開篇,對自我學習作進一步整理。

Android系統以Linux內核作為基底,上層采用Native層Java層。系統分為內核空間和用戶空間,并通過系統調用(Syscall)連通。用戶空間主要采用C++和Java代碼實現,通過JNI技術連通Java層和Native層(C/C++)。

圖片來源 [GITYUAN](http://gityuan.com/android/)

Loader層

  • <b>Boot ROM</b>: 電源按下,引導芯片代碼開始從預定義的地方(固化在ROM)開始執行.加載引導程序到RAM,然后執行.
  • <b>Boot Loader</b>: 這是Android系統系統之前的引導程序,主要用來檢測外部的RAM以及設置網絡、內存、初始化硬件參數等.

Kernel層

Kernel層是指Android內核層,到這里才剛剛開始進入Android系統。

  • 啟動Kernel的<b>swapper進程</b>(pid=0):該進程又稱為idle進程, 系統初始化過程Kernel由無到有開創的第一個進程, 用于初始化進程管理、內存管理,加載Display,Camera Driver,Binder Driver等相關工作(圖中kernel層藍色區塊);
  • 啟動<b>kthreadd進程</b>(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 FramewordC++ 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

Andorid的啟動過程
Android進程整理

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容