-
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、Alsa、FFmpeg、GTK、Pango和Glibc等,並以Bionic取代Glibc、以Skia取代Cairo、以Opencore取代FFmpeg等。Android並沒有用户空間驅動,而是將所有的驅動都放在內核空間中,並以HAL隔開版權問題。
目前,Android的Linux內核層包括安全管理、內存管理、進程管理、網絡階議棧、驅動程序模型和電源管理等,這些都依賴於Linux內核。由於Linux內核全部使用C語言編寫,所以Android的Linux內核層也全部是用C語言編寫的。
[1]
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內核層內存管理
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]