歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

Android4.0下的Linux3.0的變化

Linux Kernel for Android 4.0
--- 初稿 2011-11-25
1. android 4.0 system be released
2011-10-19上午10點,google發布了代號為Ice Cream Sandwich(簡稱ICS,冰淇淋三明治)的android4.0系統。十大特性:

4)、 同步升級Linux內核 更新3.0以上版本

2. linux kernel 3.0
源碼下載:ftp://ftp.kernel.org/pub/linux/kernel/v3.0/
2.1.發布時間:2011-07-21
2.2.版本號變化:Linux2.6.39 ----》 linux3.0
無裡程碑式的變化。一種說法是為了紀念Linux 20年,邁向第3個10年。
2.3.主要新特性如下:
更新日志:http://kernelnewbies.org/Linux_3.0
1)、Btrfs文件系統自動碎片整理、性能改進和檢查;
Btrfs(Butter FS),目標在取代Linux目前的ext3文件系統,改善ext3的限制,特別是單一文件的大小,總文件系統大小及加入文件校驗和。已在Ubuntu10.10、openSUSE11.3和Fedora 16中得到了應用。
2)、支持sendmmsg()系統調用(syscall);
一個批處理sendmsg()系統調用,UDP發送性能提升20%,接口發送性能提30%.
3)、XEN dom0 支持;
Xen 是一個高性能的虛擬化解決方案,可提升虛擬機性能。
4)、增加 Cleancache 支持;
封裝的相關內核API,目前內核中主要在ext3、ext4、btrfs、ocsfs2等文件系統部分相關代碼中有調用。
5)、Berkeley 即時包過濾器;
配合libpcap/tcpdump提升包過濾規則的運行效率。
6)、無線廣域網(WLAN)喚醒支持;
7)、實現非特殊授權的 ICMP_ECHO (ping 命令);
8)、支持setns()系統調用(syscall);
更好地命名空間管理。
9)、高精度計時器Alarm-timers的支持
可以在通過 RTC 設備喚醒掛起狀態的系統。The concept for Alarm-timers was inspired by the Android Alarm driver, and the interface to userland uses the POSIX clock and timers interface.
3. Linux Kernel for Android
Android基於linux,但其linux內核跟標准的linux內核有所差異。
1)、android沒有使用linux的X窗口系統;
2)、android沒有采用glibc作為C庫,另開發了一套Bionic Libc來代替glibc;
3)、增加了一些android專用的驅動程序
Android對標准linux內核及驅動的增強改進部分:
3.1. Android Alarm
用於將設備從睡眠狀態喚醒,同時提供一個在設備睡眠時仍會運行的基准。
源碼位置:drives/rtc/alarm.c
設備節點名:/dev/alarm
該部分code,Linux 3.0版本在linux2.6.32版本的基礎上有2次改動更新:
1)、Don't use save_time_delta.
2)、Update hrtimer if alarm at the head of the queue is reprogrammed.
3.2. Ashmem(匿名共享內存)
為進程間提供大塊共享內存。相比於malloc等傳統的內存分配機制,其優勢是通過內核驅動提供了輔助內核的內存回收算法機制。
源碼位置:kernel/mm/ashmem.c
設備節點名:/dev/ashmem
Linux 3.0版本在linux2.6.32版本的基礎上有5次改動更新:
1)、Implement read in ashmem driver.
2)、Fix ASHMEM_SET_PROT_MASK.
3)、Update arguments of shrinker for 2.6.35.
4)、Support lseek in ashmem driver.
5)、Fix arguments to ashmem_shrink.
3.3. Low Memory Killer(低內存管理)
根據需要殺死進程以釋放需要的內存。
源碼位置:drivers/staging/android/lowmemorykiller.c
Linux 3.0版本在linux2.6.32版本的基礎上有9次改動更新:
1)、Don't try to kill the same pid over and over.
2)、Substantially reduce overhead during reclaim.
3)、Fix task_struct leak.
4)、Remove bitrotted codepath.
5)、Update arguments of shrinker for 2.6.35.
6)、Don't unregister notifier from atomic context.
7)、Don't wait more than one second for a process to die.
8)、Ignore shmem pages in page-cache.
9)、Fix arguments to lowmem_shrink.
3.4. Logger(日志設備)
為方便android應用開發過程中使用log信息來調試程序。
源碼位置:drivers/staging/android/logger.c
設備節點名:/dev/log/main /dev/log/event /dev/log/radio
Linux 3.0版本在linux2.6.32版本的基礎上無改動更新。
3.5. Android PMEM
向用戶空間提供連續的物理內存區域(DSP這類設備只能工作在連續的物理內存上)。
源碼位置:drivers/misc/pmem.c
該部分源碼augustatek有在linux2.6.32版本的基礎上改動更新:
1)、add pmem node create/destroy entries.
2)、change dsp mem map.
3)、add 7700 support.
3.6. switch
用於檢測一些開關量(耳塞插入、USB設備插入等)。
源碼位置:drivers/switch/switch_class.c
drivers/switch/switch_gpio.c
Linux 3.0版本在linux2.6.32版本的基礎上無改動更新。
3.7. Timed GPIO
將普通的GPIO驅動和內核定時器進行綁定,實現受時鐘控制的GPIO.
源碼位置:drivers/staging/android/timed_gpio.c
drivers/staging/android/timed_output.c
Linux 3.0版本在linux2.6.32版本的基礎上有1次改動更新:
1)、Properly discard invalid timeout values.
3.8. Android Ram Console
為了提供調試功能,將調試日志信息寫入Ram Console設備裡,該設備是一個基於Ram的buffer.
源碼位置:drivers/staging/android/ram_console.c
Linux 3.0版本在linux2.6.32版本的基礎上無改動更新。
3.9. Android Binder
是OpenBinder的Linux實現,為android系統運行提供進程間的通信機制。
Binder驅動源碼位置:drivers/staging/android/binder.c
設備節點名:/dev/binder
Linux 3.0版本在linux2.6.32版本基礎上的改動更新:
1)、Use seq_file for debug interface.
2)、Move debugging information from products to debugfs.
3)、Create dedicated workqueue for binder deffered work.
4)、Fix memory corruption via page aliasing.
Copyright © Linux教程網 All Rights Reserved