|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
安卓,是一个系统,用于移动终端,智能手机、平板之类,如今也可以用于桌面工作站或电视机顶盒、智能电视等。它的内核基于linux内核,但不同于其他linux发行版,有部分源码闭源。 linux,是一个内核,不是完整的一个系统,所有以linux为内核工作的系统统称linux发行版。1 ^8 m; ], A# Q) `5 Q" [0 y
5 k3 T5 P" P9 C0 x
Android和Linux作为现行主流的操作系统,无论在消费类产品还是在工控领域,都有广泛的应用。都说Android系统是脱胎于Linux系统,那么是不是Android是不是属于Linux的一种。现在就来谈谈Android和Linux系统的异同点。
, j* G8 Y0 b W1 y
2 ~, x7 \& |2 D( ]* _. {5 K8 I$ H# I( [" Q" p% |& E; |
1. 两者的共同点
" i) E7 `, q8 n Android是基于Linux内核的系统。Android和Linux系统的核心系统服务都依赖于Linux内核,如安全、内核管理、进程管理、网络堆栈、驱动模型等。Linux内核也作为两者的硬件和软件之间的抽象层,它隐藏具体硬件细节而为上层应用开发提供统一的服务。
- A$ G$ n$ t5 e
1 t+ k1 k9 U& w N, z3 X, W+ _4 N, V# \$ [9 o2 P1 N5 O
% U( _/ B! O u, S* L! u& h4 H2. 系统框架的差异7 r! R1 p, [' h) y' r
Linux系统与Android表面上为两个不同的操作系统,但是Android本质上还是一个Linux系统,只不过Google对它进行了裁剪和定制。
. ^6 C/ @6 D( I$ o另外,相较于Linux系统,android在其Linux内核上面运行了一个叫Dalvik(4.4版本后改为ART)的Java虚拟机(JVM),因而使用JAVA开发的android的应用程序可以通过JAVA虚拟机运行在Android系统上。而Linux的应用程序使用的是C/C++开发的,可以机器码的形式运行在内核系统上。
2 h; t3 z5 _8 @
, ~& f) e- }# c) i* _+ x6 d. [6 ?% e: Z, E# o* I6 |- p6 h( L
3. Linux与android底层驱动软件的差异
: q7 l/ k# z* Q; h, p9 VAndroid除了Linux内核具备的常用核心驱动外,还增加了自己专有的内核驱动程序,如显示驱动、蓝牙驱动、相机驱动、内存卡驱动、Binder IPC驱动等。# Z0 ?+ v% Y9 y) w# q9 @/ w
另外,Android系统为了保护硬件厂商的知识产权,增加了HAL层,可将驱动具体的实现部分抽取发到HAL中去实现,从而规避了硬件驱动开源的风险,所以android的驱动程序是分为两部分,一部分写入内核中,一部分写入HAL层中。
& W5 r/ E3 r: }4 D* o/ D5 R3 nAndroid除要实现底层驱动的开发外,还需要根据JNI规则将驱动程序封装为JNI层接口,以达到应用程序(JAVA程序) 可通过JNI来调用内核驱动程序。以显示驱动程序Framebuffer为例。
/ Z0 `3 e7 k4 q9 c8 j+ ~9 p+ l) e: b O9 x" @$ B
! Z }, q5 J% ]- e$ O" Z+ k& r
2 w( G) _, X+ |* T/ X9 g
. T( d. t- {& w/ x3 j: U5 h, ^1 @
) e; `" |+ ?8 z% k2 ?
. i' j/ ?/ }- h0 o0 f6 @' A
6 ^ F# a! F/ T
% }3 f& ?# @3 C9 n/ @( |5 Q |
|