日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

Android系統架構淺析-「Android取經之路」

 

本文主要介紹Android的系統架構,Android使用linux內核(Marco kernel),但是Android的架構又與Linux系統有所不同,因此在介紹Android系統架構之前,我們先一起來了解一下Linux系統的架構。

Linux系統架構

Linux架構如下圖所示:

Android系統架構淺析-「Android取經之路」

Linux系統架構

  • Computer Resources:硬件資源
  • Kernel:內核
  • Shell:shell是系統的用戶界面,提供了用戶與內核進行交互操作的一種接口。它接收用戶輸入的命令并把它送入內核去執行,是一個命令解釋器
  • Programs/Utilities/Tools:庫函數、工具等
  • File systems:文件系統是文件存放在磁盤等存儲設備上的組織方法。Linux系統能支持多種目前流行的文件系統,如EXT2、 EXT3、 FAT、 FAT32、 VFAT和ISO9660。
  • User Application: Linux應用,標準的Linux系統一般都有一套被稱為應用程序的程序集,它包括文本編輯器、編程語言、X Window、辦公套件、Internet工具和數據庫等

Linux系統一般由4個組成部分:內核Kernel、shell、文件系統和應用程序。內核、shell和文件系統一起組成了基本的操作系統結構,它們讓用戶可以管理文件、運行程序并使用系統。

Linux開機后,內核啟動,激活內核空間,抽象硬件、初始化硬件參數等,運行并維護虛擬內存、調度器、信號及進程間通信(IPC)。

內核啟動后,再加載Shell和用戶應用程序,用戶應用程序使用CC++編寫,被編譯成機器碼,形成一個進程,通過系統調用(Syscall)與內核系統進行聯通。進程間交流需要使用特殊的進程間通信(IPC)機制。

Android系統架構

看完了Linux架構,我們再來一起看看Android系統架構。Android的系統非常復雜和龐大,底層以Linux內核為基礎,上層采用帶有虛擬機的JAVA層,通過JNI技術,將上下層打通。

先來看一張google提供經典Android架構圖,從上往下依次為應用層(System Apps)、應用框架層(Java API Framework)運行層(系統Native庫和Android運行時環境)、硬件抽象層(HAL)、Liunx 內核(Marco Kernel)。每一層都有對應的進程、系統庫。

Android系統架構淺析-「Android取經之路」

Android系統架構

  • 應用層(System Apps)

該層中包含所有的Android應用程序,包括電話、相機、日歷等,我們自己開發的Android應用程序也被安裝在這層;大部分的應用使用JAVA開發,現在Google也開始力推kotlin進行開發

  • 應用框架層(Java API Framework)

這一層主要提供構建應用程序是可能用到的各種API,Android自帶的一些核心應用就是使用這些API完成的,開發者也可以通過使用API來構建自己的應用程序。

  • 運行層

1)系統Native庫

Android包含一些C/C++庫,這些庫能被Android系統中不同的組件使用

2)Android運行時環境

Android包括了一個核心庫,該核心庫提供了Java編程語言核心庫的大多數功能。虛擬機也在該層啟動。

每個Android應用都有一個專有的進程,這些進程每個都有一個Dalivik虛擬機實例,并在該實例中運行。

  • 硬件抽象層(HAL)

Android的硬件驅動與Linux不同,傳統的Liunx內核驅動完全存在于內核空間中。但是Android在內核外部增加了一個硬件抽象層(HAL-Hardware Abstraction Layer),把一部分硬件驅動放到了HAL層。

為什么Android要這么做呢?

Linux內核采用了GPL協議,如果硬件廠商需要支持Linux系統,就需要遵照GPL協議公開硬件驅動的源代碼,這勢必會影響到硬件廠家的核心利益。

Android的HAL層運行在用戶空間,HAL是一個“空殼”,Android會根據不同的需要,加載不同的動態庫。這些動態庫由硬件廠家提供。硬件廠家把相關硬件功能寫入動態庫,內核中只開放一些基本的讀寫接口操作。這樣一些硬件廠家的驅動功能就由內核空間移動到了用戶空間。

Android的HAL層遵循Apache協議,并不要求它的配套程序,因此廠家提供的驅動庫不需要進行開放,保護了硬件廠家的核心利益。

  • Liunx 內核(Marco Kernel)

Android平臺的基礎是Linux內核,比如ART虛擬機最終調用底層Linux內核來執行功能。Linux內核的安全機制為Android提供相應的保障,也允許設備制造商為內核開發硬件驅動程序。

分享到:
標簽:架構 系統 Android
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定