当前位置:首页 » 安卓系统 » 带内核的安卓x86是什么意思

带内核的安卓x86是什么意思

发布时间: 2024-11-25 16:27:01

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

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 来执行。

热点内容
我的世界国外小游戏服务器 发布:2024-11-25 18:52:12 浏览:646
传奇是要什么配置的手机 发布:2024-11-25 18:43:34 浏览:949
荣耀v6如何设置程序安装密码 发布:2024-11-25 18:43:25 浏览:556
C语言读盘 发布:2024-11-25 18:41:55 浏览:573
我的世界服务器被破坏了怎么恢复 发布:2024-11-25 18:27:57 浏览:330
日常电瓶叉车配置有哪些 发布:2024-11-25 18:21:17 浏览:362
java的二分查找 发布:2024-11-25 18:21:11 浏览:24
买帕萨特选哪个配置 发布:2024-11-25 18:17:23 浏览:225
编程很挣钱吗 发布:2024-11-25 18:13:43 浏览:936
接受btc支付的香港云服务器 发布:2024-11-25 18:02:09 浏览:910