에뮬레이션

위키원
tjdud (토론 | 기여)님의 2021년 7월 15일 (목) 17:56 판
이동: 둘러보기, 검색

에뮬레이션(emulation)은 어떤 계산기가 다른 종류의 계산기용으로 작성된 프로그램을 특별한 기구와 프로그래밍 기법을 이용하여 그대로 실행할 수 있도록 하는 것을 이른다.[1]

개요

에뮬레이션은 어떤 계산기가 다른 종류의 계산기 용으로 작성된 프로그램을 특별한 기구와 프로그래밍 기법을 이용하여 그대로 실행할 수 있도록 하는 것을 이른다. 또는 에뮬레이션을 하는 장치 또는 프로그램을 가리켜 에뮬레이터(emulator)라고 한다. 새로운 정보 기술이 출현할 때마다 이전의 프로그램에 대한 소스 코드를 입수할 수 있거나, 이전의 프로그램을 그대로 재현할 수 있을 만큼 충분히 상세한 문서화가 이루어지거나, 또는 최신 버전과 이전 버전의 호환을 돕는 연계 소프트웨어가 있다는 보장을 전제로 한다. 그러나 이러한 전제들이 현실적이지 않다는 점이 이 선택을 유일한 해결책으로 단정하기 어렵게 하는 제약이다.[2] 에뮬레이션은 서로 다른 기종의 프로그램 호환성을 갖게 하기 위한 수단이다. 대상에 대한 소프트웨어 모델을 만들고, 그것을 계산기로 작동하여 그 상태를 시뮬레이트하는 프로그램 시뮬레이션의 일종이라고도 생각 할 수 있지만, 에뮬레이터는 보통 마이크로 프로그래밍 기능 등에 의해 고속화를 꾀하고 있다. 에뮬레이터는 예를 들면 마이크로 컴퓨터를 개발하는 경우 등에 마이크로컴퓨터(MDS) 개발 시스템의 일부로서 강력한 디버깅 루트를 제공하며, 과대한 진단 장치나 진단 프로그램은 불필요하다.[1]

종류

  • 소프트웨어 에뮬레이션: 원래 하드웨어적으로 수행되는 작업을 소프트웨어로 흉내내어 처리하는 것을 의미한다. 예를 들어 부동 소수점 연산을 처리하기 위해 CPU에 부동소수점 연산회로를 내장하는 대신 마이크로 프로그래밍을 이용하여 소프트웨어적으로 처리하는 경우, 대개 처리 속도는 늦어지나 가격은 그만큼 떨어진다.
  • 하드웨어 에뮬레이션: 원래 하드웨어와 똑같은 성능을 내도록 처리하게 만들어 회로 내에서 디버깅이 용이하게 한다. 개발 작업의 효율성을 극대화 시킨다. 예로는 인서킷 에뮬레이터 등이 있다.[3]


에뮬레이션과 시뮬레이션의 차이점

에뮬레이션과 시뮬레이션(simulation)은 모두 어떤 시스템의 일부 또는 전체를 흉내낸다는 공통점이 있지만 시뮬레이션은 몇 가지 특성을 주고, 거기에 대한 결과를 산출해보는 것이고, 에뮬레이션은은 완전 똑같은 방법으로 다른 대상을 하드웨어 동작까지도 흉내내는 것을 말한다.[3]

에뮬레이션과 가상화의 차이점

에뮬레이션(Emulation)과 가상화(Virtualization)는 비슷한 점이 많지만 운영상 차이점도 많다. 새로운 아키텍처에서 기존의 운영체제에 접근하려 한다면 에뮬레이션을 선호할 테지만, 반대로 가상화된 시스템은 기초 하드웨어와 독립적으로 작동한다. 짧게 말해, 에뮬레이션은 하나의 시스템이 다른 시스템을 흉내 내도록 하는 것이다. 예를 들어, 한 소프트웨어가 시스템 A에서는 구동되고 시스템 B에서는 구동되지 않을 때, 시스템 B에서 시스템 A의 동작을 "에뮬레이션"한다. 그러면 해당 소프트웨어는 시스템 A의 에뮬레이션에서 구동하게 된다. 이 때, 가상화에서는 시스템 A를 B와 C 두 개의 서버로 분리한다. 이 "가상" 서버들은 독립적인 소프트웨어 컨테이너(Container)로써 자체적으로 CPU, RAM, 스토리지, 네트워킹 등 소프트웨어 기반 자원에 접근할 수 있으며 독립적으로 재부팅도 가능하다. 이 둘은 정확히 실제 하드웨어처럼 작동하며, 애플리케이션 또는 다른 컴퓨터는 그 차이점을 인지하지 못한다. 이 각각의 기술은 저마다의 용도, 장점, 단점이 있다.[4]

  • 에뮬레이션: 에뮬레이션의 예에서 소프트웨어는 하드웨어를 대신해 하드웨어와 같은 방식으로 동작하는 환경을 구성한다. 이 때, 에뮬레이션 프로세스에 사이클을 할당함으로써 프로세서에 피해를 주는 대신에 사이클은 실행 연산으로 활용된다. 따라서 CPU 연산능력의 상당 부분을 이 환경을 구성하는데 사용하게 되는데, 흥미롭게도 사용자는 에뮬레이션 환경에서 가상 서버를 구동할 수 있다. 이렇게 에뮬레이션의 자원 낭비가 심한데도 불구하고 이를 고려해야 하는 이유는 여러가지 효율 높은 활용성 때문이다. 밑의 세가지로 확인 가능하다.
    • 다른 하드웨어용 운영체제 구동 (PC에서 맥(Mac) 소프트웨어 구동 또는 컴퓨터에 콘솔 기반 게임 구동)
    • 다른 운영체제용 소프트웨어 구동 (PC에서 맥 전용 소프트웨어 구동 또는 반대의 경우)
    • 호환 하드웨어가 없는 상태에서 레거시(Legacy) 소프트웨어 구동

또한 에뮬레이션은 여러 시스템을 위한 소프트웨어를 설계할 때 유용하다. 코딩을 단일 머신에서 수행할 수 있으며 애플리케이션은 자체 창에서 동시에 실행되는 복수의 운영체제 에뮬레이션에서 구동할 수 있다.

가상화(Virtualization)

가상화의 경우, 물리적인 위치 또는 배치에 상관 없이 컴퓨팅 자원을 효율적이며 기능적인 방식으로 활용한다. 충분한 RAM과 스토리지를 갖춘 고성능 머신은 가상화로 각각 자원을 보유한 여러 대의 서버로 분리될 수 있다. 가상화를 사용하지 않으면 일반적으로 단일 서버로 배치되는 이런 단일 머신들은 각각 회사의 웹이나 이메일 서버를 호스팅할 수 있다. 따라서 기존에 충분히 활용하지 않던 컴퓨팅 자원을 적극적으로 활용할 수 있다. 이는 비용 절감에 크게 도움이 된다.

에뮬레이션 환경은 하드웨어와 상호 작용하는 소프트웨어 브리지가 필요한 반면에 가상화는 하드웨어에 직접 접근한다. 단, 가상화는 전반적으로 속도가 빠르기는 하지만 이미 기본 하드웨어에서 구동할 수 있는 소프트웨어 구동으로 제한됩니다. 가상화의 이점은 다음과 같다.

• 기존 x86 CPU 아키텍처와의 광범위한 호환성 • 모든 하드웨어와 소프트웨어에 물리적인 장치로 표시 • 각 인스턴스가 독립적으로 작동함

에뮬레이션과 가상화를 통해 기업은 대부분의 가상 시스템 기능을 수행할 수 있다. 두 서비스가 비슷하게 들리겠지만, 중요한 것은 소프트웨어를 어떻게 활용하느냐이다. 소프트웨어를 더욱 빨리 실행하고 싶다면 가상화를 통해 게스트 코드를 CPU에서 직접 실행할 수 있다. 반대로, 에뮬레이터는 게스트 코드 자체를 구동하여 CPU를 다른 작업에 활용할 수 있다.

각주

  1. 1.0 1.1 에뮬레이션〉, 《네이버 지식백과》
  2. 에뮬레이션〉, 《네이버 지식백과》
  3. 3.0 3.1 시리즈,〈에뮬레이션과 시뮬레이션 차이〉, 《티스토리》, 2014-07-08
  4. Data Scientist cinema4dr12,〈가상화 vs 에뮬레이션, 차이점은 대체 무엇일까?〉, 《티스토리》, 2014-04-27

참고자료

+ Data Scientist cinema4dr12,〈가상화 vs 에뮬레이션, 차이점은 대체 무엇일까?〉, 《티스토리》, 2014-04-27

같이 보기

틀:소프트 웨어