ft_server
라는 과제를 수행하면서,
docker
에 대해 처음 접하게 되었다.
그래서 자연스럽게 VM [ Virtual Machine ]
에 대해서도 접하게 되고,
Emulation
이라는 개념에 대해서도 마주하게 되었다.
이번에는 VM
과 Emulation
에 대한 개념과,
부가적인 내용들에 대해서도 정리하고자 한다.
VM [ Virtual Machine ]
VM, 즉 가상머신은
컴퓨팅 환경을 소프트웨어로 구현한 것이다.
기존의 리소스나 하드웨어를 활용하여 시스템을 구동하도록 한다.
VM
이 동작하는 데에 사용되는 개념으로,
Emulation
, 전가상화
, 반가상화
가 있다.
VM
의 종류완전한 시스템 플랫폼을 제공한다.
즉, 완전한 운영체제(OS)를 지원한다.
단일 프로세스를 지원한다.
단일 프로세스만을 실행하기 위해 만들어졌기 때문이다.
Emulation
에뮬레이션,
모든 부품의 기능을 소프트웨어적으로 구현하는 방식이다.
하나의 시스템이 다른 시스템을 흉내내도록 하는 것이다.
속도는 느리지만 범용성은 가장 뛰어나다.
컴퓨터의 주된 부품을 구현할 때,
하드웨어의 기능을 지원받는 방식이다.
Emulation
에 비해 상대적으로 속도가 빠르다.
하지만, 해당 하드웨어 기능에 크게 종속되기 때문에,
범용성은 상대적으로 떨어진다.
가상머신 내에 설치될 운영체제(OS)를 수정하거나
전용 드라이버를 사용하여 하드웨어에 직접 접근하는 방법을
따로 마련하는 방법이다.
Emulation
과 전가상화보다 속도는 빠르지만
하드웨어 기능과 운영체제, 드라이버에도 종속성이 생겨,
범용성은 가장 떨어진다.
가상화에서 사용되는 플랫폼으로,
하드웨어에서 가상머신의 리소스를 분리하고
즉시 사용할 수 있도록 적절하게 준비해두었다가
VM
에서 사용할 수 있도록 한다.
늘 드는 생각이지만,
각각의 장단점을 고려해서 상황에 맞게 선택을 하면 될 것 같다.
속도가 우선인지, 범용성이 우선인지
그 가치에 대해서 고민을 해보는 것이 가장 중요할 것 같다.
정리를 하면서,
의문점이 생겼던 부분들에 대해서 많이 자료를 찾아보았다.
처음에는 VM
과 Emulation
이 상반된 개념이라고 생각했고
서로 장단점이 있으니 상황에 맞게 선택해서 쓰면될 것이라 생각했다.
그런데 자료를 찾으면서,
아무래도 모두 글로 정리가 되어있고,
각자의 해석대로 글을 작성했기 때문에
글을 찾아보면 찾아볼수록 개념이 흔들리는 느낌이 들었다.
최종적으로 읽어봤을 때,
가장 그 정의에 가까운 것 같다고 느낀 글을 기준으로
공부했고 정리했다.
직접 써보고 그 차이점이 무엇인지 느껴보는 것이
가장 좋을 것 같다는 생각을 하게 되었다.
📚 Reference
Virtual Machine(VM, 가상 머신)