2010-11-25 3 views
3

저는 주로 .NET 개발자이며 ESX 및 Hyper-V와 같은 기술 전문가와 많은 인프라 작업을 수행합니다. JVM에 VM이 있다는 것은 매우 이상한 일입니다. VM을 ESX 서버에있는 형태로 생각하고 있습니다.VM의 한 형태 인 JVM입니까?

JVM이 하드웨어와 OS가 아닌 OS와 앱 사이의 특정 링에있는 실제 VM이라고 말하는 것이 맞습니까?

감사

답변

4

CLR (.NET의 일부)이 가상 컴퓨터와 같은 방식으로 가상 컴퓨터입니다. Hyper-V는 일반 하드웨어를 가상화하여 전체 운영 체제를 실행하므로 대부분의 코드가 정상적인 컴퓨터에서 직접 실행되는 것을 "생각"합니다.

JVM 또는 CLR

는 약간 다르다 :

  • 은 가상화되고 명령 세트는 특별히 에가 가상화 될 설계되었다. "원시 Java 바이트 코드"하드웨어가 있지만 Java를 실행하는 일반적인 방법과는 거리가 있습니다. 일반적으로 바이트 코드 및 일리노이는 JIT로 컴파일되며 가비지 수집기는 Hyper-V 등에서는 해당되지 않는 가상 머신의 일부입니다.
  • VM이 운영 체제 자체를 실행하지 않습니다 - 실행시 그것에 대해 직접적으로 알고 있으며, 가상 환경에서 코드를 실행하지만, 두 가지의 주요 관심사는 매우 다르다 있습니다

"가상 머신"의 두 종류의 파일 시스템 액세스 등을 위해 사용하는 운영 체제.

+0

첫 번째 단락은 며칠 전에 하이퍼 바이저가 OS를 속여 OS의 수정을 막기 위해 대부분의 코드가 직접 실행된다고 생각하는 방식을 읽은 것을 상기시켜줍니다. 좋은 대답. 실제로 JVM이 OS에서 실행된다는 것을 의미합니다. "OS와 응용 프로그램간에 특정 링에 앉아있는 실제 VM"이라고 말했을 때 말입니다. 그게 바로 그것에 대해 내가 어떻게 추측하는지 알 수있을거야. – dotnetdev

+0

@dotnetdev : 맞아. 또한 일부 "컴퓨터"VM은 운영 체제에서도 실행되지만 일부는 베어 메탈에서 실행됩니다. –

+0

이 개념은 파악하기 까다로울 수 있습니다. 이 스레드의 모든 것을 이해했기 때문에 인프라 지식이있어서 기쁩니다. – dotnetdev

0

예, JVM은 바이트 코드를 가져와 실행하고 응용 프로그램에 보안 제한을 적용 할 수 있습니다.

3

Java (및 .NET, Python 및 Parrot ...) 가상 컴퓨터는 "시뮬레이션 된 컴퓨터"입니다. VM이 실행되는 운영 체제에서 동일하고 지침과 동작이 있으므로 "크로스 플랫폼"측면이 작동합니다. VM 자체는 물론 클라이언트 코드에 대한 세부 정보를 제공하는 플랫폼 별입니다.

그래서 Infocom Z-Machine과 Knuth의 MIX 가상 머신은 모두 "가상 머신"입니다.

1

ESX 및 Hyper-V는 컴퓨터 시스템을 에뮬레이트하지만 JVM은 지원되는 플랫폼에서 Java 바이트 코드의 실행 (및 최적화) 만 제공합니다.