내가 이해 한 바에 따르면 가상 머신은 "시스템 가상 머신"또는 "프로세스 가상 머신"의 두 가지 범주로 나뉩니다. BEAM이있는 곳은 저에게 다소 모호합니다. 내가 알지 못하는 다른 종류의 가상 머신이 있습니까?
내가 이해 한 바에 따르면 가상 머신은 "시스템 가상 머신"또는 "프로세스 가상 머신"의 두 가지 범주로 나뉩니다. BEAM이있는 곳은 저에게 다소 모호합니다. 내가 알지 못하는 다른 종류의 가상 머신이 있습니까?
답변:
Erlang VM은 하나의 OS 프로세스로 실행됩니다. 기본적으로 시스템의 최대 활용도를 달성하기 위해 코어 당 하나의 OS 스레드를 실행합니다. VM이 시작될 때 스레드 수와 실행되는 코어를 설정할 수 있습니다.
Erlang 프로세스는 전적으로 Erlang VM에 의해 구현 되며 OS 프로세스 또는 OS 스레드에 연결되지 않습니다. 따라서 100 만 개가 넘는 프로세스의 Erlang 시스템을 실행하더라도 여전히 OS 프로세스 하나와 코어 당 스레드 하나입니다. 따라서 이러한 의미에서 Erlang VM은 "프로세스 가상 머신"인 반면 Erlang 시스템 자체는 OS처럼 작동하며 Erlang 프로세스는 OS 프로세스와 매우 유사한 속성 (예 : 격리)을 갖습니다. 베어 메탈에서 실행되고 실제로 자체적으로 OS 인 BEAM을 기반으로하는 Erlang VM이 있습니다. Erlang on Xen을 참조하세요 .
그건 그렇고, 시스템이 수백만 개의 Erlang 프로세스를 실행하는 것은 완벽하게 가능하며 실제로 WhatsApp 과 같은 일부 제품에서 수행됩니다 .
우리는 기본적인 Erlang 환경을 설계 할 때 OS에 대해 많이 생각했습니다.
가상 머신은 컴퓨팅 시스템입니다. 컴퓨팅 시스템의 궁극적 인 목표는 프로그래밍 된 논리를 실행하는 것입니다. 이러한 관점에서 가상 머신 은 추상화 수준과 에뮬레이션 범위에 따라 4 가지 유형 으로 분류 할 수 있습니다 .
유형 1 : ISA (Full Instruction Set Architecture) 가상 머신 은 전체 컴퓨터 시스템의 ISA 에뮬레이션 또는 가상화를 제공합니다. 게스트 운영 체제 및 응용 프로그램은 가상 컴퓨터의 상단에서 실제 컴퓨터 (예 : VirtualBox, QEMU, XEN )로 실행될 수 있습니다 .
유형 2 : ABI (Application Binary Interface) 가상 머신 은 게스트 프로세스 ABI 에뮬레이션을 제공합니다. 해당 ABI에 대한 애플리케이션은 네이티브 ABI 애플리케이션의 다른 프로세스 (예 : Itanium의 Intel IA-32 Execution Layer, X86 에뮬레이션을위한 Transmeta의 코드 모핑, PowerPC 에뮬레이션을위한 Apple의 Rosetta 번역 레이어) 와 함께 프로세스에서 나란히 실행될 수 있습니다 .
유형 3 : 가상 ISA 가상 머신 은 가상 ISA에서 코딩 된 애플리케이션이 실행될 수 있도록 런타임 엔진을 제공합니다. 가상 ISA는 일반적으로 높은 수준의 제한된 범위의 ISA 의미 체계를 정의하므로 전체 컴퓨터 시스템 (예 : Sun Microsystem의 JVM, Microsoft의 공용 언어 런타임, Parrot Foundation의 Parrot 가상 컴퓨터) 을 에뮬레이트하는 데 가상 컴퓨터가 필요하지 않습니다 .
유형 4 : 언어 가상 머신 은 게스트 언어로 표현 된 프로그램을 실행하는 런타임 엔진을 제공합니다. 프로그램은 일반적으로 사전에 기계 코드로 완전히 컴파일되지 않고 게스트 언어의 소스 형태로 가상 컴퓨터에 제공됩니다. 런타임 엔진은 프로그램을 해석하거나 번역해야하며 메모리 관리와 같은 언어로 추상화 된 특정 기능 (예 : Basic, Lisp, Tcl, Ruby 용 런타임 엔진 )을 수행해야합니다.
가상 머신 유형 간의 경계는 명확하지 않습니다. 예를 들어, 언어 가상 머신은 프로그램을 일종의 가상 ISA로 컴파일 한 다음 해당 가상 ISA의 가상 머신에서 코드를 실행하여 가상 ISA 가상 머신의 기술을 사용할 수도 있습니다.
BEAM 과 같은 많은 VM 설계 가 경계를 넘습니다. 세 번째 및 네 번째 범주에 모두 적합 할 수 있습니다.
출처:
나는 당신이 http://en.wikipedia.org/wiki/Virtual_machine을 읽었다 고 가정합니다 -그 용어로 BEAM은 JVM과 같은 "프로세스 가상 머신"입니다.