추천 - BEAM(Erlang VM)은 어떤 종류의 가상 머신입니까?




무료 가상머신 추천 (2)

가상 컴퓨터가 "시스템 가상 컴퓨터"또는 "프로세스 가상 컴퓨터"의 두 범주로 분류된다는 것을 알고 있습니다. BEAM이있는 곳은 나에게 너무 희미합니다. 다른 종류의 가상 컴퓨터가 있습니까?


Erlang VM은 하나의 OS 프로세스로 실행됩니다. 기본적으로 코어 당 하나의 OS 스레드를 실행하여 시스템을 최대로 활용합니다. VM이 시작될 때 스레드의 수와 코어가 실행되는 코어 수를 설정할 수 있습니다.

Erlang 프로세스는 Erlang VM에 의해 전적으로 구현 되며 OS 프로세스 또는 OS 스레드에 연결되지 않습니다. 따라서 비록 백만 개가 넘는 Erlang 시스템을 운영 중이더라도 여전히 OS 당 하나의 프로세스이고 코어 당 하나의 스레드입니다. 이런 의미에서 Erlang VM은 "프로세스 가상 머신"이고 Erlang 시스템 자체는 OS처럼 동작하며 Erlang 프로세스는 OS 프로세스와 매우 유사한 속성을 가지고 있습니다 (예 : 격리). 실제로 BEAM을 기반으로하는 Erlang VM이 있습니다. BEAM은 베어 메탈에서 실행되며 사실 OS 자체 는 Xen의 Erlang을 참조하십시오.

그런데 수백만 개의 Erlang 프로세스를 실행하는 시스템을 만드는 것이 가능하며 실제로는 WhatsApp 와 같은 일부 제품에서 수행됩니다.

우리는 Erlang의 기본 환경을 설계 할 때 OSes에 대해 확실히 생각하고있었습니다.


가상 머신은 컴퓨팅 시스템입니다. 컴퓨팅 시스템의 궁극적 인 목표는 프로그래밍 된 논리를 실행하는 것입니다. 이러한 관점에서 볼 때 가상 시스템은 추상화 수준 및 에뮬레이션 범위에 따라 4 가지 유형 으로 분류 할 수 있습니다.

유형 1 : ISA (Full Instruction Set Architecture) 가상 시스템 은 전체 컴퓨터 시스템의 ISA 에뮬레이션 또는 가상화를 제공합니다. 게스트 운영 체제 및 응용 프로그램은 실제 컴퓨터 (예 : VirtualBox, QEMU, XEN )로 가상 컴퓨터의 최상위에서 실행할 수 있습니다.

유형 2 : 애플리케이션 바이너리 인터페이스 (ABI) 가상 시스템 은 게스트 프로세스 ABI 에뮬레이션을 제공합니다. 그 ABI에 대한 애플리케이션은 네이티브 ABI 애플리케이션의 다른 프로세스 (예 : Itanium의 Intel IA-32 Execution Layer, X86 에뮬레이션을위한 Transmeta의 Code Morphing, 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 디자인이 경계를 넘었습니다. 그들은 세 번째와 네 번째 범주 모두에 적합 할 수 있습니다.

출처:

  1. 위키피디아
  2. 가상 컴퓨터의 고급 설계 및 구현; Xlao-Feng LI






beam