老熟女激烈的高潮_日韩一级黄色录像_亚洲1区2区3区视频_精品少妇一区二区三区在线播放_国产欧美日产久久_午夜福利精品导航凹凸

重慶分公司,新征程啟航

為企業(yè)提供網(wǎng)站建設、域名注冊、服務器等服務

Android內(nèi)核開發(fā):圖解Android系統(tǒng)的啟動過程

本文是《Android內(nèi)核開發(fā)》系列的第六篇文章,前面的幾篇文章介紹了Android內(nèi)核開發(fā)相關的基礎知識,包括:Android源碼的下載、版本和分支介紹、編譯和燒寫等等,從本文起就要開始真正地進行Android內(nèi)核的學習及實戰(zhàn)了。

專注于為中小企業(yè)提供做網(wǎng)站、網(wǎng)站制作服務,電腦端+手機端+微信端的三站合一,更高效的管理,為中小企業(yè)尤溪免費做網(wǎng)站提供優(yōu)質(zhì)的服務。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動了上1000+企業(yè)的穩(wěn)健成長,幫助中小企業(yè)通過網(wǎng)站建設實現(xiàn)規(guī)模擴充和轉(zhuǎn)變。

學習任何軟硬件系統(tǒng),研究系統(tǒng)啟動過程都是一種非常有效地起步手段,搞Android內(nèi)核開發(fā)也不例外。網(wǎng)上有很多文章對Android啟動相關代碼進行分析和走讀,大家可以先搜索閱讀一下,我個人更喜歡更加直觀的方式去理解未知的東西,包括圖、表、系統(tǒng)輸出的log信息等等,因此,本文準備通過一些流程圖和log信息,來探索一下Android的啟動過程。

首先,給出一張圖,圖片來自這里,我覺得它畫得很好,就引用過來了,幫助大家理解和分析。

Android內(nèi)核開發(fā):圖解Android系統(tǒng)的啟動過程

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

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

第三階段:Linux內(nèi)核開始啟動,初始化各種軟硬件環(huán)境,加載驅(qū)動程序,掛載根文件系統(tǒng),并執(zhí)行init程序,由此開啟Android的世界。(這一步則是Android內(nèi)核開發(fā)過程中需要涉及的地方)

Android系統(tǒng)以及各大Linux的發(fā)行版,他們的Linux內(nèi)核部分啟動過程都是差不多的,他們之間最大的區(qū)別就在于init程序的不同,因為init程序決定了系統(tǒng)在啟動過程中,究竟會啟動哪些守護進程和服務,以及呈現(xiàn)出怎樣的一個用戶UI界面。

因此,init程序是分析Android啟動過程中最核心的程序。

對應的代碼位于:system/core/init/init.c,工作內(nèi)容如圖所示(圖片來自《Embedded Android》這本書):

Android內(nèi)核開發(fā):圖解Android系統(tǒng)的啟動過程

init程序最核心的工作主要有3點:

(1) 創(chuàng)建和掛載一些系統(tǒng)目錄/設備節(jié)點,設置權限,如:/dev, /proc, and /sys

(2) 解析 init.rc 和 init..rc,并啟動屬性服務,以及一系列的服務和進程。

(3) 顯示boot logo,默認是“Android”字樣

其中,最重要的步驟是第二步,一系列的Android服務在這時被啟動起來,其實Android系統(tǒng)的啟動最重要的過程也就是各個系統(tǒng)服務的啟動,因為系統(tǒng)所有的功能都是依賴這些服務來完成的,比如啟動應用程序,撥打電話,使用WIFI或者藍牙,播放音視頻等等,只要這些服務都能正常地啟動起來并且正常工作,整個Android系統(tǒng)也就完成了自己的啟動。

這些服務包含2部分,一部分是本地服務,另一部分是Android服務,所有的這些服務都會向ServiceManager進程注冊,由它統(tǒng)一管理,這些服務的啟動過程介紹如下:

(1)本地服務

本地服務是指運行在C++層的系統(tǒng)守護進程,一部分本地服務是init進程直接啟動的,它們定義在init.rc腳本和init..rc中,如 ueventd、servicemanager、debuggerd、rild、mediaserver等。還有一部分本地服務,是由這些本地服務進一步創(chuàng)建的,如mediaserver服務會啟動AudioFlinger, MediaPlayerService, 以及 CameraService 等本地服務。

我們可以通過查看init.rc和init..rc文件找出具體有哪些本地服務被init進程直接啟動了,這些文件的位置:system/core/rootdir/

注意,每一個由init直接啟動的本地服務都是一個獨立的Linux進程,在系統(tǒng)啟動以后,我們通過adb shell命令進入手機后,輸入top命令就可以查看到這些本地進程的存在:

Android內(nèi)核開發(fā):圖解Android系統(tǒng)的啟動過程

(2)Android服務

Android服務是指運行在Dalvik虛擬機進程中的服務,這些服務的創(chuàng)建過程描述如下:

init進程會執(zhí)行app_process程序,創(chuàng)建Zygote進程,它是Android系統(tǒng)最重要的進程,所有后續(xù)的Android應用程序都是由它fork出來的。

Zygote進程會首先fork出"SystemServer"進程,"SystemServer"進程的全部任務就是將所有的Android核心服務啟動起來,這些服務包括:

Android內(nèi)核開發(fā):圖解Android系統(tǒng)的啟動過程

當所有的服務都啟動完畢后,SystemServer會打印出“Making services ready”,然后通過ActivityManager啟動Home界面,并發(fā)送“ACTION_BOOT_COMPLETED”廣播消息。

注意,這些Android服務并沒有各種運行在獨立的進程中,它們由SystemServer以線程的方式創(chuàng)建,所以都運行在同一個進程中,即SystemServer進程中。

(3) 小結(jié)

上面的幾張圖我總覺得還不夠盡興,因此文章最后,再給出一張圖幫助大家加深一下理解,這幅圖來自《Improving the Boot Time of the Android OS》這篇論文。

Android內(nèi)核開發(fā):圖解Android系統(tǒng)的啟動過程

關于圖解Android系統(tǒng)的啟動過程就介紹到這里了,有任何疑 問或者建議歡迎留言或者來信lujun.hust@gmail.com交流,或者關注我的新浪微博 @盧_俊 獲取最新的文章和資訊。


文章標題:Android內(nèi)核開發(fā):圖解Android系統(tǒng)的啟動過程
分享路徑:http://www.xueling.net.cn/article/goippp.html

其他資訊

在線咨詢
服務熱線
服務熱線:028-86922220
TOP
主站蜘蛛池模板: 欧美福利在线 | 国产精品999久久久 日韩av影院在线观看 | 一区久久精品 | 色图久久 | www.日韩精品 | 国产东北肥熟老胖女 | 我要一级毛片 | 91资源在线播放 | 久久久久女人精品毛片 | 亚洲精品一区人人爽 | 色偷偷久久一区二区三区 | 日本道dvd久久综合 久久亚洲精品国产亚洲老地址 | 欧美黄色大片在线观看 | 亚洲色无码中文字幕伊人 | 伊人视频在线观看 | 亚洲国产日韩欧美 | 欧美在线观看第一页 | 亚洲精品区无码欧美日韩 | 亚洲AV永久无码精品桃花岛知道 | 手机永久无码国产AV毛片 | 国产在线一区二区三区四区 | av成人资源 | 天天综合网久久综合网 | 午夜一级影院 | 国产乱妇乱子在线播放视频 | 免费看成人A级毛片 | 精品久久免费观看 | 国产在线播精品第三 | 色综合1 | 久久a区 | 性做爰片免费视频毛片中文 | 国产精品午夜剧场免费观看 | 成人依依网站亚洲综合久 | 91国产精品在线 | 爱草视频在线 | 潜行者40集连续剧免费观看 | 极品粉嫩饱满一线天在线 | 性大毛片免费视频 | 亚洲欧美国产网曝综合网 | 亚洲AV噜噜狠狠网址蜜桃 | 狠狠色综合网 |