|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
安卓,是一个系统,用于移动终端,智能手机、平板之类,如今也可以用于桌面工作站或电视机顶盒、智能电视等。它的内核基于linux内核,但不同于其他linux发行版,有部分源码闭源。 linux,是一个内核,不是完整的一个系统,所有以linux为内核工作的系统统称linux发行版。! M! H; E5 V7 {
% D2 m8 v( ?3 `! q1 W Android和Linux作为现行主流的操作系统,无论在消费类产品还是在工控领域,都有广泛的应用。都说Android系统是脱胎于Linux系统,那么是不是Android是不是属于Linux的一种。现在就来谈谈Android和Linux系统的异同点。8 x \8 o& F+ G6 W5 D
4 f: b+ A/ M$ e! }( C9 }
6 S, A4 `7 o4 x2 O! n' d7 M. Q$ b1. 两者的共同点! G$ g% n7 W N" _# f; P9 M+ ]( n
Android是基于Linux内核的系统。Android和Linux系统的核心系统服务都依赖于Linux内核,如安全、内核管理、进程管理、网络堆栈、驱动模型等。Linux内核也作为两者的硬件和软件之间的抽象层,它隐藏具体硬件细节而为上层应用开发提供统一的服务。
5 ?" s( N8 k! G C* _! T7 |5 n! q( m7 z5 F( f( a' _2 M
; A$ Q0 T2 |1 l# w$ [: |
/ a& s$ R+ K. H# P2. 系统框架的差异8 s- }% \; a' m* \& G
Linux系统与Android表面上为两个不同的操作系统,但是Android本质上还是一个Linux系统,只不过Google对它进行了裁剪和定制。
% @' N- T5 R0 _: n! p另外,相较于Linux系统,android在其Linux内核上面运行了一个叫Dalvik(4.4版本后改为ART)的Java虚拟机(JVM),因而使用JAVA开发的android的应用程序可以通过JAVA虚拟机运行在Android系统上。而Linux的应用程序使用的是C/C++开发的,可以机器码的形式运行在内核系统上。' L6 b' s2 ~$ [$ ?2 {8 _# x5 T
7 x- b5 }5 D7 u3 [3 z# e" Q6 ^
7 X% q& K# _% b+ a" T3. Linux与android底层驱动软件的差异5 v$ ^$ l, Y8 g+ Y) V! n$ ^6 {
Android除了Linux内核具备的常用核心驱动外,还增加了自己专有的内核驱动程序,如显示驱动、蓝牙驱动、相机驱动、内存卡驱动、Binder IPC驱动等。1 c# |& d- T! U6 w+ b
另外,Android系统为了保护硬件厂商的知识产权,增加了HAL层,可将驱动具体的实现部分抽取发到HAL中去实现,从而规避了硬件驱动开源的风险,所以android的驱动程序是分为两部分,一部分写入内核中,一部分写入HAL层中。
0 D9 i7 X: p, BAndroid除要实现底层驱动的开发外,还需要根据JNI规则将驱动程序封装为JNI层接口,以达到应用程序(JAVA程序) 可通过JNI来调用内核驱动程序。以显示驱动程序Framebuffer为例。8 [% x* Q7 T& E7 l. n
7 v5 q7 p1 H- L9 D. ]
7 o3 v- I" A6 n! t$ ^
3 e4 R6 J6 g, V
$ o" {4 P% ]7 G* M# f
& c' ?0 \3 q; s4 l' S- U& I$ N% V1 p* l5 u' O
i( `" X$ I8 A0 t" ]6 c; e! m6 F$ a8 @ o. Y; A: D3 Y
|
|