下載本文檔
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、一,系統(tǒng)引導bootloader加電, cpu 執(zhí)行 bootloader程序,正常啟動系統(tǒng),加載boot.img【其中包含內核。還有 ramdisk】二,內核 kernelbootloader加載 kernel , kernel自解壓,初始化,載入built-in驅動程序,完成啟動。內核啟動后會創(chuàng)建若干內核線程,在后裝入并執(zhí)行程序/sbin/init/,載入 initprocess ,切換至用戶空間(user-space)內核 zImage解壓縮head.S 【這是 ARM-Linux運行的第一個文件,這些代碼是一個比較獨立的代碼包裹器。其作用就是解壓Linux 內核,并將PC 指針跳到內核
2、(vmlinux)的第一條指令】首先初始化自解壓相關環(huán)境(內存等),調用decompress_kernel進行解壓,解壓后調用start_kernel啟動內核【 start_kernel是任何版本linux內核的通用初始化函數,它會初始化很多東西,輸出linux 版本信息,設置體系結構相關的環(huán)境,頁表結構初始化,設置系統(tǒng)自陷入口,初始化系統(tǒng)IRQ ,初始化核心調度器等等】,最后調用rest_init【rest_init會調用 kernel_init啟動 init 進程(缺省是 /init )。然后執(zhí)行schedule開始任務調度。這個 init 是由 android的 ./system/cor
3、e/init下的代碼編譯出來的,由此進入了android的代碼 】。三,Init 進程啟動【init是 kernel啟動的第一個進程,init啟動以后,整個android系統(tǒng)就起來了】init 進程啟動后,根據init.rc和 init. <machine_name>.rc 腳本文件建立幾個基本服務( servicemanagerzygote),然后擔當property service的功能打開 .rc 文件,解析文件內容?!緎ystem/core/init/init.c】將 service信息放置到service.list中【 system/core/init/init_pars
4、er.c】。建立 service進程?!?service_start()execve()】在 init.c中,完成以下工作1 、初始化 log 系統(tǒng)【 解析 /init.rc和 init.%hardware%.rc文件 ,在兩個文件解析步驟2 時執(zhí)行“ early-init”行動 】2 、初始化設備【 在 /dev下創(chuàng)建所有設備節(jié)點,下載firmwares】3 、初始化屬性服務器【在兩個文件解析步驟 2 時執(zhí)行“ init ”行動 】4 、開啟屬性服務【 在兩個文件解析步驟2 時執(zhí)行“ early-boot ”和“boot”行動;在兩個文件解析步驟2 時執(zhí)行“ excecuteproperty
5、”行動 】5 、進入一個無限循環(huán)【 等待 device/property set/child進程退出事件】四,Servicemanager【Servicemanager屬于 Native Service。在執(zhí)行init.rc時就會啟動,與Zygote一樣 】通知 binder設備,把自己變成context_manager【service servicemanager/system/bin/servicemanager,從 main( )開始 】進入循環(huán),不停的去讀binder設備,看是否有對service的請求如果有,調用svcmar_handler函數回調處理請求【在 Servicemana
6、ger中的 svcmar_handler負責處理android中所有有關 service 的請求響應 】有增加服務請求時,由Servicemanager負責注冊各項服務?!咀院?,會將該 service加入 svcList 中, svcList 中存了各個注冊過的service的 name和handler 。當接收到獲取service的請求時, Servicemanager會去查找該service ,如果存在,則把返回數據寫入reply ,返回給客戶?!俊咎幚矸兆院捅O(jiān)聽】五,Zygote【Servicemanager和 Zygote進程奠定了android的基礎, Zygote這個進程起來
7、才會立起真正的android運行空間,初始化建立的service都是 Nativeservice.rc在腳本文件中Zygote的描述, Zygote是用于初始化虛擬機的進程,它會監(jiān)聽請求創(chuàng)建虛擬機實例的socket 】建立 java runtime【Zygote從 main( )開始frameworks/base/cmds/app_main.cpp】創(chuàng)建 Dalvik java虛擬機, JNI_Createjava VM()注冊 Android Runtime中的 JNI 接口給虛擬機呼叫 Java 類中的 main函數【AndroidRuntime:start()frameworks/bas
8、e/core/jni/AndroidRuntime.cpp】登記 Listen 端口,用來接受請求【registerZygoteSocket()】加載 preloaded class、 resource用來加快啟動速度,【preloadClasses()】啟動 System Server【 startSystemServer()】進入 Zygote 服務框架,經過以上步驟Zygote就建立完成,利用 socket通信,接受 ActivityManagerService的請求, fork應用程序。六,System server【System Server作為 Zygote 的第 1 個子進程,是
9、 Android Framework的核心,它主要負責 Android系統(tǒng)初始化并啟動其他服務。其它的Android 服務都由SystemServer 啟動并運行在該進程空間】Fork 出獨立的進程,名稱為“system-server”System service啟動原生服務,包括Surface Flinger和 Audio Flinger【system_main.cpp的 main函數調用 system_init.cpp的 system_init函數。然后調用 SystemServer.java的 SystemServer:Init2,啟動新線程 】原生 system service向 service manager注冊為 IPC 服務目標?!?比如AudioFlinger.cpp的 instantiate函數 】System service開始 Android managed services。Android managed services向 service
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 個人信用貸款協議(2024年版)
- 2025年度健康食品研發(fā)與購銷合作框架協議3篇
- 2025年寵物醫(yī)院聯合科研項目合作協議3篇
- 2025版事業(yè)單位新員工試用期勞動合同范本3篇
- 小學課外閱讀與語文學科素養(yǎng)的培育
- 科技型企業(yè)組織架構的靈活性與穩(wěn)定性
- 二零二五年餐飲業(yè)食品安全宣傳教育合作協議書模板3篇
- 2025版仙崇線道路養(yǎng)護與管理服務合同3篇
- 中介服務居間合同范本(2024年版)版B版
- 二零二五版集裝箱堆場管理及服務合同3篇
- 《色彩基礎》課程標準
- 人力資源 -人效評估指導手冊
- 大疆80分鐘在線測評題
- 2023年成都市青白江區(qū)村(社區(qū))“兩委”后備人才考試真題
- 2024中考復習必背初中英語單詞詞匯表(蘇教譯林版)
- 《現代根管治療術》課件
- 肩袖損傷的護理查房課件
- 2023屆北京市順義區(qū)高三二模數學試卷
- 公司差旅費報銷單
- 2021年上海市楊浦區(qū)初三一模語文試卷及參考答案(精校word打印版)
- 八年級上冊英語完形填空、閱讀理解100題含參考答案
評論
0/150
提交評論