第一、操作系統(tǒng)層(OS)
第二、各種庫(Libraries)和Android 運(yùn)行環(huán)境(RunTime)
第三、應(yīng)用程序框架(Application Framework)
第四、應(yīng)用程序(Application)
以下分別介紹Andoid各個(gè)層次的軟件的重點(diǎn)及其相關(guān)技術(shù):
1.操作系統(tǒng)層(OS)
Android基于Linux 2.6提供核心系統(tǒng)服務(wù),例如:安全、內(nèi)存管理、進(jìn)程管理、網(wǎng)絡(luò)堆棧、驅(qū)動(dòng)模型。Linux Kernel也作為硬件和軟件之間的抽象層,它隱藏具體硬件細(xì)節(jié)而為上層提供統(tǒng)一的服務(wù)。
如果你學(xué)過計(jì)算機(jī)網(wǎng)絡(luò)知道OSI/RM,就會(huì)知道分層的好處就是使用下層提供的服務(wù)而為上層提供統(tǒng)一的服務(wù),屏蔽本層及以下層的差異,當(dāng)本層及以下層發(fā)生了變化不會(huì)影響到上層。也就是說 各層各司其職,各層提供固定的SAP(Service Access Point),專業(yè)點(diǎn)可以說是 高內(nèi)聚、低耦合。
如果你只是做應(yīng)用開發(fā),就不需要深入了解Linux Kernel層。
顯示驅(qū)動(dòng)(Display Driver):常用基于Linux的幀緩沖(Frame Buffer)驅(qū)動(dòng)。
Flash內(nèi)存驅(qū)動(dòng)(Flash Memory Driver)
照相機(jī)驅(qū)動(dòng)(Camera Driver):常用基于Linux的v4l(Video for )驅(qū)動(dòng)。
音頻驅(qū)動(dòng)(Audio Driver):常用基于ALSA(Advanced Linux Sound Architecture,高級Linux聲音體系)驅(qū)動(dòng)。
WiFi驅(qū)動(dòng)(Camera Driver):基于IEEE 802.11標(biāo)準(zhǔn)的驅(qū)動(dòng)程序
鍵盤驅(qū)動(dòng)(KeyBoard Driver)
藍(lán)牙驅(qū)動(dòng)(Bluetooth Driver)
Binder IPC驅(qū)動(dòng): Andoid一個(gè)特殊的驅(qū)動(dòng)程序,具有單獨(dú)的設(shè)備節(jié)點(diǎn),提供進(jìn)程間通訊的功能。
Power Management(能源管理)
2. 各種庫(Libraries)和Android 運(yùn)行環(huán)境(RunTime)
本層次對應(yīng)一般嵌入式系統(tǒng),相當(dāng)于中間件層次。Android的本層次分成兩個(gè)部分一個(gè)是各種庫,另一個(gè)是Android 運(yùn)行環(huán)境。本層的內(nèi)容
大多是使用C++實(shí)現(xiàn)的。
在其中,各種庫包括:
▅ C庫:C語言的標(biāo)準(zhǔn)庫,這也是系統(tǒng)中一個(gè)最為底層的庫,C庫是通過Linux的系統(tǒng)調(diào)用來實(shí)現(xiàn)。
▅ 多媒體框架(MediaFrameword):這部分內(nèi)容是Android多媒體的核心部分,基于PacketVideo(即PV)的OpenCORE,從功能上本庫一共分為兩大部分,一個(gè)部分是音頻、視頻的回放(PlayBack),另一部分是則是音視頻的紀(jì)錄(Recorder)。
▅ SGL:2D圖像引擎。
▅ SSL:即Secure Socket Layer位于TCP/IP協(xié)議與各種應(yīng)用層協(xié)議之間,為數(shù)據(jù)通訊提供安全支持。
▅ OpenGL ES 1.0 :本部分提供了對3D的支持。
▅ 界面管理工具(Surface Management):本部分提供了對管理顯示子系統(tǒng)等功能。
▅ SQLite:一個(gè)通用的嵌入式數(shù)據(jù)庫
▅ WebKit:網(wǎng)絡(luò)瀏覽器的核心
▅ FreeType:位圖和矢量字體的功能。
Android 的各種庫一般是以系統(tǒng)中間件的形式提供的,它們均有的一個(gè)顯著特點(diǎn)就是與移動(dòng)設(shè)備的平臺的應(yīng)用密切相關(guān)。
Android 運(yùn)行環(huán)境主要指的虛擬機(jī)技術(shù)——Dalvik。Dalvik虛擬機(jī)和一般JAVA虛擬機(jī)(Java VM)不同,它執(zhí)行的不是JAVA標(biāo)準(zhǔn)的字節(jié)碼(bytecode )而是Dalvik可執(zhí)行格式(.dex)中執(zhí)行文件。在執(zhí)行的過程中,每一個(gè)應(yīng)用程序即一個(gè)進(jìn)程(Linux的一個(gè)Process)。 二者最大的區(qū)別在于Java VM是以基于棧的虛擬機(jī)(Stack-based),而Dalvik是基于寄存器的虛擬機(jī)(Register-based)。顯然,后者最大的好處在于可以根據(jù)硬件實(shí)現(xiàn)更大的優(yōu)化,這更適合移動(dòng)設(shè)備的特點(diǎn)。
3.應(yīng)用程序框架(Application Framework)
Android的應(yīng)用程序框架為應(yīng)用程序?qū)拥拈_發(fā)者提供APIs,它實(shí)際上是一個(gè)應(yīng)用程序的框架。由于上層的應(yīng)用程序是以JAVA構(gòu)建的,因此本層次提供的首先包含了UI程序中所需要的各種控件:
例如: Views (視圖組件)包括 lists(列表), grids(柵格), text boxes(文本框), buttons(按鈕)等。甚至一個(gè)嵌入式的Web瀏覽器。
當(dāng)發(fā)動(dòng)機(jī)起動(dòng)時(shí),電控單元進(jìn)入工作狀態(tài),某些程序和步驟從ROM中取出,進(jìn)入CPU。這些程序可以是控制點(diǎn)火時(shí)刻、控制汽油噴射、控制怠速等。通過CPU的控制,一個(gè)個(gè)指令逐個(gè)地進(jìn)行循環(huán)。執(zhí)行程序中所需的發(fā)動(dòng)機(jī)信息,來自各個(gè)傳感器。從傳感器來的信號,首先進(jìn)入輸入回路,對其信號進(jìn)行處理。
如是數(shù)字信號,根據(jù)CPU的安排,經(jīng)I/O接口,直接進(jìn)入微機(jī)。
如是模擬信號,還要經(jīng)過A/D轉(zhuǎn)換器,轉(zhuǎn)換成數(shù)字信號后,才能經(jīng)I/O接口進(jìn)入微機(jī)。
大多數(shù)信息,暫存在RAM內(nèi),根據(jù)指令再從RAM送至CPU。
榮耀的系統(tǒng)是基于安卓系統(tǒng)開發(fā)的榮耀magic系統(tǒng),架構(gòu)本身是arm架構(gòu),也就是普通安卓架構(gòu)的升級版。
這種架構(gòu)本身是基于安卓系統(tǒng)開發(fā),比如現(xiàn)在最新的music5系統(tǒng)就是基于安卓13進(jìn)行開發(fā)的,所以它的架構(gòu)也是采用的安卓的基礎(chǔ)架構(gòu),也就是arm架構(gòu)。
小米系統(tǒng)采用了基于Android的MIUI系統(tǒng),其架構(gòu)包括應(yīng)用層、框架層和底層三個(gè)部分。應(yīng)用層包括預(yù)裝的應(yīng)用程序和用戶下載的應(yīng)用程序,框架層提供了一些API和工具,幫助應(yīng)用程序開發(fā)者進(jìn)行應(yīng)用程序開發(fā)和調(diào)試。
底層則是處理系統(tǒng)資源和提供底層服務(wù)的部分,包括Linux內(nèi)核、硬件驅(qū)動(dòng)程序和系統(tǒng)服務(wù)。小米系統(tǒng)通過這三個(gè)層次的結(jié)構(gòu)實(shí)現(xiàn)了良好的系統(tǒng)性能和用戶體驗(yàn)。
DNFT協(xié)議包括協(xié)議層、跨鏈層以及應(yīng)用層。在協(xié)議層,DNFT包括了NFT生成、去中心化交易、NFT維護(hù)、NFT回收、NFT治理、代幣經(jīng)濟(jì)等模塊;跨鏈橋可以連接波卡、以太坊、BSC、Heco等多鏈生態(tài),為NFT提供跨鏈的流動(dòng)性;同時(shí)波卡生態(tài)內(nèi)可以共享其安全性并實(shí)現(xiàn)自由跨鏈交互;應(yīng)用層則包括了NFT市場、NFT游戲、NFT藝術(shù)品、NFT數(shù)據(jù)以及NFT DeFi等。
系統(tǒng)架構(gòu):指的完整系統(tǒng)的組成架構(gòu),例如系統(tǒng)分成幾個(gè)部分?服務(wù)平臺、管理門戶、終端門戶、ATM門戶、外部系統(tǒng)以及接口、支撐系統(tǒng)等,將這些系統(tǒng)進(jìn)行合理的劃分。然后再進(jìn)行功能分類細(xì)分,例如服務(wù)平臺內(nèi)部劃分為系統(tǒng)管理、用戶管理、帳號管理、支付管理、接口層、統(tǒng)計(jì)分析等邏輯功能??傊瑢⒄麄€(gè)系統(tǒng)業(yè)務(wù)分解為邏輯功能模塊,并且科學(xué)合理,就是系統(tǒng)架構(gòu)了。
技術(shù)架構(gòu):從技術(shù)層面描述,主要是分層模型,例如持久層、數(shù)據(jù)層、邏輯層、應(yīng)用層、表現(xiàn)層等,然后每層使用什么技術(shù)框架,例如Spring、hibernate、ioc、MVC、成熟的類庫、中間件、WebService等,分別說明,要求這些技術(shù)能夠?qū)⒄麄€(gè)系統(tǒng)的主要實(shí)現(xiàn)概括。
應(yīng)用架構(gòu):主要考慮部署,例如你不同的應(yīng)用如何分別部署,如何支持靈活擴(kuò)展、大并發(fā)量、安全性等,需要畫出物理網(wǎng)絡(luò)部署圖。按照應(yīng)用進(jìn)行劃分的話,還需要考慮是否支持分布式SOA。
fmcs是當(dāng)今現(xiàn)代客機(jī)的重要組成部分。一般一架飛機(jī)會(huì)配有3臺飛行管理計(jì)算機(jī)。
fmcs綜合了以前一些飛機(jī)電子設(shè)備的功能并加以發(fā)展擴(kuò)大,使設(shè)備的自動(dòng)化程度更高。
飛行員通過fmcs操縱飛機(jī)顯得非常簡單,方便。這樣,可以讓飛行員騰出更多的時(shí)間更安全地管理飛機(jī)的飛行。
飛行員只要向飛行管理計(jì)算機(jī)輸入飛機(jī)的起飛機(jī)場、目的地機(jī)場、負(fù)荷、油量、經(jīng)濟(jì)指數(shù)并規(guī)定飛行航路,fmcs就能根據(jù)IRS和無線電導(dǎo)航設(shè)備的信號準(zhǔn)確地計(jì)算出飛機(jī)最合理的飛行航路及速度。
根據(jù)計(jì)算發(fā)出指令到AFCS的自動(dòng)駕駛儀或飛行指引系統(tǒng),引導(dǎo)飛機(jī)從起飛機(jī)場到目的地機(jī)場.
同樣,飛行員只要通過fmcs的控制顯示組件輸入飛機(jī)的起飛全重以及性能要求,fmcs就能計(jì)算從起飛機(jī)場到目的地機(jī)場飛行的最經(jīng)濟(jì)速度和巡航高度,也能連續(xù)計(jì)算推力限期值。
送出指令到自動(dòng)駕駛和自動(dòng)油門系統(tǒng)。
fmcs是用當(dāng)時(shí)飛機(jī)所在的位置,飛機(jī)性能參數(shù),目的地機(jī)場的經(jīng)緯度和可用跑道,各航路點(diǎn),無線電導(dǎo)航臺以及等待航線,進(jìn)近程序等信號或數(shù)據(jù)進(jìn)行綜合分析運(yùn)算,以確定飛機(jī)的航向,速度以及爬高,下降角度和升降速度,階梯爬高和下降等指令,來計(jì)劃飛機(jī)飛行的水平相垂直剖面。
一般而言,架構(gòu)有兩個(gè)要素: 它是一個(gè)軟件系統(tǒng)從整體到部分的最高層次的劃分。 一個(gè)系統(tǒng)通常是由元件組成的,而這些元件如何形成、相互之間如何發(fā)生作用,則是關(guān)于這個(gè)系統(tǒng)本身結(jié)構(gòu)的重要信息。 詳細(xì)地說,就是要包括架構(gòu)元件(ArchitectureComponent)、聯(lián)結(jié)器(Connector)、任務(wù)流(Task-flow)。所謂架構(gòu)元素,也就是組成系統(tǒng)的核心"磚瓦",而聯(lián)結(jié)器則描述這些元件之間通訊的路徑、通訊的機(jī)制、通訊的預(yù)期結(jié)果,任務(wù)流則描述系統(tǒng)如何使用這些元件和聯(lián)結(jié)器完成某一項(xiàng)需求。 建造一個(gè)系統(tǒng)所作出的最高層次的、以后難以更改的,商業(yè)的和技術(shù)的決定。 在建造一個(gè)系統(tǒng)之前會(huì)有很多的重要決定需要事先作出,而一旦系統(tǒng)開始進(jìn)行詳細(xì)設(shè)計(jì)甚至建造,這些決定就很難更改甚至無法更改。顯然,這樣的決定必定是有關(guān)系統(tǒng)設(shè)計(jì)成敗的最重要決定,必須經(jīng)過非常慎重的研究和考察。 計(jì)算機(jī)軟件的歷史開始于五十年代,歷史非常短暫,而相比之下建筑工程則從石器時(shí)代就開始了,人類在幾千年的建筑設(shè)計(jì)實(shí)踐中積累了大量的經(jīng)驗(yàn)和教訓(xùn)。建筑設(shè)計(jì)基本上包含兩點(diǎn),一是建筑風(fēng)格,二是建筑模式。獨(dú)特的建筑風(fēng)格和恰當(dāng)選擇的建筑模式,可以使一個(gè)獨(dú)一無二。 正如同軟件本身有其要達(dá)到的目標(biāo)一樣,架構(gòu)設(shè)計(jì)要達(dá)到的目標(biāo)是什么呢?一般而言,軟件架構(gòu)設(shè)計(jì)要達(dá)到如下的目標(biāo): ·可靠性(Reliable)。軟件系統(tǒng)對于用戶的商業(yè)經(jīng)營和管理來說極為重要,因此軟件系統(tǒng)必須非??煽?。 ·安全行(Secure)。軟件系統(tǒng)所承擔(dān)的交易的商業(yè)價(jià)值極高,系統(tǒng)的安全性非常重要。 ·可擴(kuò)展性(Scalable)。軟件必須能夠在用戶的使用率、用戶的數(shù)目增加很快的情況下,保持合理的性能。只有這樣,才能適應(yīng)用戶的市場擴(kuò)展得可能性。 ·可定制化(Customizable)。同樣的一套軟件,可以根據(jù)客戶群的不同和市場需求的變化進(jìn)行調(diào)整。 ·可擴(kuò)展性(Extensible)。在新技術(shù)出現(xiàn)的時(shí)候,一個(gè)軟件系統(tǒng)應(yīng)當(dāng)允許導(dǎo)入新技術(shù),從而對現(xiàn)有系統(tǒng)進(jìn)行功能和性能的擴(kuò)展
一、目的不同:
系統(tǒng)架構(gòu)是對已確定的需求的技術(shù)實(shí)現(xiàn)構(gòu)架、作好規(guī)劃,運(yùn)用成套、完整的工具,在規(guī)劃的步驟下去完成任務(wù)。
應(yīng)用構(gòu)架是描述了IT系統(tǒng)功能和技術(shù)實(shí)現(xiàn)內(nèi)容的構(gòu)架。
二、實(shí)現(xiàn)方式不同:
系統(tǒng)架構(gòu)通過規(guī)劃程序的運(yùn)行模式、層次結(jié)構(gòu)、調(diào)用關(guān)系來具體實(shí)現(xiàn)架構(gòu)。
應(yīng)用構(gòu)架通過架構(gòu)圖的方式來具體實(shí)現(xiàn)架構(gòu)。
鴻蒙系統(tǒng)是華為自主研發(fā)的全場景分布式操作系統(tǒng),其架構(gòu)包括三層:底層核心內(nèi)核、中間的分布式能力框架和頂層的應(yīng)用框架。
底層核心內(nèi)核提供高性能、低延遲的操作系統(tǒng)基礎(chǔ)服務(wù);分布式能力框架實(shí)現(xiàn)設(shè)備間的協(xié)同工作和資源共享;應(yīng)用框架提供開發(fā)者友好的開發(fā)環(huán)境和豐富的應(yīng)用生態(tài)。鴻蒙系統(tǒng)采用分布式架構(gòu),能夠?qū)崿F(xiàn)設(shè)備之間的無縫連接和協(xié)同工作,為用戶提供更流暢、智能的體驗(yàn)。