가상 머신(VM)은 물리적인 머신 환경을 소프트웨어로 구현한 것 입니다.
즉, 컴퓨터를 에뮬레이션 하는 운영 체제의 상단에 높은 수준의 추상화가 적용된 소프트웨어입니다.
가상 머신을 사용하면 동일한 플랫폼을 여러 운영 체제 및 하드웨어 아키텍처에서 실행할 수 있습니다.
Java 및 Python 용 인터프리터 같은 경우 코드를 VM 특정 바이트 코드로 컴파일 할 수 있습니다.
일반적으로 가상 머신은 다음과 같은 기능을 수행합니다.
물리적 CPU가 수행하는 작업을 에뮬레이션
소스 코드를 바이트 코드로 컴파일
명령어 및 피연산자를 포함하는 데이터 구조 (명령어가 처리하는 데이터)
함수 호출 조작을 위한 호출 스택
실행할 다음 명령어를 가리키는 IP (=Instruction Pointer)
가상 CPU - instruction dispatcher
명령 포인터로 주소를 지정해서 다음에 수행할 명령어 가져오기 (Fetch)
피연산자를 디코딩
명령을 실행
오늘은 시스템 가상 머신이 아닌 프로세스 가상 머신에 대해 알아봅시다.
기본적으로 가상 머신을 구현하는 두 가지 방법이 있습니다.
<aside> 💡 스택 기반의 모델의 대표적인 예로는 JVM, .Net CLR 등이 있습니다.
</aside>