Android系統架構

Tags: ,
researcher

This site has been moved to dreamerslab.com

本站已經移至 dreamerslab.com

Android是基於Linux核心的開放原始碼軟體平台和作業系統,是Google在2007年11月5日公佈的手機系統平台,由Google和開放手機聯盟(Open Handset Alliance)開發。它採用了軟體堆層(software stack,又名以軟體疊層)的架構,主要分為三部份。低層以Linux核心工作為基礎,只提供基本功能。中間層Android Runtime作為作業系統與應用程式的溝通橋樑,並分為函式庫(Library)和虛擬機器(Virtual Machine)。應用軟體則由各公司自行開發,以Java語言編寫。


(圖片來源:developer.android.com
由下至上,分別是 Linux kernel 、函式庫+虛擬機器、以及 Java 程式碼。

Linux kernel

Linux kernel 提供系統底層與硬體間的基本平台,讓其他程式可以在上頭執行。Linux kernel以GNU General Public License version 2 (GPLv2) 發佈,此條款要求所有基於Linux kernel的延伸創作,包含驅動程式都必須以GPLv2的形式發佈,公開其原始碼。

Google修改Linux kernel,讓驅動程式和Linux kernel脫離,以讓驅動程式避開GPLv2。

此外,Android 對 kernel 的修改,還有兩個重點:
Binder (IPC):提供有效率的程式間溝通管道(Inter-Process Communication)。
Power Management:細緻控制各小裝置的電源供應,關閉沒有程式在使用的裝置。

系統函式庫

Android 提供了大部分的標準 Java 函式庫(來自於Apache Harmony),並把他們轉換成 dex 的格式,此外也提供Android的獨有元件。幾個元件如下:
Bionic: Android 版的 libc。libc 是 GNU/Linux 以及其他類似 Unix 系統上最基礎的函式庫。
Webkit:瀏覽器的排版引擎。
Surface Flinger:提供把各種「surface」組合在一起的能力。 surface 則是程式想要顯示在螢幕的內容。
硬體抽象層 (Hardware Abstraction Libraries):前文所述的 userspace 驅動程式。其內定義了 Android 對各硬體裝置例如顯示晶片、聲音、數位相機、GPS、GSM 等等。
虛擬機器

Android 使用的虛擬機器叫 Dalvik, 其認識的指令集是Dalvik executable,簡稱 dex。Android 提供 dx 把 Java bytecode 翻譯成 dex,好讓 Dalvik 執行它。Dalvik 做了許多最佳化的處理,例如減低記憶體的使用,這是為了在移動型裝置使用。這些修改能有效率的同時執行好幾個程式。Dalvik必須依賴 Linux kernel 才能正確運作。

虛擬機器+函式庫=Android Runtime,特性為:(無需公佈程式原始碼就能利用Android Runtime跨平台執行程式)

不能直接執行編譯好的 Java 程式。要轉換成 dex 檔案後才能執行。
若此程式使用了 Android 未提供的函式,則無法執行。

參考來源
Android 淺探(一)
Android 淺探(二):系統架構
Android-維基百科

Related Posts


Comments are closed.