在编程语言的上下文中,如果编译的代码在某种类型的虚拟机上运行,为什么虚拟机不需要操作系统?例如,在Java中,用Java编写的程序在JVM中运行,但(据我所知) JVM没有操作系统。我知道操作系统是必要的,因为它们管理资源(e.g.which进程轮流使用CPU),那么为什么JVM不需要操作系统呢?我对虚拟机的理解是,它是它自己的处理器,有它自己的架构和指令,但是“虚拟机”这个术语可以被认为是有它自己的操作系统吗?
发布于 2013-12-01 09:57:18
据“眼睛”所知,虚拟机是它自己的操作系统。它只是没有物理硬件可供考虑。
(物理/真实) CPU执行JVM --这是平台相关的,然后JVM执行Java代码--这是平台无关的。
所以JVM确实需要一个操作系统。独立于操作系统和不需要操作系统之间是有区别的。在这种情况下,独立意味着对Java来说,在哪种操作系统上运行它并不重要。只要JVM存在,它就会工作得很好。JVM必须确保底层操作系统正确地执行您的Java代码。
发布于 2013-12-01 10:13:53
简而言之,JVM不需要操作系统。
JVM是单独指定的,独立于特定的操作系统。它在不必指定操作系统的情况下很有用,而且,正如其他地方指出的那样,有一种东西叫做JVM,而不是我们通常认为的操作系统。
Java最初是为了像厨房电器这样的东西而开发的--没有文件系统,没有鼠标或键盘,也许还有一个小键盘和一些7位数字的显示器,就是这样。
因此,当Java程序需要在一台足够复杂到需要操作系统的机器上运行时,Java就可以与任何操作系统进行交互-- Windows、Mac OS、Unix等等--它的一些核心类抽象了许多正常的操作系统操作,以至于单个Java程序无需更改就可以在这些操作系统上运行。当然,这是有困难的--这是一件很难做的事情--但Java在这方面做得比我所知道的任何其他事情都要广泛,也更好。
发布于 2013-12-01 09:58:47
大多数Java程序员所知道的JVM - Oracle JVM -期望在现有的操作系统(Linux、Windows、Solaris等)下运行,但JVM存在期望在裸机上运行的JVM。有关此类JVM的信息,请参阅http://jnode.org。
不幸的是,Oracle JVM缺乏一些必要的功能,无法将操作系统提供的功能构建到JVM本身中。例如,您不能限制单个线程使用的内存或cpu的数量,也不能强行杀死一个线程。
https://stackoverflow.com/questions/20307768
复制相似问题