关于android和x86的几点疑问。 android基因linux内核,系统除了内核还有其他什么

关于android和x86的几点疑问。

android基因linux内核,系统除了内核还有其他什么东西?android和linux有什么区别?

armx86指令集不同,atom运行的android系统跟一般arm手机的android系统有区别不?能否运行市场的软件?

问题稍微有点多,
我就不说什么答得好加多少分了,浮云。

大神何在?

android 除了基于 Linux 内核,他的上层运行环境和相关函数库,命令程序都是自己的。
其实 android 就是一个基于 Linux 内核的 JAVA 虚拟机环境。
实际 Android 程序都是基于 JAVA 虚拟机跑的解释型语言程序。

但解释型语言程序性能肯定不如本地二进制程序。所以 Android 还有一种 NDK 程序。
也就是 Android 里面有部分本地二进制程序的内容。这样本地程序方式运行,效率可以最高而且可以根据 CPU 功能做优化(比如 neon )。

指令集不同,但他的 JAVA 虚拟机是解释型语言,基于 JAVA 语言的程序是可以无差别运行的。只要能保证 Android 上面的 JAVA 虚拟机可以在 x86 上面成功运行就行了。

但 Android 有个另外的问题,就是 JAVA 虚拟机是针对 ARM 做性能优化的,在 X86 上面,这种性能优化都没了,需要另外在 x86 上面重新优化。但听说 Android 的 JAVA 虚拟机的语言里面,也有针对 ARM 硬件进行的修改设计,所以这种针对 ARM 性能优化的 JAVA 程序,在 X86 的系统上面性能也有损失。

所以 Android 出来很久后,在 x86 上面的运行效率都一直不怎么样。

而且现在还有 NDK 程序的出现, ARM 的二进制程序在 x86 上面是不能运行的。这些程序都不能运行。
不过 x86 有个优势就是自己的性能很强,而且模拟器技术现在也很强了。在 x86 上面,可以借助虚拟机(qemu 的 user mode 就值得看看)来运行 ARM 的二进制程序。
不过虚拟机其实还是有性能损失的。

所以未来,Android 的跨 CPU 架构依然还是问题。纯 JAVA 程序好说,用了 NDK 的程序就是问题了。

不过 llvm 这个编译器又给了另外一条路,既可以虚拟机方式运行,又可以编译成本地程序而成为二进制程序来优化性能运行。或许 Android 会考虑使用这种方法或者类似的让 NDK 程序可以跨 CPU 实现。代价是 Android 要自带一个编译器,体积也不小的。

MAC OS X 还有一种方法。在 MAC 放弃 IBM 的 Power CPU 而改用 Intel 的 CPU 后,他的程序都是里面附带两套二进制程序,老的 G4 CPU 的机器,就用程序里面的 power 指令集的程序代码。新的 Intel CPU 的机器,就自动用里面的 x86 指令来运行程序。从而实现完美的双指令集运行。不过代价是这样的程序都是两套指令集的内容,体积翻倍。

目前来说,似乎用了 NDK 的程序还都不能用的。不排除现在某些 x86 的手机,使用了虚拟机技术来实现运行 NDK 程序。现在 Linux 下面的 qemu 的 usermode 配合内核的 binfmt_misc 功能,可以让系统自动识别某个架构的程序,去调用 qemu 来执行。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-05-21
恩,android有自己的文件系统这个是最特别的,在linux上面还有好几层这些都在文件系统中。
这个文件系统会将你带入java的时间
第2个回答  2013-06-10
英特尔x86架构芯片非要用安卓系统,安卓这个系统在pc上不成熟功能太一般,特别是硬件驱动上和微软比它不是一个等级,安卓系统也只能在手机上用了,这样安卓对pc市场没有什么影响安卓免费推广快,把win8的x86版本装入手机可能会直影响pc销量,不管怎样安卓都只是手机系统。
第3个回答  2013-05-21
1、Android平台在设计过程中,针对移动终端资源有限的特点,对Linux进行了一定程度的裁剪:砍掉了原生的窗口系统、去除了对GNU Libc的支持(引入了更高效、针对嵌入式优化过的Bionic)、裁剪掉了一些标准Linux工具的部分特性等。
另外Android针对移动终端的特点还对Linux内核在闹钟(Alarm)、Low Memory Killer、Ashmem、内核调试(Kernel Debugger)、进程间通信(Binder)、日志(Logger)、电源管理(Power Management)等方面做了大量的优化。
其中Low Memory Killer相对于Linux标准OOM(Out Of Memory)机制更加灵活,它可以根据需要杀死进程来释放需要的内存。Low Memory Killer的实现主要位于aurora\msm\msm drivers/staging/android/lowmemorykiller.c文件中。
Ashmem为进程间提供大块共享内存,同时为内核提供和管理这个内存的机制。 Ashmem的实现位于system\core\libcutils\ashmem-dev.c文件中。

具体还有很多不一样。。。。。。

2、理论上X86上运行的和arm手机的android系统只要是同一个版本是没有区别,但是因为硬件配置不一样,版本不一样,每一家设计的硬件不一样,底层是有区别的,会根据屏幕分辨率,UI设计等等导致千差万别!