관리 메뉴

제목없음

시뮬레이터와 에뮬레이터의 차이 본문

프로그램 작성/기타

시뮬레이터와 에뮬레이터의 차이

다람군 2012.08.07 02:06

스마트폰 앱 개발을 하다 보면 시뮬레이터라는 말도 보이고 에뮬레이터라는 말도 보입니다. 단어는 모두 흉내내는 것이라는 뜻을 가지고 있어서 이를 헷갈려하는 사람들도 많습니다. 아예 둘을 섞어 쓰는 사람도 많지요.

 

에뮬레이터라는 단어를 사용하는 것들을 한번 살펴보죠.

 

1. Gameboy Adventure Emulator

2. Android Emulator

3. Windows Phone Emulator

 

그리고  시뮬레이터라는 단어를 사용하는 것들을 한번 살펴보죠.

 

1. iPhone Simulator

2. bada Simulator

 

어떤가요? 비교가 확실히 되나요?

 

에뮬레이터에서 나열된 세 가지의 공통점은 ARM 명령어를 직접 번역 실행하면서 환경을 똑같이 실행한다는 점입니다(물론 ARM 명령어를 에뮬레이트하지 않는 에뮬레이터도 당연히 존재합니다). 닌텐도 게임보이 어드벤스용 롬을 구동할 수 있는 에뮬레이터를 이용하여 포켓몬스터와 같은 게임을 해본 사람들이 꽤 많을 겁니다. 그게 단지 똑같이 보이도록 흉내만 냈다고 하면 어떨까요?

 

시뮬레이터에서 나열된 두 가지의 공통점은 Intel x86 명령어(실행 환경에 따라 다릅니다만, 보통 시뮬레이터 구동 환경이 x86 또는 x64 CPU 환경입니다)를 이용하여 환경을 흉내만 낸다는 점입니다. 그러니까, 흉내만 내는 것으로 대강 실제로는 어떻게 구동될 지 테스트하는 것이니 실기기에서 동작을 시켰을 때 예기치 않은 오류가 발생할 수도 있는 겁니다.

 

일단 에뮬레이터를 이용해 해당 플랫폼용 앱을 개발하는 경우에는 환경이 완전히 똑같이 구동되고 있는 것이므로 실제로 똑같이 구동될 것이라고 믿어도 좋다는 점에서 개발자의 부담을 덜어줍니다. 물론 Android는 아직까지는 파편화가 심하므로 실기기를 구해서 정확하게 테스트를 진행해야 합니다만.

 

시뮬레이터를 이용해 해당 플랫폼용 앱을 개발하는 경우에는 단지 흉내만 내고 있는 것이므로 실제로 똑같이 구동될거라고 생각하는 것은 금물입니다. 물론 거의 대부분의 기능이 똑같이 구동됩니다만, 사소한 메모리 오류를 포함하여 원시 코드에 따른 명령어 오류가 나기도 합니다(이건 좀 극단적인 오류이긴 합니다만). 또한 시뮬레이터용 바이너리와 실기기용 바이너리가 따로 존재합니다. iOS의 경우 그 두가지를 합쳐서 유니버셜 바이너리를 생성할 수 있긴 하지만요.

 

요약하자면, 에뮬레이터는 실제 환경을 담은 롬을 이용하여 똑같이 실행하는 프로그램, 시뮬레이터는 실제 환경과 유사하게 구성하여 동작을 흉내내는 프로그램입니다.

0 Comments
댓글쓰기 폼
Prev 1 2 3 4 5 6 7 8 Next