Davlik能否在Linux内核中移动以获得性能?

时间:2011-04-03 18:52:16

标签: android architecture kernel

这是一个非常高级的架构问题。为什么没有JVM被移入 Linux内核,它可以更高效(包括即时编译代码)。

我意识到这对于最小内核粉丝来说是令人憎恶的,但Linux并不是那些操作系统之一, 它似乎。可以通过/dev条目控制的JVM内核模块是可能的。

为什么不呢?

3 个答案:

答案 0 :(得分:2)

将内容移入内核本身并不会“让它变得更快”。在某些特殊情况下它可以做的是允许使用替代方法。直到你有一些利用内核的方式,在内核中完全没有任何好处。

答案 1 :(得分:2)

我至少可以说出几个原因(当然还有更多):

  1. 内核模式下的编程和调试要复杂得多,也很棘手。在用户模式下您可以轻松完成的操作需要大量手动编码,并且需要大量时间在内核模式下进行调试。
  2. 将JVM移动到内核模式将消除将JNI用于本机模块的可能性。
  3. 安全性原因 - 隔离的单独JVM在不同进程中运行,每个进程具有不同的权限。在内核模式下,这是不可能的(没有大量额外的编码)。

答案 2 :(得分:0)

可能效率不高;它可能更少效率。每次你想处理数据时,数据都存在于内核之外(除非你还将程序和他们想要的任何数据直接加载到内核中),并且至少需要进行两次上下文切换。如果解释器在内核之外,则不需要上下文切换(除非必须从某个地方(文件,用户,网络等)读取数据。

此外,那些“从某处读取”的情况下即使内核请求也会产生额外的上下文切换,因为在幕后有很多东西要用来获取这些数据。

(上下文切换是很昂贵的。他们有点像在头脑中踢CPU并告诉它在看到星星时看到别的东西;然后它需要在你踢它之前记下它正在做的事情,然后去读一下你刚才告诉它要做的事情。)