Android的啟動(dòng)過程

1、BootLoad:電源鍵按下,引導(dǎo)芯片代碼從預(yù)定義的地方(ROM)開始執(zhí)行,加載引導(dǎo)程序到RAM中執(zhí)行,主要初始化硬件設(shè)備和建立內(nèi)存空間映射圖,目的是為操作系統(tǒng)內(nèi)核準(zhǔn)備好環(huán)境;

2、Kernel:Android內(nèi)核開始啟動(dòng),主要設(shè)置緩存和加載驅(qū)動(dòng)等,當(dāng)內(nèi)核系統(tǒng)設(shè)置完畢,會(huì)在系統(tǒng)文件中尋找“init”文件,啟動(dòng)root進(jìn)程(第一個(gè)進(jìn)程);

3、Init進(jìn)程:由內(nèi)核自行啟動(dòng)的一個(gè)用戶級(jí)進(jìn)程,啟動(dòng)過程就是init.c中main函數(shù)的執(zhí)行過程,包括文件夾建立、掛載、rc文件解析、啟動(dòng)服務(wù)、屬性設(shè)置等,其中.rc文件是Android初始化的腳本文件;

4、Zygote進(jìn)程:系統(tǒng)啟動(dòng)過程中,由init進(jìn)程創(chuàng)建,它是Native應(yīng)用程序,與驅(qū)動(dòng)內(nèi)核無關(guān),由它來fork出所有的應(yīng)用程序進(jìn)程和系統(tǒng)服務(wù)進(jìn)程,作用是作為一個(gè)虛擬機(jī)進(jìn)程,預(yù)加載和初始化核心庫(kù)類,讓Dalvik虛擬機(jī)共享代碼、降低內(nèi)存占用和啟動(dòng)時(shí)間;

-------Zygote進(jìn)程包括兩個(gè)模塊:Socket服務(wù)端(用于接受啟動(dòng)新的Dalvik虛擬機(jī)命令)和Framewo共享類和共享資源;

-------Zygote啟動(dòng)分為兩個(gè)階段:虛擬機(jī)啟動(dòng)(通過Native啟動(dòng)---啟動(dòng)虛擬機(jī)、初始化、注冊(cè)JNI函數(shù)、構(gòu)造java運(yùn)行時(shí)環(huán)境)和SystemService進(jìn)程(通過java啟動(dòng)---注冊(cè)socket監(jiān)聽、加載系統(tǒng)資源和常用類、啟動(dòng)系統(tǒng)服務(wù)進(jìn)程、進(jìn)入循環(huán)監(jiān)聽模式、進(jìn)程退出時(shí)關(guān)閉socket監(jiān)聽);

5、啟動(dòng)系統(tǒng)服務(wù);

6、引導(dǎo)完成。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 173,552評(píng)論 25 708
  • 1:InputChannel提供函數(shù)創(chuàng)建底層的Pipe對(duì)象 2: 1)客戶端需要新建窗口 2)new ViewRo...
    自由人是工程師閱讀 5,403評(píng)論 0 18
  • 從開機(jī)到桌面的過程為:Bootloader ?Kernel ?Init進(jìn)程 ? Zygote ? SystemSe...
    小莊bb閱讀 326評(píng)論 0 0
  • 晨起,拉開窗簾,春日晴方好。爸爸不由點(diǎn)頭,“唔,出太陽了,天氣不錯(cuò),你們今天可以下樓了呢!” 丫頭聞言,雙手支著小...
    小雎閱讀 218評(píng)論 1 1
  • 浪淘沙 劉禹錫 莫道讒言如浪深, 莫言遷客似沙沉。 千淘萬漉雖辛苦, 吹盡狂沙始到金。
    喜亭_bf8f閱讀 215評(píng)論 2 4