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)功能。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章