|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
安卓,是一个系统,用于移动终端,智能手机、平板之类,如今也可以用于桌面工作站或电视机顶盒、智能电视等。它的内核基于linux内核,但不同于其他linux发行版,有部分源码闭源。 linux,是一个内核,不是完整的一个系统,所有以linux为内核工作的系统统称linux发行版。
1 C* f% Y, Q1 z" ` }4 a; {: B* { x. V; l. O2 j
Android和Linux作为现行主流的操作系统,无论在消费类产品还是在工控领域,都有广泛的应用。都说Android系统是脱胎于Linux系统,那么是不是Android是不是属于Linux的一种。现在就来谈谈Android和Linux系统的异同点。
6 P& Z" V8 Q# D( Q9 \1 R
/ ~ P+ [6 c: r K; F7 N N+ b$ x9 p1 W3 S# u9 l5 I7 N
1. 两者的共同点$ f4 P) g9 T; o( K
Android是基于Linux内核的系统。Android和Linux系统的核心系统服务都依赖于Linux内核,如安全、内核管理、进程管理、网络堆栈、驱动模型等。Linux内核也作为两者的硬件和软件之间的抽象层,它隐藏具体硬件细节而为上层应用开发提供统一的服务。
* t; b9 @- ?- {$ L8 L2 g9 _; U; y; Y+ i& }2 w1 Q& N0 g$ ~3 u
( a( p+ ]" R& f6 t1 Q* B% \; o# K- m+ E
2. 系统框架的差异
( w+ t2 ?: [, y Linux系统与Android表面上为两个不同的操作系统,但是Android本质上还是一个Linux系统,只不过Google对它进行了裁剪和定制。8 G6 Q3 g# q; W" |: {
另外,相较于Linux系统,android在其Linux内核上面运行了一个叫Dalvik(4.4版本后改为ART)的Java虚拟机(JVM),因而使用JAVA开发的android的应用程序可以通过JAVA虚拟机运行在Android系统上。而Linux的应用程序使用的是C/C++开发的,可以机器码的形式运行在内核系统上。6 d3 h+ p) U! @6 S+ l7 Y$ D; q$ h
& a7 s& V# m3 q5 G7 _
; _7 s5 W9 \7 ~' Y9 Z3. Linux与android底层驱动软件的差异: Y7 w3 Q- Z4 o
Android除了Linux内核具备的常用核心驱动外,还增加了自己专有的内核驱动程序,如显示驱动、蓝牙驱动、相机驱动、内存卡驱动、Binder IPC驱动等。0 _' a% a# S: H F3 Y8 {4 J' W
另外,Android系统为了保护硬件厂商的知识产权,增加了HAL层,可将驱动具体的实现部分抽取发到HAL中去实现,从而规避了硬件驱动开源的风险,所以android的驱动程序是分为两部分,一部分写入内核中,一部分写入HAL层中。3 v% z. n" Y+ Z
Android除要实现底层驱动的开发外,还需要根据JNI规则将驱动程序封装为JNI层接口,以达到应用程序(JAVA程序) 可通过JNI来调用内核驱动程序。以显示驱动程序Framebuffer为例。
3 h+ B9 X2 o- O5 e- Q
8 f* N. Z! ^7 N' Y1 O" F1 W' ^* \
% j! l! M' C3 {0 ~0 \- Z
2 E$ M0 c! a1 ~& G4 L0 b5 n
& }4 Y$ \# }& c W( D) L
2 z5 h7 {- n9 ^# Z
9 `, k% i7 [; w0 Q# \0 I
2 J+ Q1 Q8 |/ b- i6 {
2 m6 h5 j' k% q. F |
|