複製鏈接
請複製以下鏈接發送給好友

Linux內核層

鎖定
Android 的核心繫統服務基於Linux 2.6內核,如安全性、內存管理進程管理網絡協議棧和驅動模型等都依賴於該內核。Linux內核同時也作為硬件和軟件棧之間的抽象層。
中文名
Linux內核層
外文名
Linux kernel layer
顯示驅動
DisplayDriver
鍵盤驅動
作為輸入設備的鍵盤驅動
WiFi驅動
基於IEEE802.11標準的驅動程序。

Linux內核層產品簡介

Android是在Linux內核的基礎上構建的,Android的內核屬於Linux內核的一個分支,它並不GNU/Linux,因為一般在GNU/Linux中被支持的功能,在Android大多沒有被支持。眾所周知,Linux是一個開源的操作系統,由非營利的組織——Linux基金會所管理。雖然Linux是開源的,但是Android必須在GNU GPL(用於保護開源軟件的一個授權規範)的許可下使用Linux的源碼,才可以商用。所以為了達到商業應用的目的,Android必須去除被GNU GPL所約束的部分。Android去除了Cairo、X11、AlsaFFmpegGTKPangoGlibc等,並以Bionic取代Glibc、以Skia取代Cairo、以Opencore取代FFmpeg等。Android並沒有用户空間驅動,而是將所有的驅動都放在內核空間中,並以HAL隔開版權問題。
目前,Android的Linux內核層包括安全管理、內存管理、進程管理、網絡階議棧、驅動程序模型和電源管理等,這些都依賴於Linux內核。由於Linux內核全部使用C語言編寫,所以Android的Linux內核層也全部是用C語言編寫的。 [1] 

Linux內核層主要功能

Linux內核層硬件驅動

Linux內核層提供了幾乎所有手機、平板電腦相關設備的驅動程序,實現系統與各種硬件的通信,如顯示屏、攝像頭、內存、鍵盤、無線網絡、音頻設備、電源等組件。 [2] 
主要的驅動如下所示:
1、顯示驅動(DisplayDriver):基於Linux的幀緩衝(FrameBuffer)驅動。
2、鍵盤驅動(KeyBoardDriver):作為輸入設備的鍵盤驅動。
3、Flash內存驅動(FlashMemoryDriver):基於MTD的Flash驅動程序。
4、照相機驅動(CameraDriver):常用的基於Linux的v4l2(VideoforLinux)驅動。
5、音頻驅動(AudioDriver):常用的基於ALSA(AdvancedLinuxSoundArchitecture)的高級Linux聲音體系驅動。
6、藍牙驅動(BluetoothDriver):基於IEEE802.15.1標準的無線傳輸技術。
7、WiFi驅動:基於IEEE802.11標準的驅動程序。
8、Binder IPC驅動:Android的一個特殊的驅動程序,具有單獨的設備節點,提供進程間通信的功能。
9、PowerManagement(電源管理):比如電池電量等。

Linux內核層內存管理

Linux內核層還提供系統內存管理,實現對所有可用的內存進行統一編碼管理,定義一整套內存定位,使用與回收的策略,提供了低內存管理器(Low Memory Killer)策略,Android系統可以根據系統運行資源情況,自動決定是否需要殺死進程來釋放所需要的內存。Linux內核層還提供了匿名共享內存(ashmem)機制,系統為進程間提供大塊共享內存,同時為內核提供回收和管理內存機制。另外,針對DSP和某些設備只能工作在連續的物理內存要求,系統內核層提供了Android PMEM機制解決了向用户空間提供連續的物理內存區域的問題。 [2] 

Linux內核層進程管理

實現管理進程的創建與銷燬,管理進程間的通信,解決與避免死鎖問題等。Android系統的進程間通信基於Binder機制實現,一個進程可以非常方便地實現跨進程調用一個進程所提供的功能,並獲取返回的執行結果。 [2] 

Linux內核層系統管理

Android平台採用Yaffs2作為MTD nand flash文件系統,Yaffs2使用更小的內存來保存它的運行狀態,其垃圾回收機制非常簡單快速,在大容量的NAND Flash上性能表現尤為突出。 [2] 

Linux內核層電源管理

Android電源管理,一個基於標準Linux電源管理系統的輕量級的Android電源管理驅動,針對嵌入式設備做了很多優化。 [2] 

Linux內核層USB管理

Android的USB驅動是基於Gaeget框架的,USB Gadget驅動是一個基於標準Linux USB gadget驅動框架的設備驅動。 [2] 
參考資料
  • 1.    劉志強主編.《ANDROID應用開發教程》.北京:清華大學出版社,2016.05:第11頁
  • 2.    李魯羣,張二江編著.《ANDROID應用程序設計》.北京:清華大學出版社,2015.11:第6-8頁