資源描述:
《安卓系統(tǒng)內(nèi)核分析》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在工程資料-天天文庫。
1、安卓系統(tǒng)內(nèi)核分析Android是Google開發(fā)的基于Linux平臺的開源于?機操作系統(tǒng)。它是一個移動終端平臺,包括了移動電話所需的全部軟件,由操作系統(tǒng)、中間件、UI(Userinterface)及應(yīng)用程序組成。開發(fā)人員使用Java語言,開發(fā)運行于Dalvik虛擬機上的應(yīng)用程序。其運行效率比一般嵌入式“l(fā)inux操作系統(tǒng)上的J2ME程序高。Android系統(tǒng)架構(gòu)自底向上由以下4個層次組成:基于Linux的內(nèi)核模塊、運行時庫與其他庫、應(yīng)用程序框架、應(yīng)用程序。其屮內(nèi)核(Kernel)是最核心的部分。我們對Android的內(nèi)核模塊進行分析。
2、Android內(nèi)核基于Linux2.6,提供安全、內(nèi)存管理、進程管理、網(wǎng)絡(luò)組、驅(qū)動模型等核心服務(wù)。同所有Linux內(nèi)核一樣。Android內(nèi)核是介于硬件層和軟件組Z間的一個抽象層次。其主要作用在于與計算機硬件進行交互,實現(xiàn)對便件的編程控制和接口操作。調(diào)度訪問硬件資源,同時向應(yīng)用程序提供一個高級的執(zhí)行環(huán)境和對硬件的虛擬接口。主要功能包括:屮斷服務(wù)程序、進程調(diào)度程序、進程地址空間的內(nèi)存管理、進程間通信。內(nèi)核與普通應(yīng)用程序不同,其擁有所有硬件設(shè)備的訪問權(quán)限以及啟動時即劃分的受保護的內(nèi)存空間。Android內(nèi)核是在標準Linux內(nèi)核的基礎(chǔ)上修
3、改而成。為了適應(yīng)嵌入式硬件環(huán)境和移動應(yīng)用程序的開發(fā)。Android對標準Linux內(nèi)核進行了一定的修改。為了對比分析Android內(nèi)核,在Ubuntu操作系統(tǒng)上搭建了Android內(nèi)核的編譯開發(fā)平臺,通過repo,下載最新的Android內(nèi)核代碼版本cupcake(Jt中Linux內(nèi)核版木為2.6.27)從獲得的內(nèi)核源碼樹的根日錄結(jié)構(gòu)看,Android內(nèi)核源碼與標準Linux內(nèi)核并無不同。經(jīng)過與標準Linux內(nèi)核源代碼進行詳細對比,可以發(fā)現(xiàn),Android內(nèi)核與標準Linux內(nèi)核在文件系統(tǒng)、進程間通信機制、內(nèi)存管理等方面存在不同。?文
4、件系統(tǒng)不同于桌面系統(tǒng)與服務(wù)器,移動設(shè)備大多釆用的不是硬盤而是釆用Flash作為存儲介質(zhì)。因此,Android內(nèi)核屮增加了標準Linux(內(nèi)核屮沒有采納的YAFFS2文件系統(tǒng)YAFFS2(YetAnotherFlashFileSy-steln.2ndedition)是專用于Flash的文件系統(tǒng)。對NANDFlash芯片有著良好的支持。YAFFS2是H志結(jié)構(gòu)的文件系統(tǒng),提供了損耗平衡和掉電保護??梢杂行У乇苊庖馔鈹嚯妼ξ募到y(tǒng)一致性和完整性的影響。YAFFS2按層次結(jié)構(gòu)設(shè)計,分為文件管理接口、內(nèi)部實現(xiàn)層和NAND,簡化了其本身與系統(tǒng)的接E
5、l設(shè)計,能更方便地集成到系統(tǒng)當屮。經(jīng)過測試證明,YAFFS2性能比支持NOR型閃存的JFFS2文件系統(tǒng)優(yōu)秀171。?進程間通信機制Android增加了一種進程問的通信機制IPCBinder。在內(nèi)核源代碼中,驅(qū)動程序文件為Coredroid/inelude/linux/binder.hcoredroid/drivers/android/binder.CoBinder通過守護進程ServiceManager管理系統(tǒng)屮的服務(wù),負責(zé)進程問的數(shù)據(jù)交換。各進程通過Binder訪問同一塊共享內(nèi)存,以達到數(shù)據(jù)通信的機制。從應(yīng)用層的角度看,進程通過訪問
6、數(shù)據(jù)守護進程獲取用于數(shù)據(jù)交換的程序框架接口,調(diào)用并通過接口共享數(shù)據(jù)。而其他進程要訪問數(shù)據(jù),也只需與程序框架接口進行交互,方便了程序員開發(fā)需耍交互數(shù)據(jù)的應(yīng)用程序。?內(nèi)存管理在內(nèi)存管理模塊,Android內(nèi)核采用了一種不用于標準Linux內(nèi)核的低內(nèi)存管理策略。在標準Linux內(nèi)核當中,使用一種叫做OOM(OutofMemory)的低內(nèi)存管理策略;當內(nèi)存不足時,系統(tǒng)檢查所有的進程,并對進程進行限制評分,獲得最高分的進程將被關(guān)閉(內(nèi)核進程除外)。Android系統(tǒng)采用的則是一種叫作LMK(LowMemoryKiller)的機制。這種機制將跡程
7、按照重要性進行分級、分組。內(nèi)存不足時,將處于最低級別組的進程關(guān)閉。例如,在移動設(shè)備當屮,UI界面處于最高級別,所以該進程永遠不會被中止,這樣,在終端用戶看來,系統(tǒng)是穩(wěn)主運行的。在Andorid內(nèi)核源碼中,LMK的位置是coredroid/drivers/mise/lowme—morykiller.c。與此同時,Android新增加了一種內(nèi)存共享的處理方式Ashmem(AnonymousSharedMemory匿名共享內(nèi)存)。通過Ashmem,進程間可以匿名自由共享具名的內(nèi)存塊,這種共享方式在標準Linux當屮不被支持。?電源管理由于A
8、ndroid主要用于移動設(shè)備,電源管理就顯得尤為重要。因此,在Android內(nèi)核當屮,增加了一種新的屯源管理策略。目前Android采用的是一?種較為簡單的電源管理策略,通過開關(guān)屏幕、開關(guān)屏幕背光、開關(guān)鍵盤背光、開關(guān)按鈕