Android系統全貌

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

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

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

Loader層

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

Kernel層

Kernel層是指Android內核層,到這裏纔剛剛開始進入Android系統。git

  • 啓動Kernelswapper進程(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進程app

  • 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進程整理ui

相關文章
相關標籤/搜索