Android系統(tǒng)架構(gòu)的演變歷程是怎樣的,相信很多沒有經(jīng)驗的人對此束手無策,為此本文總結(jié)了問題出現(xiàn)的原因和解決方法,通過這篇文章希望你能解決這個問題。
為竹山等地區(qū)用戶提供了全套網(wǎng)頁設(shè)計制作服務(wù),及竹山網(wǎng)站建設(shè)行業(yè)解決方案。主營業(yè)務(wù)為網(wǎng)站設(shè)計、成都網(wǎng)站制作、竹山網(wǎng)站設(shè)計,以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務(wù)。我們深信只要達到每一位用戶的要求,就會得到認可,從而選擇與我們長期合作。這樣,我們也可以走得更遠!Android是一種以Linux與JAVA為基礎(chǔ)的開放源代碼操作系統(tǒng)。Android分為應(yīng)用層、應(yīng)用框架層、系統(tǒng)運行庫層和Linux內(nèi)核層。今天大家一起來大致回顧一下Android 系統(tǒng)架構(gòu)的演變歷程。
一、android和linux內(nèi)核
Android是基于Linux內(nèi)核的操作系統(tǒng),但是它與Linux之間還是有很大的差別,比如Android在Linux內(nèi)核的基礎(chǔ)上添加了自己所特有的驅(qū)動程序。Android為什么會選擇Linux?
1、強大的內(nèi)存管理和進程管理方案
2、基于權(quán)限的安全模式
3、支持共享庫
4、經(jīng)過認證的驅(qū)動模型
5、Linux本身就是開源項目
Android對linux系統(tǒng)的改動主要有
(1)它沒有g(shù)libc支持
由于Android最初用于一些便攜的移動設(shè)備上,所以,可能出于效率等方面的考慮,Android并沒有采用glibc作為C庫,而是Google自己開發(fā)了一套Bionic Libc來代替glibc。
(2)它并不包括一整套標(biāo)準的Linux使用程序
Android并沒有完全照搬Liunx系統(tǒng)的內(nèi)核,除了修正部分Liunx的Bug之外,還增加了不少內(nèi)容,比如:它基于ARM構(gòu)架增加的Gold-Fish平臺,以及yaffs2 FLASH文件系統(tǒng)(如果學(xué)習(xí)了嵌入式的話就會知道yaffs2 FLASH文件系統(tǒng)已經(jīng)在基于linux的很多嵌入式設(shè)備上采用了,技術(shù)已經(jīng)非常成熟)等。它沒有本地基于X服務(wù)的窗口系統(tǒng)。什么是本地窗口系統(tǒng)呢?本地窗口系統(tǒng)是指GNU/Linux上的X窗口系統(tǒng),或者Mac OX X的Quartz等。不同的操作系統(tǒng)的窗口系統(tǒng)可能不一樣,Android并沒有使用(也不需要使用)Linux的X窗口系統(tǒng)。
(3)Android專有的驅(qū)動程序
除了上面這些不同點之外,最重要的是,為了突出android特性,支持android設(shè)備,Android還對Linux設(shè)備驅(qū)動進行了增強,主要如下所示。
a、Android Binder 基于OpenBinder框架的一個驅(qū)動,用于提供 Android平臺的進程間通信(InterProcessCommunication,IPC)功能。源代碼位于drivers/staging/android/binder.c。
b、Android電源管理(PM) 一個基于標(biāo)準Linux電源管理系統(tǒng)的輕量級Android電源管理驅(qū)動,針對嵌入式設(shè)備做了很多優(yōu)化。源代碼位于:
kernel/power/earlysuspend.c
kernel/power/consoleearlysuspend.c
kernel/power/fbearlysuspend.c
kernel/power/wakelock.c
kernel/power/userwakelock.c
c、低內(nèi)存管理器(Low Memory Killer) 比Linux的標(biāo)準的OOM(Out Of Memory)機制更加靈活,它可以根據(jù)需要殺死進程以釋放需要的內(nèi)存。源代碼位于 drivers/staging/ android/lowmemorykiller.c。
d、匿名共享內(nèi)存(Ashmem) 為進程間提供大塊共享內(nèi)存,同時為內(nèi)核提供回收和管理這個內(nèi)存的機制。源代碼位于mm/ashmem.c。
e、Android PMEM(Physical) PMEM用于向用戶空間提供連續(xù)的物理內(nèi)存區(qū)域,DSP和某些設(shè)備只能工作在連續(xù)的物理內(nèi)存上。源代碼位于drivers/misc/pmem.c。
f、Android Logger 一個輕量級的日志設(shè)備,用于抓取Android系統(tǒng)的各種日志。源代碼位于drivers/staging/android/logger.c。
g、Android Alarm 提供了一個定時器,用于把設(shè)備從睡眠狀態(tài)喚醒,同時它還提供了一個即使在設(shè)備睡眠時也會運行的時鐘基準。源代碼位于drivers/rtc/alarm.c。
h、USB Gadget驅(qū)動 一個基于標(biāo)準 Linux USB gadget驅(qū)動框架的設(shè)備驅(qū)動,Android的USB驅(qū)動是基于gaeget框架的。源代碼位于drivers/usb/gadget/。
i、Android Ram Console 為了提供調(diào)試功能,Android允許將調(diào)試日志信息寫入一個被稱為RAM Console的設(shè)備里,它是一個基于RAM的Buffer。源代碼位于drivers/staging/android / ram_console.c。
j、Android timed device 提供了對設(shè)備進行定時控制的功能,目前支持vibrator和LED設(shè)備。源代碼位于drivers/staging/android /timed_output.c(timed_gpio.c)。
k、Yaffs2 文件系統(tǒng) Android采用Yaffs2作為MTD nand flash文件系統(tǒng),源代碼位于fs/yaffs2/目錄下。Yaffs2是一個快速穩(wěn)定的應(yīng)用于NAND和NOR Flash的跨平臺的嵌入式設(shè)備文件系統(tǒng),同其他Flash文件系統(tǒng)相比,Yaffs2能使用更小的內(nèi)存來保存其運行狀態(tài),因此它占用內(nèi)存小。Yaffs2的垃圾回收非常簡單而且快速,因此能表現(xiàn)出更好的性能。Yaffs2在大容量的NAND Flash上的性能表現(xiàn)尤為突出,非常適合大容量的Flash存儲。
二、最新的Android系統(tǒng)分為五層六區(qū)(域)
1、Linux內(nèi)核層(Linux Kernel):Android系統(tǒng)基于Linux2.6內(nèi)核,這一層為Android設(shè)備各種硬件提供了底層驅(qū)動,如顯示驅(qū)動、音頻驅(qū)動、照相機驅(qū)動、藍牙驅(qū)動、Wi-Fi驅(qū)動、電源管理等;
2、硬件抽象層(android hardware abstraction layer):安卓驅(qū)動硬件的方式與Linux不盡相同。傳統(tǒng)Linux的驅(qū)動完全存活于內(nèi)核空間。Android則在內(nèi)核外部增加了硬件抽象層(HAL, Hardware Abstraction Layer) ,把一部分驅(qū)動功能放到HAL層中。安卓為什么費盡麻煩增加一個HAL呢?為了保護源代碼。Linux內(nèi)核采用了GPL協(xié)議,所以硬件生產(chǎn)商想要支持Linux系統(tǒng),必須遵照GPL協(xié)議公開硬件驅(qū)動的源代碼。但這些源代碼中包含有許多硬件的設(shè)計信息,牽涉到硬件生產(chǎn)商的核心利益。而增加了HAL層之后,硬件廠商就不需要開放所有的驅(qū)動代碼了。
3、系統(tǒng)運行庫層(libraries):這一層通過一些C/C++庫(so庫)來為Android系統(tǒng)提供了主要的特性支持。如SQLite庫提供了數(shù)據(jù)庫支持,OpenGL ES庫提供了3D繪圖支持,Webkit庫提供了瀏覽器內(nèi)核支持等;
4、應(yīng)用框架層(application framework):這一層主要提供構(gòu)建應(yīng)用程序時可能用到的各種API,Android自帶的一些核心應(yīng)用就是使用這些API完成的,開發(fā)者也可通過使用API來構(gòu)建自己的應(yīng)用程序;應(yīng)用層(applications):這一層主要用于手機應(yīng)用的安裝,如系統(tǒng)自帶聯(lián)系人、短信等程序,或是第三方應(yīng)用程序。
以上為五層五區(qū),還有一個區(qū)域是存在于libraries層的Android運行時庫(Android Runtime),它主要提供一些核心庫,能夠允許開發(fā)者使用Java語言來編寫Android應(yīng)用。另外Android運行時庫中還包含了Dalvik虛擬機,它使得每一個Android應(yīng)用都能運行在獨立的進程中,且擁有一個自己的Dalvik虛擬機實例。相較于Java虛擬機,Dalvik是專門為移動設(shè)備定制的,它針對手機內(nèi)存、CPU性能有限等情況作了優(yōu)化處理。 每個Android應(yīng)用都運行在自己的進程上,享有Dalvik虛擬機為它分配的專有實例。為了支持多個虛擬機在同一設(shè)備上高效運行,dalvik被改寫過。Dalvik虛擬機執(zhí)行的是Dalvik格式的可執(zhí)行文件(.dex)-該格式經(jīng)過優(yōu)化,以將內(nèi)存好用降到最低。
三、Dalvik虛擬機 和代碼編譯
安卓的應(yīng)用是由Java編寫的,而包括HAL在內(nèi)的Linux的庫都是由C/C++編寫的,這個落差由Dalvik虛擬機銜接的。當(dāng)一個應(yīng)用運行時,進程空間內(nèi)將包含一個Dalvik虛擬機。Java程序編譯為字節(jié)碼文件,運行在Dalvik虛擬機中。根據(jù)Java代碼中的要求,Dalvik通過JNI(Java Native Interface)調(diào)用底層的C/C++編寫的功能。JNI是從Java中調(diào)用C/C++模塊的接口。由于上層接口的標(biāo)準化,字節(jié)碼可以暢通無阻的跨平臺運行。
Dalvik虛擬機內(nèi)部是一個“虛擬”進程空間,有自己的棧和堆,管理代碼的運行流程。如果這以“虛擬”進程空間不足,Dalvik內(nèi)建的垃圾回收(garbage collection)機制會自動清空堆上不再使用的對象。自動的垃圾回收簡化了程序員的工作,但速度較慢。手動內(nèi)存管理效率高,但需要更多的編程,且容易犯錯。
Android的4種文件類型Java,class,dex,apk
Class文件------Java編譯后的目標(biāo)文件不像J2se,java編譯成class就可以直接運行,android平臺上class文件不能直接在android上運行。 由于Google使用了自己的Dalvik來運行應(yīng)用, 所以這里的class也肯定不能在AndroidDalvik的java環(huán)境中運行, android的class文件實際上只是編譯過程中的中間目標(biāo)文件,需要鏈接成dex文件后才能在dalvik上運行
Dex文件-----Android平臺上的可執(zhí)行文件Android虛擬機Dalvik支持的字節(jié)碼文件格式Google在新發(fā)布的Android平臺上使用了自己的Dalvik虛擬機來定義, 這種虛擬機執(zhí)行的并非Java字節(jié)碼, 而是另一種字節(jié)碼: dex格式的字節(jié)碼。在編譯Java代碼之后,通過Android平臺上的工具可以將Java字節(jié)碼轉(zhuǎn)換成Dex字節(jié)碼。雖然Google稱Dalvik是為了移動設(shè)備定做的,但是業(yè)界很多人認為這是為了規(guī)避向sun申請Javalicense。這個DalvikVM針對手機程式/CPU做過最佳化,可以同時執(zhí)行許多VM而不會占用太多Resource。
Apk文件-------Android上的安裝文件Apk是Android安裝包的擴展名,一個Android安裝包包含了與某個Android應(yīng)用程序相關(guān)的所有文件。apk文件將AndroidManifest.xml文件、應(yīng)用程序代碼(.dex文件)、資源文件和其他文件打成一個壓縮包。一個工程只能打進一個.apk文件。
看完上述內(nèi)容,你們掌握Android系統(tǒng)架構(gòu)的演變歷程是怎樣的的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注創(chuàng)新互聯(lián)成都網(wǎng)站設(shè)計公司行業(yè)資訊頻道,感謝各位的閱讀!
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機、免備案服務(wù)器”等云主機租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。
本文題目:Android系統(tǒng)架構(gòu)的演變歷程是怎樣的-創(chuàng)新互聯(lián)
分享網(wǎng)址:http://muchs.cn/article20/pggco.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站內(nèi)鏈、定制網(wǎng)站、商城網(wǎng)站、品牌網(wǎng)站設(shè)計、響應(yīng)式網(wǎng)站、軟件開發(fā)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)