日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁(yè) > 嵌入式 > 嵌入式軟件
[導(dǎo)讀]Android是Google公司開(kāi)發(fā)的基于Linux平臺(tái)的開(kāi)源手機(jī)操作系統(tǒng),它包括操作系統(tǒng)、中間件、用戶界面和應(yīng)用程序,而且不存在任何以往阻礙移動(dòng)產(chǎn)業(yè)創(chuàng)新的專利權(quán)障礙,并由Google公司于2007年11月5日正式發(fā)布。同時(shí),Google公司組建了一個(gè)開(kāi)放手機(jī)聯(lián)盟,這個(gè)聯(lián)盟由中國(guó)移動(dòng)、摩托羅拉、高通、宏達(dá)電和T-Mobile等在內(nèi)的全球30多家技術(shù)和無(wú)線應(yīng)用的領(lǐng)軍企業(yè)組成,Google通過(guò)與運(yùn)營(yíng)商、設(shè)備制造商、開(kāi)發(fā)商和其他有關(guān)各方結(jié)成深層次的合作伙伴關(guān)系,希望借助建立標(biāo)準(zhǔn)化、開(kāi)放式的移動(dòng)電話軟件平臺(tái),在移

Android是Google公司開(kāi)發(fā)的基于Linux平臺(tái)的開(kāi)源手機(jī)操作系統(tǒng),它包括操作系統(tǒng)、中間件、用戶界面和應(yīng)用程序,而且不存在任何以往阻礙移動(dòng)產(chǎn)業(yè)創(chuàng)新的專利權(quán)障礙,并由Google公司于2007年11月5日正式發(fā)布。同時(shí),Google公司組建了一個(gè)開(kāi)放手機(jī)聯(lián)盟,這個(gè)聯(lián)盟由中國(guó)移動(dòng)、摩托羅拉、高通、宏達(dá)電和T-Mobile等在內(nèi)的全球30多家技術(shù)和無(wú)線應(yīng)用的領(lǐng)軍企業(yè)組成,Google通過(guò)與運(yùn)營(yíng)商、設(shè)備制造商、開(kāi)發(fā)商和其他有關(guān)各方結(jié)成深層次的合作伙伴關(guān)系,希望借助建立標(biāo)準(zhǔn)化、開(kāi)放式的移動(dòng)電話軟件平臺(tái),在移動(dòng)產(chǎn)業(yè)內(nèi)形成一個(gè)開(kāi)放式的生態(tài)系統(tǒng);可預(yù)見(jiàn)地,生產(chǎn)和使用基于Android系統(tǒng)的嵌入式手持移動(dòng)設(shè)備將是未來(lái)的發(fā)展趨勢(shì),對(duì)相應(yīng)軟件的需求量也將日趨增長(zhǎng),因此對(duì)Android系統(tǒng)內(nèi)部作一個(gè)完整和深入的分析,對(duì)基于Android平臺(tái)的軟件移植和開(kāi)發(fā)是很有益處的。

1 Android系統(tǒng)平臺(tái)架構(gòu)

對(duì)操作系統(tǒng)而言,必須做到設(shè)計(jì)合理、層次分明,同時(shí)還需考慮整個(gè)系統(tǒng)的結(jié)構(gòu)要聚耦適當(dāng),Android系統(tǒng)是基于linux內(nèi)核的,因此還必須具備開(kāi)源的特性,以符合開(kāi)源人員共同工作。

從系統(tǒng)的組成要件來(lái)講,Android平臺(tái)架構(gòu)包括硬件設(shè)備、板級(jí)支持包、驅(qū)動(dòng)程序、操作系統(tǒng)內(nèi)核、程序運(yùn)行庫(kù),運(yùn)行框架,應(yīng)用程序等,它們的有機(jī)結(jié)合和協(xié)同工作共同完成了整個(gè)系統(tǒng)的正常運(yùn)行和對(duì)事務(wù)的處理。

依據(jù)Google開(kāi)源資料可知,整個(gè)系統(tǒng)由Linux內(nèi)核、程序庫(kù)、Android Runtime、應(yīng)用程序框架和應(yīng)用程序等5部分組成,,系統(tǒng)架構(gòu)如圖1所示。

參照?qǐng)D1,由上而下對(duì)組成系統(tǒng)各部分的主要組件作以下描述。

1.1 Linux內(nèi)核

Android基于Linux 2.6內(nèi)核,但并非完全照搬內(nèi)核,而是對(duì)內(nèi)核作了部分增刪和修改,在Linux 2.6內(nèi)核的基礎(chǔ)上,Android核心系統(tǒng)實(shí)現(xiàn)了安全性、內(nèi)存管理、進(jìn)程管理、網(wǎng)絡(luò)協(xié)議棧和驅(qū)動(dòng)模型等功能,Linux內(nèi)核也同時(shí)作為硬件和軟件棧之間的抽象層。

①硬件驅(qū)動(dòng)程序:完成與各種硬件的通信,Linux內(nèi)核提供了大部分設(shè)備的驅(qū)動(dòng)程序,如顯示屏,攝像頭,內(nèi)存,鍵盤(pán),無(wú)線網(wǎng)絡(luò),音頻設(shè)備,電源等組件。

②系統(tǒng)內(nèi)存管理:對(duì)所有可用的內(nèi)存進(jìn)行統(tǒng)一編碼管理,定義一整套內(nèi)存定位,使用與回收的策略。

③系統(tǒng)進(jìn)程管理:內(nèi)核管理進(jìn)程的創(chuàng)建與銷毀,管理進(jìn)程間的通信,以及采取必要的措施避免死鎖等內(nèi)容。

④網(wǎng)絡(luò)管理系統(tǒng):無(wú)線網(wǎng)絡(luò)設(shè)備工作原理,內(nèi)核掌控如何讀取網(wǎng)絡(luò)設(shè)備中的緩存數(shù)據(jù)。

1.2 程序庫(kù)

程序庫(kù)是指可供使用的各種標(biāo)準(zhǔn)程序、子程序、文件以及它們的目錄等信息的有序集合,Android包含一些C/C++庫(kù),Android系統(tǒng)中不同的組件通過(guò)應(yīng)用程序框架可以使用這些庫(kù),以下是一些核心庫(kù):

Surface Manager:管理顯示子系統(tǒng),并且為多個(gè)應(yīng)用程序提供2D和3D圖層的無(wú)縫融合;

Media Framework:基于OpenCORE的多媒體框架,支持多種常用的音頻、視頻格式文件的回放和錄制,同時(shí)支持靜態(tài)圖像文件。

SQLite:一個(gè)對(duì)于所有應(yīng)用程序可用,功能強(qiáng)勁的輕型關(guān)系型數(shù)據(jù)庫(kù)引擎。

OpenGL ES:3D圖形庫(kù),用于3D圖形渲染,該庫(kù)可以使用3D硬件加速。

FreeType:位圖(Bitmap)和矢量(Vector)字體顯示。

WebKit:支持Android瀏覽器和一個(gè)可嵌入的Web視圖。

SGL:2D圖形庫(kù),用于2D圖形渲染。

LibC:一個(gè)從BSD繼承的標(biāo)準(zhǔn)C系統(tǒng)函數(shù)庫(kù),它是專門(mén)為基于嵌入式Linux設(shè)備定制的。

1.3 Android運(yùn)行庫(kù)(Android Runtime)

Android運(yùn)行庫(kù)包括兩部分:一是核心庫(kù),二是自身的虛擬機(jī)。

核心庫(kù)提供Java編程語(yǔ)言核心庫(kù)的大多數(shù)功能。Dalvik虛擬機(jī)是Google專為Android開(kāi)發(fā)的,比SunJava虛擬機(jī)的效率更高,功能也更為復(fù)雜,以更好的支撐Android平臺(tái),并擁有獨(dú)立的版權(quán)。每一個(gè)Android應(yīng)用程序都在自己的進(jìn)程中運(yùn)行,都擁有一個(gè)獨(dú)立的Dalvik虛擬機(jī)實(shí)例, Dalvik虛擬機(jī)執(zhí)行.dex的可執(zhí)行文件,該格式文件針對(duì)小內(nèi)存的使用進(jìn)行了優(yōu)化,同時(shí)虛擬機(jī)是基于寄存器實(shí)現(xiàn)的,所有的類由Java編譯器編譯,然后通過(guò)SDK中的相應(yīng)工具轉(zhuǎn)化成.dex格式,最后由虛擬機(jī)執(zhí)行。

1.4 應(yīng)用程序框架

應(yīng)用程序框架是指定義了一個(gè)應(yīng)用程序運(yùn)行所必須的全部功能組件,開(kāi)發(fā)者也可以訪問(wèn)核心應(yīng)用程序所使用的API框架。該應(yīng)用程序的架構(gòu)設(shè)計(jì)簡(jiǎn)化了組件的重用;任何一個(gè)應(yīng)用程序都可以發(fā)布它的功能塊,并且任何其他的應(yīng)用程序都可以使用其所發(fā)布的功能塊(應(yīng)該遵循框架的安全性限制)。同樣,該應(yīng)用程序的重用機(jī)制也使用戶可以方便地替換程序組件。

隱藏在每個(gè)應(yīng)用后面的是一系列的服務(wù)和系統(tǒng),其中包括:

活動(dòng)管理器(Activity Manager):用來(lái)管理應(yīng)用程序生命周期,并且提供常用的導(dǎo)航回退功能。

豐富而又可擴(kuò)展的視圖(Views):可以用來(lái)構(gòu)建應(yīng)用程序,它包括列表(Lists)、網(wǎng)格(Grids)、文本框

(Text Boxes)、按鈕(Buttons),甚至包括可嵌入的Web瀏覽器。

內(nèi)容提供器(Content Providers):使得應(yīng)用程序可以訪問(wèn)另一個(gè)應(yīng)用程序的數(shù)據(jù),或者可以共享它們自己的數(shù)據(jù)。

資源管理器(Resource Manager):提供非代碼資源的訪問(wèn),如本地字符串、圖形和布局文件(Layout Files)。

通知管理器(Notification Manager):使得應(yīng)用程序可以在狀態(tài)欄中顯示自定義的提示信息。

Android程序框架體顯了“統(tǒng)一”與“兼容”的原則,其優(yōu)勢(shì)歸納為:

①任何一個(gè)應(yīng)用程序都可以發(fā)布它的功能塊。

②所有的應(yīng)用程序在Android平臺(tái)上都是平等的。

③所有的應(yīng)用程序與資源都被按類別進(jìn)行分別管理。

④所有程序各司其職。

1.5 應(yīng)用程序

Android系統(tǒng)發(fā)布時(shí),會(huì)同一系列核心應(yīng)用程序和常用程序一起發(fā)布,如常用的手機(jī)功能程序,包括語(yǔ)音電話、通訊錄、短信收發(fā)、照相、話機(jī)設(shè)置等;數(shù)據(jù)應(yīng)用程序,包括郵件工具,日程表,瀏覽器,地圖導(dǎo)航等,以及Android Market上的各種應(yīng)用程序;所有的應(yīng)用程序都是使用Java語(yǔ)言編寫(xiě)。

2 Android內(nèi)核

Android內(nèi)核基于Linux2.6內(nèi)核作了部分修改和增刪,是一個(gè)增強(qiáng)內(nèi)核版本,除了修改部分Bug外,它還提供了用于支持Android平臺(tái)的設(shè)備驅(qū)動(dòng),與標(biāo)準(zhǔn)的Linux內(nèi)核比較、分析可知其內(nèi)核的全貌和基本結(jié)構(gòu),下面對(duì)基于Android修改的核心驅(qū)動(dòng)作初步闡述:

2.1 系統(tǒng)進(jìn)程管理

Android平臺(tái)的進(jìn)程間通訊基于Binder機(jī)制實(shí)現(xiàn),它提供了一種進(jìn)程間通信的方法,即一個(gè)進(jìn)程可以以類似遠(yuǎn)程過(guò)程調(diào)用的形式調(diào)用另一個(gè)進(jìn)程所提供的功能,然后帶著執(zhí)行的結(jié)果返回。Android Binder是基于Service與Client的,有一個(gè)ServiceManager的守護(hù)進(jìn)程管理著系統(tǒng)的各個(gè)服務(wù),它負(fù)責(zé)監(jiān)聽(tīng)是否有其他程序向其發(fā)送請(qǐng)求,如果有請(qǐng)求就響應(yīng),每個(gè)服務(wù)都要在ServiceManager中注冊(cè),而請(qǐng)求服務(wù)的客戶端去ServiceManager請(qǐng)求服務(wù)。

2.2 內(nèi)存管理

低內(nèi)存管理器(Low Memory Killer):相對(duì)于Linux標(biāo)準(zhǔn)OOM(Out Of Memory)機(jī)制更加靈活,它可以根據(jù)需要?dú)⑺肋M(jìn)程來(lái)釋放需要的內(nèi)存。匿名共享內(nèi)存(ashmem):為進(jìn)程間提供大塊共享內(nèi)存,同時(shí)為內(nèi)核提供回收和管理這個(gè)內(nèi)存的機(jī)制。Android PMEM(Physical):PMEM用于向用戶空間提供連續(xù)的物理內(nèi)存區(qū)域,DSP和某些設(shè)備只能工作在連續(xù)的物理內(nèi)存上。

2.3 文件系統(tǒng)管理

Android平臺(tái)采用Yaffs2作為MTD nand flash文件系統(tǒng),Yaffs2是一個(gè)快速穩(wěn)定的應(yīng)用于NAND和NOR Flash的跨平臺(tái)的嵌入式設(shè)備文件系統(tǒng),同其他Flash文件系統(tǒng)相比,Yaffs2使用更小的內(nèi)存來(lái)保存它的運(yùn)行狀態(tài),因此它占用內(nèi)存小;Yaffs2的垃圾回收非常簡(jiǎn)單而且快速,因此能達(dá)到更好的性能;Yaffs2在大容量的NAND Flash上性能表現(xiàn)尤為明顯,非常適合大容量的Flash存儲(chǔ)。

2.4 時(shí)鐘管理

Android Alarm,提供了一個(gè)定時(shí)器用于把設(shè)備從睡眠狀態(tài)喚醒,同時(shí)它也提供了一個(gè)即使在設(shè)備睡眠時(shí)也會(huì)運(yùn)行的時(shí)鐘基準(zhǔn),Android timed device,提供了對(duì)設(shè)備進(jìn)行定時(shí)控制功能,目前支持vibrator和LED設(shè)備。

2.5 電源管理

Android電源管理(PM),一個(gè)基于標(biāo)準(zhǔn)Linux電源管理系統(tǒng)的輕量級(jí)的Android電源管理驅(qū)動(dòng),針對(duì)嵌入式設(shè)備做了很多優(yōu)化。

2.6 USB管理

Android的USB驅(qū)動(dòng)是基于gaeget框架的,USB Gadget驅(qū)動(dòng)是一個(gè)基于標(biāo)準(zhǔn)Linux USB gadget驅(qū)動(dòng)框架的設(shè)備驅(qū)動(dòng)。

2.7 系統(tǒng)日志管理

Android Logger,一個(gè)輕量級(jí)的日志設(shè)備,用于抓取Android系統(tǒng)的各種日志。

3 結(jié)束語(yǔ)

Android是一款開(kāi)放的、基于Linux內(nèi)核的嵌入式操作系統(tǒng),將被廣泛地應(yīng)用到各種移動(dòng)手持設(shè)備中,充分發(fā)揮其強(qiáng)大的網(wǎng)絡(luò)功能;由于開(kāi)源的特性,Android不區(qū)分核心應(yīng)用程序和第三方應(yīng)用程序,并可自由的吸納新出現(xiàn)的尖端技術(shù);同時(shí),Android提供廣泛而實(shí)用的函數(shù)庫(kù)和工具,利用它們可以開(kāi)發(fā)豐富的應(yīng)用程序。由此可以展望,基于開(kāi)放手機(jī)聯(lián)盟(Open Handset Alliance)平臺(tái)強(qiáng)大的技術(shù)實(shí)力和市場(chǎng)推廣,Android系統(tǒng)在移動(dòng)嵌入式領(lǐng)域的應(yīng)用將會(huì)非常廣闊。

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

CPU親和度通過(guò)限制進(jìn)程或線程可以運(yùn)行的CPU核心集合,使得它們只能在指定的CPU核心上執(zhí)行。這可以減少CPU緩存的失效次數(shù),提高緩存命中率,從而提升系統(tǒng)性能。

關(guān)鍵字: Linux 嵌入式

在Linux系統(tǒng)性能優(yōu)化中,內(nèi)存管理與網(wǎng)絡(luò)連接處理是兩大核心領(lǐng)域。vm.swappiness與net.core.somaxconn作為關(guān)鍵內(nèi)核參數(shù),直接影響系統(tǒng)在高負(fù)載場(chǎng)景下的穩(wěn)定性與響應(yīng)速度。本文通過(guò)實(shí)戰(zhàn)案例解析這兩個(gè)...

關(guān)鍵字: Linux 內(nèi)存管理

對(duì)于LLM,我使用b谷歌Gemini的免費(fèi)層,所以唯一的成本是n8n托管。在使用了n8n Cloud的免費(fèi)積分后,我決定將其托管在Railway上(5美元/月)。然而,由于n8n是開(kāi)源的,您可以在自己的服務(wù)器上托管它,而...

關(guān)鍵字: 人工智能 n8n Linux

其他電腦(比如安卓手機(jī)/平板電腦)的屏幕壞了,你可能想在安排維修之前緊急訪問(wèn)一些東西。你可以使用android的USB OTG功能(是的,幾乎每個(gè)android都支持這個(gè)功能,你可以將鼠標(biāo)和鍵盤(pán)連接到它)。

關(guān)鍵字: USB 鼠標(biāo) Android 樹(shù)莓派

在Linux系統(tǒng)管理中,權(quán)限控制是安全運(yùn)維的核心。本文通過(guò)解析/etc/sudoers文件配置與組策略的深度應(yīng)用,結(jié)合某金融企業(yè)生產(chǎn)環(huán)境案例(成功攔截98.7%的非法提權(quán)嘗試),揭示精細(xì)化權(quán)限管理的關(guān)鍵技術(shù)點(diǎn),包括命令別...

關(guān)鍵字: Linux 用戶權(quán)限 sudoers文件

Linux內(nèi)核中的信號(hào)量(Semaphore)是一種用于資源管理的同步原語(yǔ),它允許多個(gè)進(jìn)程或線程對(duì)共享資源進(jìn)行訪問(wèn)控制。信號(hào)量的主要作用是限制對(duì)共享資源的并發(fā)訪問(wèn)數(shù)量,從而防止系統(tǒng)過(guò)載和數(shù)據(jù)不一致的問(wèn)題。

關(guān)鍵字: Linux 嵌入式

在云計(jì)算與容器化技術(shù)蓬勃發(fā)展的今天,Linux網(wǎng)絡(luò)命名空間(Network Namespace)已成為構(gòu)建輕量級(jí)虛擬網(wǎng)絡(luò)的核心組件。某頭部互聯(lián)網(wǎng)企業(yè)通過(guò)命名空間技術(shù)將測(cè)試環(huán)境資源消耗降低75%,故障隔離效率提升90%。本...

關(guān)鍵字: Linux 云計(jì)算

在Linux內(nèi)核4.18+和主流發(fā)行版(RHEL 8/Ubuntu 20.04+)全面轉(zhuǎn)向nftables的背景下,某電商平臺(tái)通過(guò)遷移將防火墻規(guī)則處理效率提升40%,延遲降低65%。本文基于真實(shí)生產(chǎn)環(huán)境案例,詳解從ipt...

關(guān)鍵字: nftables Linux

在Linux設(shè)備驅(qū)動(dòng)開(kāi)發(fā)中,等待隊(duì)列(Wait Queue)是實(shí)現(xiàn)進(jìn)程睡眠與喚醒的核心機(jī)制,它允許進(jìn)程在資源不可用時(shí)主動(dòng)放棄CPU,進(jìn)入可中斷睡眠狀態(tài),待資源就緒后再被喚醒。本文通過(guò)C語(yǔ)言模型解析等待隊(duì)列的實(shí)現(xiàn)原理,結(jié)合...

關(guān)鍵字: 驅(qū)動(dòng)開(kāi)發(fā) C語(yǔ)言 Linux

在Unix/Linux進(jìn)程間通信中,管道(pipe)因其簡(jiǎn)單高效被廣泛使用,但默認(rèn)的半雙工特性和無(wú)同步機(jī)制容易導(dǎo)致數(shù)據(jù)競(jìng)爭(zhēng)。本文通過(guò)父子進(jìn)程雙向通信案例,深入分析互斥鎖與狀態(tài)機(jī)在管道同步中的應(yīng)用,實(shí)現(xiàn)100%可靠的數(shù)據(jù)傳...

關(guān)鍵字: 管道通信 父子進(jìn)程 Linux
關(guān)閉