Linux核心層

Linux核心層

Android 的核心繫統服務基於Linux 2.6核心,如安全性、記憶體管理進程管理網路協定棧和驅動模型等都依賴於該核心。Linux核心同時也作為硬體和軟體棧之間的抽象層。

基本介紹

  • 中文名:Linux核心層
  • 外文名:Linux kernel layer
  • 顯示驅動:DisplayDriver
  • 鍵盤驅動:作為輸入設備的鍵盤驅動
  • WiFi驅動:基於IEEE802.11標準的驅動程式。
簡介,Linux核心層的主要功能,硬體驅動,記憶體管理,系統進程管理,檔案系統管理,電源管理,USB管理,

簡介

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

Linux核心層的主要功能

硬體驅動

Linux核心層提供了幾乎所有手機、平板電腦相關設備的驅動程式,實現系統與各種硬體的通信,如顯示屏、攝像頭、記憶體、鍵盤、無線網路、音頻設備、電源等組件。
主要的驅動如下所示:
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核心層還提供系統記憶體管理,實現對所有可用的記憶體進行統一編碼管理,定義一整套記憶體定位,使用與回收的策略,提供了低記憶體管理器(Low Memory Killer)策略,Android系統可以根據系統運行資源情況,自動決定是否需要殺死進程來釋放所需要的記憶體。Linux核心層還提供了匿名共享記憶體(ashmem)機制,系統為進程間提供大塊共享記憶體,同時為核心提供回收和管理記憶體機制。另外,針對DSP和某些設備只能工作在連續的物理記憶體要求,系統核心層提供了Android PMEM機制解決了向用戶空間提供連續的物理記憶體區域的問題。

系統進程管理

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

檔案系統管理

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

電源管理

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

USB管理

Android的USB驅動是基於Gaeget框架的,USB Gadget驅動是一個基於標準Linux USB gadget驅動框架的設備驅動。

相關詞條

熱門詞條

聯絡我們