Android啟動過程的分析
大多數智能手機用戶使用的Android操作系統的功能和操作過程都比較複雜。
對於Android操作系統的初學者來說,引導過程,只不過是終端用戶的一些花哨的圖像和動畫。但當你閱讀完這篇文章後,你可能會打破原來對引導過程的狹隘思維。
基本核心過程
引導ROM >引導載入程序 >內核 > init過程> Zygote > Dalvik V M >系統伺服器 >管理器
該過程是Android啟動的核心過程,下面讓我來詳細介紹每一步及其並行操作(如果有的話)。
引導ROM
一旦Android操作系統開始運行,就會執行負責「Boot ROM」部分的代碼。起始代碼恰好是預定義的硬編碼位置,代碼將引導載入程序載入到RAM中並開始執行。
引導程序
雖然引導程序只是Android系統的一小部分,但卻非常重要。你可能已經聽說過OEM或製造商放置的某些限制和規則,而引導程序正是存儲所有這些「規則」的地方。一開始提到的「引導載入程序」的過程其實包括兩個階段:
第一階段:檢測RAM。引導載入程序檢測RAM並執行啟動第二步所需的應用程序。
第二步:設置。引導載入程序現在繼續設置網路、低級內存管理和安全選項。
這一步對於執行內核至關重要。位於/ bootable / bootloader / legacy / usbloader的引導載入程序包含兩個非常重要的文件,即init.s和main.c。
init.s文件基本上負責的是初始化棧, 0和BSS段,然後繼續在main.c.中初始化call_main()。 main.c文件在並行創建Linux標籤的同時初始化硬體,特別是時間,控制台和鍵盤。
內核
Android內核的初始化過程模仿的是Linux內核的初始化,當內核執行時,它將高速緩存,受保護的內存設置為不同的載入驅動程序。當完成所有設置和調度驅動程序後,內核會在系統文件中查找init。
初始化過程
init過程是相當重要的一步,這一步,不僅會安裝/ sys和/ dev等目錄或分區,還會啟動init.rc腳本。 init進程位於/ init,而init.rc腳本位於/ rootdir。
Zygote和Dalvik VM
Zygote是一個VM進程,會在系統啟動時啟動。它可以實現Dalvik VM的代碼共享,從而有助於把啟動時間降至最低。 Zygote還確保更低的內存佔用,使Dalvik VM不會消耗大量內存。此外,它還會初始化核心庫類。
Zygote載入過程的框架看起來與開頭概述的框架完全相同:
載入Zygote init類 > registerZygoteSocket() > preloadClasses() > preloadResources() >用戶看到啟動的動畫
系統伺服器
在這一步,Zygote會要求一個新的過程,這樣以下的過程才會啟動,處理和執行。
啟動電源管理器 >創建活動管理器 >啟動電話註冊表 >啟動包管理器 >將活動管理器服務設置為系統進程 >啟動上下文管理器 >啟動系統聯繫人 >啟動電池服務 >啟動警報管理 >啟動 >感測器服務 >啟動窗口管理器 >啟動藍牙服務 >啟動安裝服務 >啟動狀態欄服務 >啟動硬體服務 >啟動NetStat服務 >啟動連接服務 >啟動通知管理器 >啟動DeviceStorageMonitor服務 >啟動位置管理器 >啟動搜索服務 >啟動剪貼板服務 >啟動檢查服務 >啟動牆紙服務 >啟動音頻服務 >啟動HeadsetObserver >啟動AdbSettingsObserver >呈現到用戶眼前
分析
現在,啟動就已經全部完成,與此同時服務已啟動並運行,這時,你可能需要了解創建日誌的一些方法。
使用adb logca從啟動過程獲取日誌,你可以按照相應順序輸入以下命令:
adb logcat –d –b events | grep 「boot」adb logcat –d | grep preload```
本文翻譯自:https://thecyberfibre.com/android-boot-process/,如若轉載,請註明來源於嘶吼: http://www.4hou.com/mobile/7373.html 更多內容請關注「嘶吼專業版」——Pro4hou
推薦閱讀:
※如何看待「小紅書用戶信息遭大面積泄露:至少50人被騙,總額近90萬」這一事件?
※俄羅斯黑客暗網出售勒索軟體服務(RaaS),價格低廉人人可用
※微軟Office文檔中的DDE攻擊演示
※懂技術的女人有多可怕系列 その一
※從明年開始 FBI可任意控制你的電腦
TAG:信息安全 |