Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android系統啟動流程

Android系統啟動流程

編輯:關於Android編程

我們先來看一張圖,它清晰的說明了整個Android系統的啟動流程,參考Android內核開發:圖解Android系統的啟動過程。

/

第一階段:Android設備上電後,首先會從處理器片上ROM的啟動引導代碼開始執行,片上ROM會尋找Bootloader代碼,並加載到內存。(這一步由“芯片廠商”負責設計和實現)


第二階段:Bootloader開始執行,首先負責完成硬件的初始化,然後找到Linux內核代碼,並加載到內存。(這一步由“設備廠商”負責設計和實現)


第三階段:Linux內核開始啟動,初始化各種軟硬件環境,加載驅動程序,掛載根文件系統,並執行init程序,由此開啟Android的世界。(這一步則是Android內核開發過程中需要涉及的地方)

 

第四階段:Linux內核啟動了系統中的第一個進程,init進程,也是root進程。通過腳本文件init.rc啟動如下服務。

1、它啟動了一些本地服務(Local Service),也指運行在C++層的系統守護進程,如Service Manager,Installd(後面我們會講到),Zygote。

2、啟動了一些Android Service,Android服務是指運行在Dalvik虛擬機進程中的服務。

每一個由init直接啟動的本地服務都是一個獨立的Linux進程

 

Init進程啟動Service Mananger

init.rc位於system/core/rootdir/init.rc中,其中啟動servicemanger的代碼為:

 

service servicemanager /system/bin/servicemanager
    user system
    critical
    onrestart restart zygote
    onrestart restart media
第一行關鍵字service表明Service Manager是以服務的形式啟動的,它對應的程序文件和進程名稱分別為/system/bin/servicemanager和servicemanager。
第二行的關鍵字user表明Service Manager是以系統用戶system的身份運行的。

 

第三行的關鍵字critical表明Service Manger是系統的一個關鍵服務。在系統的運行過程中,關鍵服務是不可以退出的,一旦退出,就會被系統重啟。

第四行和第五行的關鍵字onrestart表示一旦Sevice Manger被系統重啟,就需要將zygote和media兩個進程重新啟動。

Service Manager進程的執行過程,請參考Service Manager進程啟動,睡眠等待在進程proc->wait。

 

Init進程啟動Installd進程

 

service installd /system/bin/installd
    socket installd stream 600 system system
Installd進程在端口地址600等待socket的請求。

 

表示Installd進程在啟動的過程中,需要在內部創建一個名稱為installd的Socket。這個Socket是用來執行進程間通信的,它的訪問權限被設置為600。
 

Init進程啟動Zygote進程

 

service zygote /system/bin/app_process -Xzygote /system/bin --zygote --start-system-server
    socket zygote stream 666
    onrestart write /sys/android_power/request_state wake
    onrestart write /sys/power/state on
    onrestart restart media
    onrestart restart netd

參考Zygote進程的啟動流程。

 

Zygote進程啟動System進程

 

參考System進程的啟動流程第一部分,System進程的啟動流程第二部分。

 

啟動Launcher進程

參考Launcher進程的啟動。

 

在Launcher進程中啟動Home Screen。

參考Home界面的啟動。

 

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved