手機(jī)版WPS 手機(jī)版wps免費(fèi)下載
2022-11-29
更新時間:2022-04-17 15:28:27作者:未知
分析Android平臺系統(tǒng)架構(gòu),通過對最新Android源代碼的解析,將其與標(biāo)準(zhǔn)Linux內(nèi)核源碼比較,詳細(xì)解析Android內(nèi)核的功能更新,討論Android 內(nèi)核與標(biāo)準(zhǔn)Linux內(nèi)核之間的不同以及Android在移動平臺的優(yōu)勢,并對Android在各種內(nèi)核之間做出一個定位,介紹了Ubuntu環(huán)境下Android內(nèi)核的獲取與編譯。
1、概述
隨著嵌入式技術(shù)的飛速發(fā)展,移動智能平臺的運(yùn)行速度和所集成的功能獲得了極大提升。藉此,由Google主導(dǎo)的開放手機(jī)聯(lián)盟OHA順勢在2008年推出了Android移動終端平臺。Android是一個開放、自由的移動終端平臺[1],它的發(fā)布,打破了諾基亞 Symbian操作系統(tǒng)操作系統(tǒng)在傳統(tǒng)智能手機(jī)平臺上的壟斷地位,同 時,其平臺化的優(yōu)勢也大大豐富各種手持式設(shè)備軟件的功能。
2、Android 系統(tǒng)架構(gòu)
Android是 Google開發(fā)的基于Linux平臺的開源手機(jī)操作系統(tǒng),它是一 個移動終端平臺,包括了移動電話工作所需的全部軟件,由操作系統(tǒng)、中間件、 UI 及應(yīng)用程序組成。
Android系統(tǒng)架構(gòu)自底向上由以下4個層次組成[2]:基于Linux的內(nèi)核模 塊、運(yùn)行時庫與其他庫、應(yīng)用程序框架、應(yīng)用程序。
第一層:Linux 操作系統(tǒng)和Android系統(tǒng)擴(kuò)展,由C語言實現(xiàn)。
第二層:系統(tǒng)庫層與Android運(yùn)行時環(huán)境,由C/C++實現(xiàn)。
第三層:Android應(yīng)用程序框架隱藏在每個應(yīng)用后面的是一系列服務(wù)和統(tǒng)。
第四層:Android應(yīng)用程序
Android 應(yīng)用程序?qū)佑蛇\(yùn)行在Android設(shè)備上的所有應(yīng)用共同構(gòu)成,它不僅 包括通話、短信、聯(lián)系人等系統(tǒng)應(yīng)用,還包括其他后續(xù)安裝到設(shè)備中的第三方應(yīng)用。3、Android 內(nèi)核分析
2.1 內(nèi)核在操作系統(tǒng)中的地位
Android基于Linux操作系統(tǒng),由硬件、系統(tǒng)內(nèi)核、系統(tǒng)服務(wù)和應(yīng)用程序等 四大部分組成。其中,內(nèi)核是最核心的部分,其主要作用在于與計算機(jī)硬件進(jìn) 行交互,實現(xiàn)對硬件的編程控制和接口操作,調(diào)度訪問硬件資源,同時向應(yīng)用 程序提供一個高級的執(zhí)行環(huán)境和對硬件的虛擬接口。主要功能包括:中斷服務(wù) 程序、進(jìn)程調(diào)度程序、進(jìn)程地址空間的內(nèi)存管理、進(jìn)程間通信。
2.2 Android內(nèi)核
為了對比分析Android內(nèi)核,在Ubuntu操作系統(tǒng)上搭建了Android內(nèi)核 的編譯開發(fā)平臺,通過repo,下載最新的Android內(nèi)核代碼版本Jelly Bean。
經(jīng)過與標(biāo)準(zhǔn)Linux內(nèi)核源代碼進(jìn)行詳細(xì)對比,可以發(fā)現(xiàn),Android內(nèi)核與標(biāo) 準(zhǔn)Linux內(nèi)核在文件系統(tǒng)、進(jìn)程間通信機(jī)制、內(nèi)存管理等方面存在不同。
?。?)文件系統(tǒng)
Android內(nèi)核中增加了標(biāo)準(zhǔn)Linux內(nèi)核中沒有采納的YAFFS2文件系統(tǒng)。
(2)進(jìn)程間通信機(jī)制
Binder是一種進(jìn)程間通信機(jī)制,其實是提供遠(yuǎn)程過程調(diào)用(RPC)功能。在
Android系統(tǒng)的Binder機(jī)制中,由一系統(tǒng)組件組成,分別是 Client、Server、Service Manager和Binder驅(qū)動程序,其中 Client、Server 和 Service Manager 運(yùn)行在用戶空間,Binder驅(qū)動程序運(yùn)行內(nèi)核空間。
?。?)內(nèi)存管理
在內(nèi)存管理模塊,Android內(nèi)核采用了一種不用于標(biāo)準(zhǔn) Linux內(nèi)核的低內(nèi)
存管理策略。Android系統(tǒng)采用的則是一種叫作LMK(Low Memory Killer)的 機(jī)制,這種機(jī)制將進(jìn)程按照重要性進(jìn)行分級、分組。內(nèi)存不足時,將處于最低級別組的進(jìn)程關(guān)閉。
4、Android 內(nèi)核獲取與編譯
下面以Ubuntu 13.04操作系統(tǒng)為例,講解在 Ubuntu 13.04系統(tǒng)下如何搭建
Android內(nèi)核編譯開發(fā)平臺。在Ubuntu上搭建Android內(nèi)核編譯環(huán)境,具體步 驟如下:
?。?)準(zhǔn)備系統(tǒng)環(huán)境, 需要的軟件包列表 flex, bison,gperf, libsdl-dev, libesd0-
dev,libwxgtk2.6-dev(optional), build-essential, zip,curl;(2)安裝JDK的 1.7 版本;(3)安裝 repo;(4)在主文件目錄建立一個bin文件夾并加入到環(huán)境變量當(dāng)中;(5)下載repo腳本,將它的屬性改為可執(zhí)行curl http://android.git.kernel.org/repo> ~/bin/repo chmod a+x~/bin/repo;(6)創(chuàng)建一個保存源碼的目錄 mkdir coredroid cd coredroid(7)獲取Android內(nèi)核代碼:git clone git://android.git.kernel.org/kernel/co mmon.git
經(jīng)過以上步驟,最新版本Android內(nèi)核就被下載到文件夾 coredroid當(dāng)中。make 編譯完成后生成 zImage文件, 可用模擬器測試運(yùn)行cd mydroid/out/cupcake/out/target/product/genericemulator -image system.img -data userdata.img -ramdisk ramdisk.img -kernel~/coredroid/common /arch/arm/boot/zIma ge
5、結(jié)語
Android 內(nèi)核由標(biāo)準(zhǔn)Linux內(nèi)核優(yōu)化得來,其繼承了Linux 內(nèi)核的各種優(yōu)點(diǎn),保留了標(biāo)準(zhǔn)Linux內(nèi)核的主體架構(gòu)。同時,Android 按照移動平臺的需求,在文件系統(tǒng)、內(nèi)存管理、進(jìn)程間通信機(jī)制、電源管理等方面進(jìn)行了修改,添加相關(guān)的驅(qū)動程序及必要的新功能,但是與大多數(shù)精簡的嵌入式 Linux操作系統(tǒng)相比,Android很大程度上保留了標(biāo)準(zhǔn)Linux的基本架構(gòu),因此,Android系統(tǒng)應(yīng)用范 圍更加廣泛,拓展性更強(qiáng)。