가상 머신(Virtual Machine)이란 무엇인가?
컴퓨터 안에 또 다른 컴퓨터를 동작 시키는 것이다. 컴퓨터 시스템을 에뮬레이션 한다고 말한다.
실제로 물리적으로 존재는 컴퓨터는 아니지만 실제 컴퓨터처럼 작동한다.
컴퓨터의 주된 부품들(CPU, RAM, 하드디스크 등)의 기능을 소프트웨어적으로 구현해 가상으로 만들어서 구현한다.
가상 머신은 크게 시스템 가상 머신과 프로세스 가상 머신 두 가지로 나뉜다.
시스템 가상 머신은 실제 기계를 대체해서 제공하며, 전체 운영체제를 실행하기 위한 기능들을 제공한다.
프로세스 가상 머신은 플랫폼에 독립적인 환경에서 컴퓨터 프로그램을 실행하기 위해 고안되었다. 프로그래밍 언어의 하드웨어 추상화를 위해 사용된다. 자바를 예로 들 수 있다.
에뮬레이션(Emulation), 가상화(Virtualization), 반가상화(Paravirtualization)
에뮬레이션 : 모든 부품의 모든 기능을 소프트웨어적으로 구현하는 방식이다. 속도는 가장 느리나 범용성은 가장 뛰어나다.
가상화 : CPU 등 주요 부품의 기능에서 하드웨어의 기능을 지원받는다. 속도는 빠르나 해당 하드웨어에 종속되므로 범용성이 떨어진다. 예를 들어 CPU를 가상화하면 실제 CPU가 처리하는 기계어 세트에서 크게 벗어날 수 없다.
반가상화 : 기반이 되는 하드웨어, 소프트웨어와 동일하지는 않지만 비슷한 가상 머신에 대한 소프트웨어 인터페이스를 제공하는 기술이다. 완전한 에뮬레이션/가상화를 포기한 방법이다. 가상 머신에 설치되는 OS에 수정을 가하거나 전용 드라이버를 이용하여 하드웨어에 직접 접근하는 방식을 이용한다. 속도는 가장 빠르나 운영체제와 드라이버에 종속되어서 범용성은 가장 떨어진다. Hypervisor 를 이용한다.
가상 머신을 사용하는 목적과 이유
1. 하나의 컴퓨터로 서로 다른 두 개 이상의 운영체제를 실행하고자 할 때
2. 하나의 컴퓨터 자원을 여러 사용자에게 나누어 주는 상황에서 상호 간섭을 없애고 싶을 때
예를 들어, 클라우드 등에서 사용하는 가상머신이 있다.
3. 컴퓨터의 다른 부분에 영향을 주지 않는 독립 환경을 만들고 싶을 때
예를 들어, 악성 코드를 분석 할 때 감염을 방지하기 위해 사용한다.
참고 자료 References
1. 나무위키 "가상 머신" https://namu.wiki/w/%EA%B0%80%EC%83%81%EB%A8%B8%EC%8B%A0
2. 네이버 지식백과 "데스크톱 가상화" https://terms.naver.com/entry.nhn?docId=3580883&cid=59088&categoryId=59096
3. Wikipedia "Virtual Machine" https://en.wikipedia.org/wiki/Virtual_machine
댓글