android和linux操作系统的区别
Android是由Google為移動設備開發的開源操作系統。Android軟件的原始開發商Android公司是由Google,Inc.于2005年購買的。它是基于Linux 2.6內核開發的。Linux操作系統于1991年由Linus Torvalds作為臺式計算機的開源操作系統開發。Linux操作系統是作為MINIX操作系統開發的,不支持使用Intel 80386機器的32位功能。雖然Android是基于Linux開發的,但操作系統并沒有完全使用標準的Linux內核。Android架構在此時只支持兩種類型的架構,即:x86和ARM。然而,Linux內核支持不同類型的架構,包括桌面/筆記本電腦/服務器系統中最常用的x86架構。Android系統使用移動互聯網設備(MID)的x86架構和手機的ARM平臺。
在開發Android操作系統的同時,其Linux內核還添加了一些功能:警報驅動程序,內核調試器,記錄器,電源管理和Android共享內存驅動程序。這些增強功能是建立在標準Linux內核之上的。Android內核是基于Linux2.6內核的,它是一個增強內核版本,除了修改部分Bug外,它提供用于支持Android平臺的設備驅動,其核心驅動主要包括:
Android Binder,基于OpenBinder框架的一個驅動,用于提供Android平臺的進程間通訊(IPC,inter-process communication)。
? ? 源代碼位于drivers/staging/android/binder.c
Android電源管理(PM),一個基于標準Linux電源管理系統的輕量級的Android電源管理驅動,針對嵌入式設備做了很多優化。
? ? 源代碼位于kernel/power/earlysuspend.c
? ? ? ? ? ? ? ? ? ? ? ? kernel/power/consoleearlysuspend.c
? ? ? ? ? ? ? ? ? ? ? ? kernel/power/fbearlysuspend.c
? ? ? ? ? ? ? ? ? ? ? ? kernel/power/wakelock.c
? ? ? ? ? ? ? ? ? ? ? ? kernel/power/userwakelock.c
低內存管理器(Low Memory Killer),相對于Linux標準OOM(Out Of Memory)機制更加靈活,它可以根據需要殺死進程來釋放需要的內存。
? ? 源代碼位于drivers/staging/android/lowmemorykiller.c
匿名共享內存(ashmem),為進程間提供大塊共享內存,同時為內核提供回收和管理這個內存的機制。
? ? 源代碼位于mm/ashmem.c
Android PMEM(Physical),PMEM用于向用戶空間提供連續的物理內存區域,DSP和某些設備只能工作在連續的物理內存上。
? ? 源代碼位于drivers/misc/pmem.c
Android Logger,一個輕量級的日志設備,用于抓取Android系統的各種日志。
? ? 源代碼位于drivers/staging/android/logger.c
Android Alarm,提供了一個定時器用于把設備從睡眠狀態喚醒,同時它也提供了一個即使在設備睡眠時也會運行的時鐘基準,
? ? 源代碼位于drivers/rtc/alarm.c
USB Gadget驅動,一個基于標準Linux USB gadget驅動框架的設備驅動,Android的USB驅動是基于gaeget框架的,
? ? 源代碼位于drivers/usb/gadget/
Android Ram Console,為了提供調試功能,Android允許將調試日志信息寫入一個被稱為RAM Console的設備里,它是一個基于RAM的Buffer。
? ? 源代碼位于drivers/staging/android/ram_console.c。
Android timed device,提供了對設備進行定時控制功能,目前支持vibrator和LED設備。
? ? 源代碼位于drivers/staging/android/timed_output.c(timed_gpio.c)。
Android操作系統自發布以來已經有了很多更新。對操作系統的每一次更新都包含很少的錯誤修復以及一些新功能。Android操作系統的每個新版本都以基于甜點項目的獨特名稱發布。這些版本遵循字母順序,例如; 蛋糕,甜甜圈,Eclair,Froyo,姜餅,蜂窩等。未來版本的Android命名為冰淇淋三明治將在2011年第4季度發布。Linux發布在各種各樣的風格,包括:debian,ubuntu,knoppix,gentoo, pacman,RPM,fedora,紅帽企業Linux,mandriva Linux,slackware和slax為主。基于ubuntu的發行版有幾個變種,例如:Edubuntu,Gobuntu,Kubuntu,Lubuntu,Xubuntu,Ubuntu Netbook,Ubuntu手機和Ubuntu Server版本。
大多數Linux發行版使用GNU C庫來滿足庫程序的需要。Android操作系統有自己的C庫,稱為Bionic,旨在提供快速的執行路徑和避免邊緣情況。該庫包含C BSD庫中的內容和Android的原始源代碼。Bionic 不與GNU C庫,ucLibc,或任何已知的Linux C庫相兼容。這意味一下幾件事情:
- 你不能指望依賴GNU C庫頭文件編譯出來的東東,能夠正常地動態鏈接到Bionic.
- 你應該 確實地 依賴Bionic并且使用Android工具鏈來編譯你的程序,工具鏈處理一些至關重要的細節問題,讓你的程序能正常運行。
此外,Android,Inc.已經開發了自己的Dalvik虛擬機,而不是Java虛擬機,它使用自己的字節碼而不是Java字節碼。
Android使用的存儲媒體被稱為“另一個Flash文件系統”(YAFFS)。由于移動設備中的空間限制,因此使用閃存。與傳統硬盤相比,閃存還提供快速讀取訪問時間和更好的抗動能沖擊阻力。Android中使用的閃存系統是NAND類型。標準的Linux系統使用磁盤驅動器而不是閃存。Ext3是標準Linux系統中使用最廣泛的文件系統。android采用Yaffs2作為MTD nand flash文件系統,源代碼位于fs/yaffs2/目錄下。Yaffs2是一個快速穩定的應用于NAND和NOR Flash的跨平臺的嵌入式設備文件系統,同其他Flash文件系統相比,Yaffs2使用更小的內存來保存他的運行狀態,因此它占用內存小;Yaffs2的垃圾回收非常簡單而且快速,因此能達到更好的性能;Yaffs2在大容量的NAND Flash上性能表現尤為明顯,非常適合大容量的Flash存儲。
在Android操作的設備中,減少浪費的電力由自己的Linux Power Manager管理,而不是Linux中采用的高級電源管理(APM)或高級配置和電源接口(ACPI)功能。
總結
以上是生活随笔為你收集整理的android和linux操作系统的区别的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 外设驱动库开发笔记14:DS18B20温
- 下一篇: 通讯接口应用笔记2:MAX3160实现多