当JVM执行Java应用程序时,操作系统的作用是什么?为什么我们需要操作系统?

15 java cpu operating-system jvm

我在互联网上做了一些阅读,有人说Java应用程序是由java虚拟机(JVM)执行的."执行"这个词让我感到困惑.据我所知,操作系统可以执行非Java应用程序(即:用C,C++编写......).在较低级别,这意味着操作系统将二进制程序加载到内存中,然后指示CPU执行内存中的指令.

那么现在有了JVM,会发生什么?据我所知,操作系统首先会调用JVM(包含运行时环境).从那时起,JVM将为应用程序生成一个(或多个)线程.我想知道操作系统的角色是否会再次发挥作用?在我看来,JVM已"绕过"操作系统并直接指示CPU执行应用程序.如果是这样,为什么我们需要操作系统?

再稍微一点,JVM将使用其JIT将应用程序的字节代码编译为机器代码,然后执行这些机器代码.由于它已经是机器码,我们是否还需要JVM?因为操作系统可以指示CPU执行这些机器代码,而不是JVM.我在这里犯了什么错吗?

我想从这里的人们那里学到更多东西.如果我错了,请纠正我.非常感谢!

Pet*_*rey 4

我们需要操作系统来完成C或C++程序的所有功能.默认情况下,JVM会执行更多操作,但它不会替换操作系统所做的任何操作.唯一的区别可能是有时你有Your Code[调用] JVM[调用] OS,或者用编译后的代码你可以Your Code[调用]OS

类似地,在C++中你可能Your Code[调用] Boost[调用] OS.

当您的程序在本机代码中运行时,它不需要JVM.这很好,因为JVM知道何时"退回"并让应用程序运行.但是,并非所有程序都将在应用程序的剩余生命周期内编译为本机代码,因此您仍然需要它.

它可以使用内核旁路设备/驱动程序与JNI,但Java不直接支持这种功能.