首頁  >  文章  >  運維  >  android和linux有差嗎

android和linux有差嗎

青灯夜游
青灯夜游原創
2021-11-23 10:18:2013348瀏覽

android和linux有差別:1.android的應用程式使用JAVA開發,可以透過JAVA虛擬機運行在Android系統上;而Linux的應用程式使用「C/C 」開發,能以機器碼的形式運行在核心系統上。 2、兩者的底層驅動軟體有差異。

android和linux有差嗎

本教學操作環境:CentOS 6系統、Dell G3電腦。

Android和Linux作為現行主流的作業系統,無論在消費性產品或是在工控領域,都有廣泛的應用。都說Android系統是脫胎於Linux系統,那是不是Android是不是屬於Linux的一種。現在就來談談Android和Linux系統的異同點。
android和linux有差嗎

1、兩者的共同點

Android是基於Linux核心的系統。 Android和Linux系統的核心系統服務都依賴Linux核心,如安全性、核心管理、行程管理、網路堆疊、驅動模型等。 Linux核心也作為兩者的硬體和軟體之間的抽象層,它隱藏具體硬體細節而為上層應用開發提供統一的服務

android和linux有差嗎

2. 系統框架的差異

Linux系統與Android表面上為兩個不同的作業系統,但是Android本質上還是個Linux系統,只不過Google對它進行了裁剪和自訂。

另外,相較於Linux系統,android在其Linux核心上面運行了一個叫做Dalvik(4.4版本後改為ART)的Java虛擬機(JVM),因而使用JAVA開發的android的應用程序可以透過JAVA虛擬機器運行在Android系統上。而Linux的應用程式使用的是C/C 開發的,可以機器碼的形式運行在核心系統上,兩者的系統框架差異,如圖。

android和linux有差嗎

android和linux有差嗎

#3. Linux與android底層驅動軟體的差異

Android除了Linux核心具備的常用核心驅動外,還增加了自己專有的核心驅動程序,如顯示驅動、藍牙驅動、相機驅動、內存卡驅動、Binder IPC驅動程序等。

另外,Android系統為了保護硬體廠商的智慧財產權,增加了HAL層,可將驅動具體的實現部分抽取發到HAL中去實現,從而規避了硬體驅動開源的風險,所以android的驅動程式是分成兩部分,一部分寫入核心中,一部分寫入HAL層。

Android除要實現底層驅動的開發外,還需要根據JNI規則將驅動程式封裝為JNI層接口,以達到應用程式(JAVA程式) 可透過JNI來呼叫核心驅動程式。以顯示驅動程式Framebuffer為例,如圖。

android和linux有差嗎

Linux系統的顯示驅動程式模型

android和linux有差嗎

Android系統的顯示驅動程式模型

(1)Linux系統:Framebuffer驅動程式只需要編譯到Linux核心中,並留出對應的read、write、ioctl等接口,便可供上位機應用程式呼叫。
(2)Android系統:Framebuffer驅動先將簡單的硬體暫存器讀寫操作的驅動編譯進入內核中,再將具體的硬體實作方式的驅動寫入HAL層中,並根據JNI規格封裝為JNI接口,才可供上位機應用程式呼叫。

4. Linux與android應用層軟體的差異

但是Android應用程式是使用java語言寫的,不能直接調用C語言實現的系統接口,而Linux系統中可以用C語言呼叫系統介面來與核心進行通信,於是Android系統中就有了一個叫做JNI的概念,用實作java與C/C 程式之間的資訊互動。

(1)Android應用程式存取Android核心驅動程式的方式:

  • #APP—>JNI—>Android核心驅動程式

  • APP—>硬體存取服務—>Android核心驅動程式

(2)Linux應用程式存取linux驅動程式的方式

  • APP—> Linux核心驅動程式

  • #APP—>C函式庫—>Linux核心驅動程式

相關推薦:《Linux影片教學

以上是android和linux有差嗎的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn