




已閱讀5頁,還剩37頁未讀, 繼續免費閱讀
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
本 科 生畢業論文(設計) 題 目 Google Android 手機嵌入式系統 的研究與開發 學 院 計算機學院 專 業 計算機科學與技術 學生姓名 李 浩 學 號 0643041362 年級 2006 指導教師 周群彪 教務處制表 二一 年 五 月 二十 七 日本科畢業論文 Google Android 手機嵌入式系統的研究與開發 Google Android 手機嵌入式系統的研究及開發 計算機科學與技術 學生 李浩 指導教師 周群彪 摘要 隨著手機的普及以及手機應用的深入人心,近幾年“智能手機”成為了人們關注的話題。在現今這個智能手機系統群雄紛爭的時候, 2008 年 Google 推出了一款名為 Android 的開源智能手機操作系統。 Android 憑借其開放性和良好的人機界面,受到廣大手機生產商的重視,隨著 3G 時代的到來,Android 有可能會改變現在智能手機市場的格局。 Android 是由 Linux 操作系統、中間件以及核心應用程序組成的專門為移動終端設備開發的層次軟件集。在對 Android 學習中,主要做了以下的研究 :首先,Android 系統是一個層次的軟件集,所以先從層次方面對 Android 進行系統研究,主要對其運行時環境層以及 Android 應用框架層的研究;其次,通過對 Android 平臺上應用的開發,更進一步了解 Android這個系統,在開發中,尤其注重 Android 的 Intent 機制的使用。 主題詞 Android; Android 內核層 ; Android 構架 ; Android 應用 ; Android SDK; Android 開發 本科畢業論文 Google Android 手機嵌入式系統的研究與開發 The research and development of Google Android embedded system Computer Science Student: LI HAO Adviser: ZHOU QUN-biao Abstract With the popularity of mobile phones, “smart phone” become the subject of attention. Now days, there are lots of companies who compete in the filed “Smart Phone System”. In 2008, Google released their opening source smart phone operating system which called Android. Because of opening source and its nice UI. More and more mobile phone manufacturers use Android in their phones. With the becoming of 3G,Android may change the field of smart phones. Android compose of Linux kernel, middleware and core applications. To study Android, there something to do: firstly, Android system is a hierarchical set system, so we should study its hiberarchy, especially in Android Runtime layer and Android application framework layer; secondly through Android application development, we can further understand the Android the system, in development, we will use the Android Intent mechanism. Key Words Android; Android Kernel; Android Truss; Android Application; Android SDK;Android Development 本科畢業論文 Google Android 手機嵌入式系統的研究與開發 目錄 1 緒論 . 1 1.1 智能手機平臺 . 1 1.2 Android 平臺介紹 . 2 2 Android 的系統研究 . 4 2.1 Android 構架 . 4 2.1.1 Android 的構架綜述 . 4 2.1.2 內核層 . 5 2.1.3 Android Runtime 和函數庫層 . 5 2.1.4 Dalvik 虛擬機 . 7 2.1.5 Android 的進程管理機制 . 10 2.1.6 應用程序框架層 . 11 2.1.7 應用程序層 . 11 2.2 Android 的應用 . 12 2.2.1 Android 應用的組成 . 12 2.2.2 Activity . 12 2.2.3 Intent Receiver . 12 2.2.4 Service . 12 2.2.5 Content Provider . 13 2.2.6 AndroidManifest.xml . 13 2.3 Android 文件系統 . 15 2.3.1 系統文件夾分析 . 15 2.3.2 系統構架與系統文件的對應 . 16 3 Android 的開發 . 17 3.1 Android 開發工具 . 17 3.2 Android 開發平臺的搭建 . 17 3.3 簡單短信功能軟件( miniSMS)的開發 . 17 3.3.1 miniSMS 工程建立及分析 . 18 3.3.2 AndroidManifest.xml 設計 . 19 3.3.3 UI 設計 . 20 3.3.4 短信發送功能的實現 . 22 3.3.5 短信息的接收功能 . 24 3.3.6 虛擬機中運行 . 28 總結 . 29 參考文獻 . 30 聲 明 . 31 致 謝 . 32 附錄 . 33 本科畢業論文 Google Android 手機嵌入式系統的研究與開發 1 1 緒論 1.1 智能手機平臺 說起手機,沒有一個人會感到陌生。近 幾 年來一個名詞一直影響著 許許多多的手機用戶 ,它就 是智能手機。智能手機憑借其強大的功能吸引 住了 許多用戶的眼球, 因為有了廣大的用戶基礎,智能手機也風靡一時 。說起智能手機,除了他有一顆強大的CPU 和其他一些較高配置的硬件外,其真正的智能還要歸功于其不可缺少的智能操作系統。 當今 ,智能手機所搭載的 智能手機 操作系統平臺大致如下: ( 1) Symbian OS。搭載在具有 廣泛群眾基礎的 Nokia 手機上 , 并 以此 占據 了智能手機的 半壁江山 ,其主要的智能平臺為 大部分諾基亞手機搭載的的 S60 系列和 索尼愛立信手機搭載的 UIQ 系列 ; ( 2) Windows Mobile。 Microsoft 在桌面系統獲得成功之后, 覬覦手機的巨大市場開發的智能手機系統,因其界面和桌面 windows 系統較為接近和其強大的微軟后臺,成為 國內 市場 占有率 緊跟 Symbian 之后成為國人比較喜歡的 操作系統 ; ( 3) Mac OS X( iPhone OS)。蘋果 一直都是個性和時尚的代名詞 , 受廣大中高層次手機用戶的喜歡。 iPhone,以其酷炫的 UI 和獨特的操作方式,給傳統手機帶來一場革命,同時也 給 Symbian 和 Windows Mobile 帶來巨大沖擊的 ; ( 4) Blackberry。 以商務應用為主,在國外尤其是歐美等地,受到商務人士歡迎的 Black Barry 占據了近一半的無線商務電子郵件業務市場 , 就連美國總統奧巴馬也使用該品牌的手機。 但是在國內還是受到一些 基礎設施的制約,所以在國內 市場 不是太好 ; ( 5) Palm OS。 專門為 PDA 開發,一度占據了 90%的 PDA 市場的份額,雖然其并不專門針對于手機設計,但是以其優秀性和對移動設備的支持同樣使其能夠成為一個優秀的手機操作系統 。 ( 6) Linux。 對于 Linux 系統,想必很多人都不會太陌生,桌面系統中 以其開源的特性,贏得了不少用戶的喜愛。智能手機平臺的 Linux 同樣 具有源代碼開放、軟件授權費用低、應用開發人才資源豐富等優點,便于開發個人和行業應用。 但是 因為其平臺上的應用少而不被國人所接受 。 ( 7) Google Android。 自 2007 年推出, 2008 年第一 部 搭載 Android 系統的 G1上市至今不到短短三年時間,他已被許多人接受并且認可及歡迎。 雖然如今的智能手機系統市場仍被 Symbian、 Windows Mobile 的占領,但是 iPhone的革命以后,以及后起之秀 Android 的推出,在將來,智能手機市場將發生翻天覆地的變化。 本科畢業論文 Google Android 手機嵌入式系統的研究與開發 2 1.2 Android 平臺介紹 Android 從誕生到現在也不過 3 年的時間,但是也就是在這短短的 3 年內 Android創造了一個迅速被人們知曉并追捧的奇跡。 2007 年 11 月 5 日, Google 與其他 33 家手機制造商 (包含摩托羅拉、宏達電、三星、 LG)、手機晶片供應商、軟硬體供應商、電信業者所聯合組成的開放手持裝置聯盟 (Open Handset Alliance),發布了名為Android 的開放手機軟硬體平臺。 該 聯盟的成員宣布日后 都會在 Android 平臺上開發他們的 新的業務 。 不久之后的 2008 年 9 月 24 日, T-Mobile 公司 首度公布第一臺Android 手機 (G1)的細節,同日 Google 也 放 出了 Android SDK 1.0 rc1。這樣 Android進入了人們的視線。 Android 以其特有的開放性優勢越來越受到人們和 智能 手機廠商的關注。 對于第三放軟件開發商來說, Android 是一個真正意義上的開放性移動設備綜合平臺, Android 系統是 免費向開發人員提供 的 , 這樣就避免了開發中專利 權 的 障礙 。因此,就能夠為第三方軟件開發商省下大筆資金 。 對于設備制造商來說, Android 是一個免費的平臺。 當設備制造商每制造一臺手機時, 那些支付給手機系統制造商的費用也省去了,這樣也降低了每臺手機的生產費用,同時就降低了手機的價格,這樣在市場上也提高了競爭力。 對硬體開發廠商來說, Android 也是個開放的平臺。 使用 Android 平臺的廠商可以更具自己的需求以及能力為 Android 開發具有該廠商特色的功能,但是這樣的增加完全不用考慮版權的問題。 同時 Android 平臺支持 各種先進的網絡 、繪圖、 3D 處理能力,可以用來提供更好的使用者體驗。 Google Android 系統作為一個完全開源的操作系統,是由操作系統 (Linux)、中間件以及核心應用程序組成的軟件棧 (software stack)。通過 android SDK 提供的 API 以及相應的開發工具 , 程序員可以 很方便的 開發 android 平臺上的應用程序。其整個系統由應用程序( Application),應用程序框架( Application Framework),應用程序庫( Libraries), Android 運行庫( Android Runtime), Linux 內核( Linux Kernel)五個部分組成。 Android 操作系統內置了一部分應用程序, 包括電子郵件客戶端、 SMS 程序、日歷、地圖、瀏覽器、通訊錄以及其他的程序, 值得一提的是這些所有的 程序都是用 java 編寫的。 因為 應用程序框架使得組件更易于重用 ,所以 開發者的應用程序可以 很容 易的調用 API 函數實現我們想要的功能 。在遵守應用程序框架的安全機制約束的前提下, 開發者開發的 一個應用程序可以使用其他程序所開發的功能 。 雖然 Android 的應用程序是用 Java 語言開發的,但是 Android 給應用程序開發者 提供了一系列的 C/C+ 程序庫 , 通過 Android 的一些特殊的設計 , 我們 開發者可以使用這些庫 ,這在后面的敘述中將看到。 本科畢業論文 Google Android 手機嵌入式系統的研究與開發 3 現今, Android 操作系統已成為許多手機制造商的寵兒,其中包括 HTC、索尼愛立信、 Samsung、摩托羅拉以及國內的聯想、華為、海爾、華禹等。其中值得一提的是摩托羅拉 公司, 就在 2009 年 11 月憑借 其 一款搭載 Android 平臺的 Droid 手機,兩個月內就突破百萬臺,擊敗了蘋果的 iPhone 3GS,被時代雜志評選為“年度最佳科技產品”。因此 告別了兩年多的低迷態勢,走出了泥潭。 本科畢業論文 Google Android 手機嵌入式系統的研究與開發 4 2 Android 的系統研究 2.1 Android 構架 2.1.1 Android 的構架 綜述 Android 是一個包括操作系統,中間件以及一些重要應用程序 的專門針對移動設備的層次結構的軟件集 1。作為一個層次結構的軟件集 , 一定有一個層次的系統構架 ,下圖為 Android 的 構架圖 : 圖 2-1 Android 系統構架 從圖 2-1 中明顯的可以看出 該系統從下到上 包括 Linux 內核層 、 Libraries 和運行時環境層 、 應用程序框架層 、 應用程序層 四層結構 。在 Android 的最下層的操作系統基于 Linux2.6 內核,往上的中間件包括 Libraries 和運行時環境層和應用程序框架層兩個層次,最上層則是應用程序層。 在 Android 構架中, 可以很明顯的看到, 底層的 Linux 內核則采用 的是 C 語言,libraries 采用 C 或者 C+,但是 應用程序層、應用程序框架層和 運行時環境 中的Android 核心庫采用 Java 語言編寫, 也就是說 Android 雖然底層用的是 C 或者 C+但是應用程序的開發則用的是 Java。 Google 采用這樣的模式 可能 是因為相對于 C 或者 C+, Java 的開發周期更短 的緣故 ,這樣的話就能在短時間內為 Android 提供大量本科畢業論文 Google Android 手機嵌入式系統的研究與開發 5 的應用軟件 。 我們知道,作為一個智能手機平臺,只有擁有了大量的源源不斷的應用程序作為支持, 才能受人們的歡迎,從而才能占領市場。之前 Nokia 的 s60 第三版就是一個很好的例子 ,因此 Nokia S60v3 的系統才被世人所熟知,并且曾經在智能手機行業占有很大 的市場 。 而另一個例子就是 Linux 系統,在所有操作系統中,穩定性和性能上能夠和 Linux 抗衡的系統不多吧,但是在智能手機市場上為什么 Linux 卻可以說是一敗涂地,其原因也和其第三方應用少 是 脫不了關系的。 2.1.2 內核層 Google Android 作為一個開源的操作系統其內核采用了同樣開源的被業界認為是 相當 穩定的 Linux 作為其內核,其中 Linux 內核包 括 以下 功能 模塊 :安全(Security)、存儲器管理 (Memory Management)、 進程 管理 (Process Management)、網絡堆棧 (Network Stack)、驅動程序模型 (Driver Model)等,另外也在 給其上層的軟件和下層 硬件間建立起一個抽象層 (Abstraction Layer)。 同時 Android 在 Linux 2.6 的內核上進行了一些 增加和刪改,使 Linux 更加適應 ARM 平臺。 增加了一個基于 ARM 構架的 GoldFish 平臺作為虛擬機的虛擬 CPU。 增加了 YAFFS2 FLASH 系統文件,因此增加了對 NANDFLASH 支持。 增加了 Android 相關的驅動。 例如 Android 的 IPC(進程間通信機制) binder,使用這個能使運行的進程為其他 進程提供服務; Android 的日志系統( Logger)和內存控制臺( Ram_console);同時 Google 還重寫了電源管理( Power) 增加了新的共享方式 Ashmem(匿名共享內存),多個應用程序可以這種方式共享內存獲取信息 ,為進程間提供大量共享內存,同時為內核提供回收和管理這個內存的機制。 2.1.3 Android Runtime 和 函數 庫層 2.1.3.1 函數 庫 Android 包含一些 C/C+庫, Android 系統中的 各種 不同組件都能夠使用這些庫函數。這些庫函 數通過 Android 應用程序框架為開發者提供服務。 以下列舉了一些庫函數 2: 系統 C 庫 -一個專門為 Embedded Linux 設備定制的從 BSD( Berkeley Software Distribution 伯克利軟件套件 )繼承來的標準 C 系統函數庫。 媒體庫 - 基于 PacketVideo 公司的 OpenCORE 開發設計的 。 該庫支持 MPEG4, H.264, MP3, AAC, AMR, JPG, PNG 多種常用的音頻、視頻格式 的 回放和錄制,同時支持靜態圖像文件。 Surface Manager - 對顯示子系統的管理,并且為多個應用程序提 供了 2D 和3D 圖層的無縫融合 ,提供如同類似 iPhone 的界面管理 功能 。 本科畢業論文 Google Android 手機嵌入式系統的研究與開發 6 LibWebCore - 一個支持 Android 瀏覽器和一個可嵌入的 web 視圖 的最新的 web瀏覽器引擎 。 3D libraries - 基于 OpenGL ES 1.0 APIs 實現 ;該庫可以使用硬件 3D 加速 (如果可用 )或者使用高度優化的 3D 軟加速。 SQLite - 一個功能強勁的輕型關系型數據庫引擎 , Android 中所有應用程序都可以調用它 。 FreeType -位圖 (bitmap)和矢量 (vector)字體顯示。 SGL - 底層的 2D 圖形引擎 。 2.1.3.2 Android Runtime 前面 說到 Android 采用 Java 作為應用程序的開發語言,但是雖然使用的是 Java語言,但是 Google 卻沒使用 傳統的 Java Runtime 來執行應用程序 而是采用 Android自己特有的 Android Runtime。 從 Android 的 系統 構架圖中可以清楚的看到, Android Runtime 由 Android 函數庫 ( Android Libraries) 和 Dalvik 虛擬機組成 3。 Android 函數庫 中里包含了大部分 Java 程序語言所需要調用的 函數庫,如 data structure, network, utilities, file system 等 ,其中很多代碼 是 源于 2005 年的Apache Harmony 項目。這樣 做 的 話 能夠使 Android 的虛擬機的類庫 與 Java SE 的類庫有非常大的相似性,進而提高了 Java SE 類庫的兼容性 , 最大限度的降低了一個程序員從 Java 平臺開發到 Andorid 平臺開發的難度,這樣就 降低了對 Android 開發的準備時間 以及前期培訓的費用 ,從而降 低了 Android 應用程序開發的周期 以及開發費用 , 這樣的話 短時間內就能讓 Google Android 系統能夠擁有大量的可執行的應用程序 。 另外,使用 Apache Harmony 類庫還能完全擺脫 Sun的束縛而走上完全開源的 Java之路,這樣也奉行了 Google 對 Android 完全開源的原則 。 我們知道, 對一個應用程序而言 , 都 采用 一個屬于該應用程序的進程作為執行的載體 ,同樣,對于 Android 也是,一個應用程序也是有一個屬于它的進程。 之前說過Android 采用 Java 作為開發語言,在進程執行時應該會有一個 Java 虛擬機來為進程提供服務。在 Android 構架圖中可以看到, 該系統采用的是一個叫做 Dalvik 的虛擬機。 在前面的研究中我們了解到 Dalvik 虛擬機是一個 Java 虛擬機,但是又和 Java虛擬機有所不同。 Dalvik 虛擬機和傳統的 Java 虛擬機所不同 之處 的是傳統的 Java虛擬機是 一個虛擬機來為不同應用程序提供服務,而 Google 自己開發的 Dalvik 虛擬機則是每一個 Android 應用程序都擁有一個其自身的 Dalvik 虛擬機,換句話說就是專屬于每一個應用程序對應著一個 Dalvik虛擬機 而這個 Dalvik虛擬 機 相當于一個執行個體。有關 Dalvik 虛擬機的內容將在下一個部分詳細說明。 Android函數庫 和 Dalvik虛擬機組成了 Android的運行時環境。 從圖中可以看到,Android Runtime 和 Libraries 在同一層,建立在 Linux Kernel 層 之 上,與 Linux Kernel 沒有交集 ,而是直接嵌套到 libraries 中。 我們之前說過,我們開發者可以本科畢業論文 Google Android 手機嵌入式系統的研究與開發 7 調用 C 和 C+的一些類庫。其實就是 這樣 Android Runtime 與 Libraries 在同一層的設計并同時讓 Android Runtime 中的 Android Libraries 引用 libraries 中的函數,而通過 Dalvik 虛擬機編譯以后再調用這些函數 做到上面所述的功能 。 也就是說其實 Android Libraries 中的函數只是 libraries 中的一些引用, 當一個上層的應用程序調用 Dalvik 虛擬機中的核心庫函數時, 調用的其實只是一個函數名,并不是函數的具體實現,然后 Dalvik 虛擬機對該函數進行一些處理以后再通過Dalvik 虛擬機調用 libraries 中的相應函數,使之運行。換句話說就是, Android Libraries 中的只是 一個函數名,而真正代碼的實現是 libraries 中的 C 或者 C+代碼。這樣的好處就在于那些使用 Java 語言很難實現 但是在 C 或者 C+卻能很容易 實現 的功能也能通過 Java 很容易等的實現。 2.1.4 Dalvik 虛擬機 Dalvik 虛擬機是 Android Runtime 的一個組成部分,之所以要把他拿出來單獨進行研究是因為, Dalvik 虛擬機作為一個 Java 虛擬機,但它和普通的 Java 虛擬機 有著一些不同。 Google 的工程師 結合傳統的 Java 虛擬機 ,根據 Android 使用的 平臺 一般為移動終端設備這樣 一個特點重新設計的 虛擬機,這個虛擬機在 移動終端設備上 運行效率上明顯比傳統的 Java 虛擬機要高 許多。 Dalvik 虛擬機對內存的高效使用和在低速的 CPU 上表現出的高性能,確實讓人們刮目相看。 Android 的上層應用程序雖然是用 Java 開發的,但是 Dalvik 虛擬機卻和傳統的Java 虛擬機有著很大的區別,兩者是不兼容的。 首先 , 眾所周知 在 Java 中,所有的程序代碼會被編譯器編譯成字節碼( .class)應用程序進程 調用 Runtime 中Android 函數庫函數 Android Libraries Android Runtime Dalvik 虛擬機 交給 Dalvik 虛擬機進行處理 Libraries Dalvik 虛擬機調用 Libraries 中相應函數 圖 2-2 應用程序調用 Android Libraries 中函數的過程 本科畢業論文 Google Android 手機嵌入式系統的研究與開發 8 文件,然后 再 打包成 JAR 文件, 在執行時 Java 虛擬機 就 從 JAR 文件中提取出相應的字節碼文件 來 執行。在 Android 中不再使用 字節碼文件而是一種 Android 所 特有的DEX( Dalvik EXecutable) 文件 。 DEX 文件的生成還是 需 要經過生成字節碼 文件的 這個過程的。 使用 Java 語言編寫好的 Android 程序代碼 , 同樣是 先 用 Java 編譯器 編譯成為字節碼文件 , 但是在這之后 還需通過 Google 提供的一個 DX 工具將 編譯好的 字節碼轉換成為 DEX 文件,然后 Dalvik 虛擬機通過 DEX 文件獲得執行的代碼。 Google 棄用字節碼文件而采用特有的 DEX 文件格式,這表明在 Android 實際運行中 DEX 文件格式相對于字節碼文件格式 應該有一些 獨特的優勢。 在 Java 中 當一個應用程序定義了多個類后,通過編譯則會產生相應數目的 class 字節碼文件,在這些字節碼文件中則 必然會有 冗余信息, 例如一些相同的類庫會 冗余等 。 而 DEX 文件格式則是把這些 class 字節碼文件整合到一個 DEX 文件 中,使得字節碼中的冗余減少了 ,同時 使整體 文件 的 尺寸也減少了。 這樣一來 , 對于同一個應用程序來說 , 相對于 Java的字節碼文件 Android 的 DEX 文件格式 在 I/O 操作中所需要的 時間也減少了, 同時也減少了查找類所需要 的時間 。另外 DEX 使用等長的指令, 這樣的話能夠使得 DEX 文件盡量的 簡潔, 從而 提高了解析速度。 通過上面的研究 可以看出 DEX 文件格式是 一種 專為 Dalvik 虛擬機設計的壓縮格式, 該格式的高性能很 適合內存和處理器速度有限的平臺,從中可以看出 Android 是定位于嵌入式平臺的一個操作系統。在這也體現出了Google 給 Android 所定義的發展以及戰略方向 ,如今移動平臺的網絡應用已經成為當前 移動終端設備的發展方向,作為網絡搜索的龍頭大哥, Android 就是其打入該移動平臺網絡應用的利器。 Android 應用開發和 Dalvik 虛擬機同樣都使用 Java 開發 語言 ,在應用程序開發好以后我們就需要將這個應用發布到 Android 移動終端設備 。 我們把 一個 開發好的 應用 的 Java 代碼經過編譯以后生成 .class 的字節碼文件,通過 Android 的 DX 工具轉換成 .DEX 格式的文件,最后使用 Android 的 appt 打包工具把 DEX 文件,源文件以及AndroidManifest.xml 文件組合成一個 APK 應用程序包,然后 就能 發布到 移動終端設備 上了 。在 APK 應用程序程序包發布到 移動終端設備 后,應用程序運行前會對其中的DEX 文件進行優化,優化后的文 件格式稱之為 DEY, DEY 文件被保存到緩存區域,虛擬機會 在緩存中 執行這些文件。 其次 ,傳統的 Java 虛擬機是采用的是基于棧的設計,而 Dalvik 虛擬機則是基于寄存器設計的。 基于棧設計的虛擬機能夠使指令變得簡單,不需要考慮程序中的源寄存器和目的寄存器,只需要開辟棧空間而不需要為臨時變量再開辟一個存儲空間。另外基于棧設計的虛擬機移植性比基于寄存器設計的虛擬機要高很多, 從組成原理和嵌入式操作系統課程中我們知道, 一般 的 32 位 x86 處理器的通用寄存器和 32 位的 ARM 的通用寄存器數目是不同的 。 虛擬機 的設計中 ,為了 執行的效率,有時 會把這些寄存器一一映射本科畢業論文 Google Android 手機嵌入式系統的研究與開發 9 到 物理寄存器上,但是由于平臺的不同,導致通用寄存器數量不同造成如果基于寄存器設計的虛擬機很難做到一一映射,執行效率就會大打折扣。而用基于棧的設計的話,就不存在這種問題,就很容易的分配寄存器。另外,基于棧設計的虛擬機采用的是零地址指令, 這樣的話指令形式比較緊湊。 雖然基于棧 結構 的虛擬機有上述的一些優點,但是為什么 Google 不采用基于棧的設計而采用基于寄存器結構設計 Dalvik 虛擬機呢。 我個人覺得 這是和 Android 所搭載的平臺以及 Google 的戰略有關的。首先, Android 所搭載的主要平臺為移動終端設備,如今的移動終端設備雖然性能比過去好多了,但是還是無法擺脫 CPU 處理能力低于桌面 PC,存儲資源有限的限制,在這樣一個平臺上使用基于棧的設計,在指令執行時必定會多出一個進棧 ( PUSH) 和出棧 ( POP) 的操作,那一定會影響指令執行的效率,這也是為什么 我們在一些手機平臺上運行 Java 程序時感到很慢的原因了 。其次 從 Google 對 Dalvik 虛擬機設計中采用的 16 個通用寄存器中可以看出 Android的發展方向是基于 ARM 的硬件平臺,這也和 Google 的戰略方向相一致。雖然移植性降低 了,但是使用二地址和三地址的指令,使得代碼執行效率大大提高。 另外, Dalvik虛擬機 雖然 沒有采用現在 流行 虛擬機技術例如 JIT( just in time,及時編譯 )技術,但是 Dalvik 虛擬機仍然是一個具有很高性能的虛擬機 ,在這不得不說一下, Dalvik虛擬機是一個設計相當不錯的虛擬機。 從 Dalvik 虛擬機的設計上我們可以看到Google 打算用 Android 系統來沖擊手機 移動終端設備 ,想把其提供的服務擴展到移動設備上的戰略。 另外, Dalvik 虛擬機的設計方面也有其獨特的地方。它就是本著能夠并發執行多個虛擬 機的設計思路來編寫的。每一個 Dalvik 虛擬機實例對應于一個應用程序,同時這個虛擬機實例還 都是一個進程空間。換句話說就是一個應用對應一個 Dalvik 虛擬機同時對應一個進程 空間 。 不同的應用程序在不同的 Dalvik 虛擬機實例中運行,不同的 Dalvik 虛擬機又對應于不同的進程空間,加之不同的應用程序在 Linux 內核中以不同的 Linux 用戶來執行,這樣可以最大限度的保證應用程度的獨立性和安全性。 但 Dalvik 虛擬機要實現如線程機制,內存的分配和管理等操作的話, 仍 然 需要底層操作系統的支持。另外 Dalvik 虛擬機線程機 制中的一個線程對應于 Linux 中相應的一個線程,這樣操作系統中的線程就能最大限度的為 Dalvik 虛擬機服務。 通過這樣的一個設計, Android 的安全性大大提高了。 說到 Dalvik 虛擬機,那就應該說說虛擬機中的一個特殊 的虛擬機 進程 Zygote,之前說過 一個 Dalvik虛擬機 對應一個進程空間 。 Zygote進程的功能有點類似于 Linux中的 1 號進程, 在 Linux 當系統啟動時即產生 1 號進程,而其他的進程都由 1 號進程創建。在 Dalvik 虛擬機中 Zygote 進程 fork 出所有的 虛擬機 進程,每當系統提出執行一個 Android 應用時, 需要一個 Dalvik 虛擬機是, Zygote 就會 fork 出一個子進程來執行該應用。 使用它 可以加快系統的執行,因為 Zygote 進程在系統啟動時就產本科畢業論文 Google Android 手機嵌入式系統的研究與開發 10 生, 已經 完成 了虛擬機的初始化,預置類庫的加載和初始化等等操作。當我們要執行一個應用而建立一個虛擬機時 ,只需讓 Zygote 進程自身復制,這樣就可以 減少虛擬機初始化等操作的時間。另外 ,對于一些只讀庫所有虛擬機實例都和 Zygote 進程共享一塊內存區,這樣大大減少了對內存的開銷。 2.1.5 Android 的進程 管理 機制 Android 雖然是基于 Linux, 但是它卻采用了一種有別于 Linux 的一種管理機制。Linux 在一個進程活動停止后就立刻結束該進程, 而 Android 在一個進程活動停止后不會立刻結束該進程, 并使該進程常駐內存中。 直到系統資源不夠 需要更多內存 或者當某個結束進程的事件發生時才將該進程結束。 在 Android 中進程被分成了前臺進程( foreground)、可見進程( visible)、次要服務( secondary server)、后臺進程( hidden)、內容供應節點( content provider)、空進程( empty)六種。 前臺進程是指 一些系統進程和當前屏幕上正在顯示的進程。比如說你打開Google 地圖查找路線,此時 Google 地圖就是一個前臺進程。 可見進程則是那些雖然不在前臺,但是用戶依然可見的進程,如輸入法,時鐘等,這些進程 雖然 不 是 在前臺運行 的,但是其存在和我們的使用卻是密切相關的,如果關閉了這些應用程序將給我們的使用帶來非常大的不便 次要服務是一些與系統功能息息相關的服務,如Google 企業套件等 。 后臺進程, 可以這么說后臺進程就是一個前臺進程被另一個前臺進程替換后,進程沒有結束,但是已經不再是前臺進程的一個狀態。在實際應用中就是 當一個前臺進程運行時按 HOME 鍵后的進程狀態 內容供應節點是沒有程序實體,而是僅僅提供內容給別的程序使用的比如說日歷節點空進程是沒有任何東西在運行的進程,在一個程序退出 后 會有一個沒有任何數據和代碼在運行但是 依然駐留在進程空間中 的進程 , 該進程 僅僅 是作為一個能夠提高該程序下次 啟動速度和記錄程序歷史記錄的進程。 Android 在調度以上幾種 進程 時使用了一 個 系統 值作為系統對進程的一個評估,當 要結束 一個進程 時 該值的數值 越大 的進程被系統選中并結束的概率越大 。一般的,前臺進程的值為 0,這表明前臺進程不可能被系統選中并 結束。 當進程進入后臺以后,系統將會分配一個更高的值給該進程。 相對于 Linux 的最近最早未使用的調度策略 ,Android 在其基礎上提供了 一套獨特 的進程管理模塊,他能讓程序員使用腳本來對內存管理進行定制。比如當 內存小于某個值時可以結束 這個系統值 大于另外一個值的進程,還可以當內存小某個值時結束上面六類進程中的一類(但順序必須是空進程,內容供應節點,后臺進程,次要服務,可見進程,最后才是前臺進程)。根據這種特性 該系統 值 至少由 兩部分組成,一個是基值, 另一個 根據 LRU(最近最久未使用)調度算法產生的一個值。對于以上說 的六種進程應該分別有一系統給其賦予的值,其大小本科畢業論文 Google Android 手機嵌入式系統的研究與開發 11 順序應該是空進程大于內容供應節點大于后臺進程大于次要服務大于可見進程大于前臺進程,而這個系統賦予的值則是基值。這樣就能保證一些這六種進程總是當一種進程被結束完了以后另外一種進程才會被結束,同時只需要根據 這個系統 值就能輕易做到對內存管理的定制。 2.1.6 應用程序框架層 在 Android 系統構架圖中可以看到,應用程序框架層是處于 Android Runtime 和庫函數層于應用程序層之間,之前的敘述中知道,該層使用開發語言的是 Java 語言。應用程序框架是能夠讓開發 者完全訪問核心應用程序所使用的 API( Application Programming Interface,應用程序編程接口),該框架能夠讓組件軟件重用的工做簡單化。同時該框架中的任何一個功能模塊都是等價的,任何一個應用程序都可以發布其功能模塊,該功能模塊可以替代當前的任意一個功能模塊,但前提是必須遵循框架的安全限制 4 ,另外,其他的任意應用程序能夠使用這個發布的功能模塊。 這樣的設計就使 Android 的構件重用率提高了。 在每一個應用程序背后,應用程序框架為其提供了一系列的服務。這些服務包括:一個豐富并 且可擴展的視圖,通過這個視圖我們可以 使用它提供的 一些包括按鈕、文本框、列表、網格 等 甚至可嵌入的 web 瀏覽器的應用程序 來構造我們的應用程序 。內容提供器( content providers),有了內容提供器,一個應用程序可以共享它自己的數據或者訪問另外一個應用程序中 共享 的數據 。資源管理器( resource manager),使用資源管理器,我們在應用程序中能夠訪問到一些如圖形、布局文件等一些非代碼資源。通知管理器( notification manager),給程序員提供了一個可以在程序狀態欄中顯示自定義提 示信息的管理器。活動管理器( activity manager),提供常用導航功能用來管理應用程序生命周期的服務。 通過這些應用程序框架層提供的服務程序員能夠方便的開發一個界面優秀功能強大易于共享的的應用程序。 2.1.7 應用程序層 回到 Android 系統構架圖中,應用程序層包括了 如 名片管理、 Google maps、瀏覽器等 本地應用程序( native apps), 如 QQ、 MSN、 QuickOffice 等 第三方應用程序( third part apps),以及 developer apps。 同樣,該層的應用程序 也都使用 Java語言進行開發的。 本科畢業論文 Google Andr
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025上海市出租車租賃合同
- 2025年四川省進出口貿易合同范本
- 2024年航天器熱控系統投資申請報告代可行性研究報告
- 初中生物2025學年冀少版七年級生物下學期期中模擬卷
- 2025地面涂料施工合同范本
- 2025年國內外購版權合同模板
- 2025辦公室租賃合同范本樣本
- 2025設備租賃合同范本6
- 2025浙江杭州勞動合同樣本
- 2025合同法:合同的續約與解除
- 大班游戲活動案例《快樂沙池》
- 糖尿病飲食指導護理
- 國有企業戰略規劃審計實施方案
- DB41T 1633-2018 排油煙設施清洗服務規范
- 腦出血疑難病例討論護理
- 連續梁線型控制技術交底
- 林業專業知識考試試題及答案
- 高三英語語法填空專項訓練100(附答案)及解析
- 中山大學與吉首大學聯合培養本科生項目實施辦法
- T-CPQS C017-2024 鑒賞收藏用潮流玩偶衍生產品 樹脂類藝術品
- 山東省煙臺市2024-2025學年高二地理下學期期中試題
評論
0/150
提交評論