Android和Linux的關系


①、Android采用Linux作為內核

②、Android對Linux內核做了相應的修改,使Linux適應在移動設備上使用

③、Android一開始是Linux的一個分支,由於無法並入Linux的主開發樹,被從開發樹中移除

一、Android是繼承於Linux

  Android是在Linux內核基礎之上運行,提供的核心系統服務包括安全、內存管理、進程管理、組網組和驅動模型等內容,內核部分相當於介於硬件層和系統中其他軟件組之間的一個抽象層次。所以,嚴格來說不算是Linux操作系統。由於Android在很大程度上保留了Linux的基本框架,使Android的應用性和擴展性都很強。

二、Android和Linux區別

  Android系統的系統層面的底層是Linux,中間加了一個叫Dalvik的Java虛擬機,表面層是Android運行庫。每個Android應用都運行在自己的進程上,享有Dalvik虛擬機分配的專有實例。為了支持多個虛擬機在同一設備上高效運行,Dalvik也被修改過。Dalvik虛擬機執行的是Dalvik格式的可執行文件.dex,該格式經過優化,將內存的消耗降到最低。Java編譯器將java源文件轉為.class文件,.class文件又被內置的dx工具轉為.dex格式文件,使得能夠在Dalvik虛擬機上注冊並運行。Android系統的應用軟件都是運行在Dalvik虛擬機之上的Java軟件,而Dalvik虛擬機是運行在Linux之中,在一些底層功能(如線程和低內存管理),Dalvik虛擬機是依賴Linux內核的。因此,Android是運行在Linux之上的操作系統。

  Android內核和Linux內核主要體現在以下幾個方面:

  ①、Android Binder :Android Binder是基於OpenBinder框架的一個驅動,用於提供Android平台的進程間通信(IPC,inter-process communication)。而Linux系統上層應用的進程間通信主要是D-Bus(desktop bus),采用消息總線的方式進行IPC。

  ②、Android 電源管理(PM):是一個基於標准Linux電源管理系統的輕量級的Android電源管理驅動,針對嵌入式設備做了很多優化,利用鎖和定時器來切換系統狀態,控制設備在不同的狀態下的功耗。

  ③、低內存管理器(low memory killer):Android低內存管理器和Linux標准的OOM(out of memory)相比,其機制更加靈活,根據需要殺死的進程來釋放內存,低內存管理器代碼里面的關鍵函數是lowmem_shrinker(),作為一個模塊在初始化時調用register_shrinke注冊一個lowmem_shrinker,被vm在內存緊張時調用,lowmem_shrinker完成具體操作就是直接找到一個最合適的進程殺死,釋放所占用的內存。

  ④、匿名共享內存(Ashmem):為進程提供大塊共享內存,並為內核提供回收和管理這個內存的機制。如果一個程序嘗試訪問Kernel釋放的一個共享內存塊,將會收到一個錯誤的提示,然后重新分配內存並重載數據。

  ⑤、Android PMEM(Physical):PMEM用於向用戶空間提供連續的物理內存區域,DSP和某些設備只能工作在連續的物理內存上,驅動中提供了mmap、open、release和ioctl等接口。

  ⑥、Android Logger:是一個輕量級的日志設備,用於抓取Android系統的各種日志,但Linux沒有。

  ⑦、Android Alarm:提供一個定時器,用於設備從睡眠狀態喚醒,還提供了一個設備在睡眠時也會運行的時鍾基准。

  ⑧、USB Gadget驅動:此驅動是基於標准Linux USB gadget驅動框架的設備驅動,Android的USB驅動是基於gadget框架。

  ⑨、Android RAM Console:為了提供調試功能,Android允許將調試日志信息寫入一個被為RAM Console的設備里,是一個RAM的Buffer。

  ⑩、Android timed device:提供了對設備進行定時控制的功能,支持振動器和LED等設備。

  在Android系統中,采用Yaffs2作為MTD nand flash 文件系統,Yaffs2是一個快速穩定的應用於NAND和NOR Flash的跨平台嵌入式設備文件系統,與其他的flash文件系統相比,Yaffs2使用更小的內存來保存運行狀態,占用內存較小;Yaffs2的垃圾回收也非常簡單;Yaffs2在大容量的NAND Flash上性能表現更加明顯,非常適合大容量的Flash存儲。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM