에뮬레이터

에뮬레이터는 한 컴퓨터 시스템(하드웨어 또는 소프트웨어)의 기능을 다른 시스템에서 모사하여 원래 시스템에서 동작하던 프로그램이나 운영체제를 그대로 사용할 수 있도록 하는 소프트웨어 또는 하드웨어를 의미한다. 주로 이식성 문제, 레거시 시스템의 보존, 소프트웨어 테스트 등을 위해 사용된다.

개요
에뮬레이터는 특정 기기나 시스템의 동작 방식을 다른 하드웨어 아키텍처 또는 운영 환경에서 재현하는 것을 목적으로 한다. 예를 들어, 구형 게임 콘솔(예: 닌텐도 엔에스이)의 게임을 현대의 개인 컴퓨터에서 구동하기 위해 해당 콘솔의 하드웨어 동작을 소프트웨어적으로 모사하는 것이 대표적인 활용 사례이다. 에뮬레이터는 주로 CPU 명령어 세트, 메모리 구조, 주변 장치 인터페이스 등을 정밀하게 흉내 내어 원래 시스템과 유사한 동작을 보장한다.
에뮬레이션은 시스템 수준에서 이루어지며, 이는 특정 기기의 하드웨어 디자인과 하위 소프트웨어 스택을 포함한 전체 환경을 모사하는 것을 포함한다. 이와 유사한 개념으로 ‘시뮬레이션(simulation)’이 있으나, 시뮬레이션은 동작 원리를 모사하는 데 초점을 두는 반면, 에뮬레이션은 실제 동작 호환성에 더 중점을 둔다.

어원/유래
‘에뮬레이터(emulator)’라는 용어는 라틴어 ‘aemulari’에서 유래하였으며, ‘본받다’, ‘따르다’는 의미를 지닌다. 이 단어는 1960년대 초반, IBM의 계산기 시스템 호환성 문제 해결을 위해 처음 기술적으로 사용된 것으로 알려져 있다. IBM의 소프트웨어 엔지니어 프레드 키프(Fred P. Brooks)는 1965년 논문에서 이 용어를 사용하며, 기존 시스템을 새로운 시스템에서 ‘모사(emulate)’하는 기능의 중요성을 설명하였다.

특징
에뮬레이터는 다음과 같은 특징을 갖는다.

  • 하드웨어 및 소프트웨어의 동작 구조를 소프트웨어적으로 모사한다.
  • 원래 시스템에서 실행되던 프로그램이나 운영체제를 변경 없이 실행할 수 있다.
  • 처리 성능 상의 오버헤드가 발생할 수 있으며, 따라서 원래 시스템보다 느리게 작동할 수 있다.
  • 정밀한 에뮬레이션을 위해 주기적으로 처리된 신호, 인터럽트, 메모리 매핑 등을 재현해야 하므로 개발 난이도가 높다.
  • 게임 콘솔, 오래된 컴퓨터, 휴대용 기기, 산업용 장비 등 다양한 분야에 활용된다.

관련 항목

  • 시뮬레이션
  • 가상 머신 (Virtual Machine)
  • 하드웨어 모사 (Hardware Emulation)
  • 리버스 엔지니어링
  • 레거시 시스템
  • QEMU, MAME, DOSBox (대표적인 에뮬레이터 소프트웨어)
둘러보기

더 찾아볼 만한 주제