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