|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
安卓,是一个系统,用于移动终端,智能手机、平板之类,如今也可以用于桌面工作站或电视机顶盒、智能电视等。它的内核基于linux内核,但不同于其他linux发行版,有部分源码闭源。 linux,是一个内核,不是完整的一个系统,所有以linux为内核工作的系统统称linux发行版。& J$ @1 i' x8 l
2 O3 e2 X4 x7 Z) P1 ]4 E5 z, l' P! d Android和Linux作为现行主流的操作系统,无论在消费类产品还是在工控领域,都有广泛的应用。都说Android系统是脱胎于Linux系统,那么是不是Android是不是属于Linux的一种。现在就来谈谈Android和Linux系统的异同点。
+ c; M( a' z0 J& _6 H' l7 a9 a* r9 T8 P$ Q6 p" Y9 i
9 M0 a5 s3 q% [6 Z) N# ~0 J1. 两者的共同点
' E& z+ t* K- q4 }/ Y Android是基于Linux内核的系统。Android和Linux系统的核心系统服务都依赖于Linux内核,如安全、内核管理、进程管理、网络堆栈、驱动模型等。Linux内核也作为两者的硬件和软件之间的抽象层,它隐藏具体硬件细节而为上层应用开发提供统一的服务。
- \8 ]" N( n$ o$ c# Q, G* I+ I& ^1 K& u0 F" P
3 z/ Y2 [8 ?/ U8 D5 ]; a) m
$ M6 e0 q7 A6 X2. 系统框架的差异
, L% A! D) t$ R7 j5 Z Linux系统与Android表面上为两个不同的操作系统,但是Android本质上还是一个Linux系统,只不过Google对它进行了裁剪和定制。3 c- n/ u/ `+ u, [& z# {& \" @9 E7 q0 x
另外,相较于Linux系统,android在其Linux内核上面运行了一个叫Dalvik(4.4版本后改为ART)的Java虚拟机(JVM),因而使用JAVA开发的android的应用程序可以通过JAVA虚拟机运行在Android系统上。而Linux的应用程序使用的是C/C++开发的,可以机器码的形式运行在内核系统上。7 | j5 F' E ]' M8 p5 P( H
7 z8 t% @: x6 N; C. X
5 y7 r1 s+ Z, D: K+ o5 s2 x+ b3. Linux与android底层驱动软件的差异
2 M( P4 @' F3 V3 o! TAndroid除了Linux内核具备的常用核心驱动外,还增加了自己专有的内核驱动程序,如显示驱动、蓝牙驱动、相机驱动、内存卡驱动、Binder IPC驱动等。! y# v$ X x* O/ e* x$ w, m- r# D
另外,Android系统为了保护硬件厂商的知识产权,增加了HAL层,可将驱动具体的实现部分抽取发到HAL中去实现,从而规避了硬件驱动开源的风险,所以android的驱动程序是分为两部分,一部分写入内核中,一部分写入HAL层中。
4 K; X' B6 a4 n1 Y4 c& u+ MAndroid除要实现底层驱动的开发外,还需要根据JNI规则将驱动程序封装为JNI层接口,以达到应用程序(JAVA程序) 可通过JNI来调用内核驱动程序。以显示驱动程序Framebuffer为例。
5 ?- U: w ~1 L+ P( d# `
) Z F7 E+ U$ y. K* Z3 o) _
7 ?" ]1 c& z" v/ I) j# q: h `5 C( m" \/ X- @' i
7 Z5 S. t& n# o" I9 x
9 E, g) n( z2 X2 x1 N, @4 e) O+ F1 v2 m/ { v
1 F0 K& I9 h3 d. R& N
- P. }% P/ }) O$ b |
|