「當按下手機開機鍵的時候,究竟發生了什麼」
android的啟動流程是乙個非常複雜的流程,如果有什麼遺漏,還望多多指教。這裡簡單說下基本的流程:
(1)當按下手機的開機鍵的時候,引導晶元**從與預定以(固化在rom)的地方開始執行。載入bootloader到ram中執行。
(2)bootloader主要用來拉起作業系統os。
(2)linux核心啟動,尋找init.rc檔案。
(3)啟動init程序,開啟屬性服務,通過init程序啟動zygote程序。
(4)通過zygote程序啟動systemserver程序,從而開啟了android世界的大門。
有這麼乙個比較形象的比喻:盤古(linux核心)開天闢地之後,世界上誕生了女媧(init程序),女媧覺得自己很孤獨,想著弄個人出來陪伴自己,於是捏了個人,亞當就這樣誕生了(zygote程序),時間長了,亞當覺得和媽媽在一起有些無聊了,就用自己的肋骨建立出了夏娃(systemserver),於是新世界誕生了。
先從init程序說起,也就是上圖中的程序號為1的程序。作為第乙個程序,它被賦予及其重要的職責。啟動屬性、建立zygote程序、掛載檔案系統等等。
下圖中描繪了init的啟動流程以及如何啟動zygote程序(參考android8.0)。未完待續。
android 啟動流程
bootload 載入linux 核心 掛載ramdisk.img init程式 啟動準備 解析init.rc 和init.hardware.rc 將early init action新增到action queue佇列中 將init action新增到action queue佇列中 進入迴圈 執行每...
Android 啟動Linux流程
1 bootloader 對於一般的arm處理器,cpu上電或復位執行第一條指令所在位址,即第一段程式bootloader的開始位址,bootloader一般存於nor flash xip 支援晶元內執行。bootloader的功能可總結為 1 初始化cpu時鐘,記憶體,串列埠等。2 設定linux...
Android 的啟動流程
android 根檔案系統啟動過程。在android系統啟動時,核心引導引數上一般都會設定 init init 這樣的話,如果核心成功掛載了這個檔案系統之後,首先執行的就是這個根目錄下的init程式。init程式原始碼在android官方原始碼的system core init中,main在init...