emulator와 simulator의 차이가 무엇인가요?

dionysos의 이미지

simulator와 emulator의 차이가 무엇인가요.

학교에서 배우기로는 simulator는 하드웨어가 포함되어 있는것을 뜻하고 emulator는 소프트웨어로만 되어 있는 것이라고 배웠습니다.

공부를 하다보니 그 개념과는 다른 예가 너무 많네요.

익명사용자의 이미지

에뮬레이터는 에뮬레이터 구현 자체가 목적일 듯하고
시뮬레이터는 시뮬레이터에서 얻은 데이터, 과정을 실제 작업, 연구 과정에
투입되는 경우로 생각해볼 수도 있지 않을까요?
(뭔 소리인지)

cronex의 이미지

게임 중에 시뮬레이션 게임들이 있죠.
그 시뮬레이션 게임들은 실제 상황을 시뮬레이션 해서 만드는 것입니다.
즉, 실제와 완전히 똑같을 필요까지는 없고 시뮬레이션하는 대상이 지니는 주요 특성만을
재현해주면 되는 것입니다.
비행 시뮬레이션 이라면 하늘을 나는 것처럼 3D표현으로 화면에 보여주고
하늘을 나는 것처럼 조작할 수 있게 해주면 되는 것이죠.
물론 실험용 시뮬레이션이라면 바람이나 기후에 의한 영향이라던지
기체의 상태에 의한 영향 같이 더 자세한 특성들을 재현해줘야 하는 것이지만
그렇다고 해서 모든 것(화면 모습의 텍스쳐를 실제 현실처럼 자세하게 해줘야 한다거나 하는...)을
재현할 필요까지는 없습니다.
심지어는 어떠한 시뮬레이션의 경우는 단순히 그 상황에 대한 관측 수치만 제공하는 경우도 있습니다.

그에 반해 에뮬레이터는 재현고자 하는 대상을 완벽하게 재현하는 것이 목표입니다.
어떠한 PDA를 에뮬레이션 하려고 한다면 PDA에 사용된 cpu가 처리할 수 있는 명령어들을
그대로 처리할 수 있는 가상의 cpu를 구현해야 하고 PDA에 사용된 디스플레이와 같은
해상도에서 PDA와 동일한 성능으로 PDA에서 돌아가는 프로그램을 사용할 수 있어야 합니다.
간단히 말하자면 에뮬레이터는 어떠한 하드웨어를 소프트웨어 적으로 재구현하는 것이죠.
(유사하게 하드웨어 -> 하드웨어는 짝퉁(카피) (중국의 짝퉁 자동차나 짝퉁 mp3같은... )
소프트웨어 -> 소프트웨어는 클론( 네이트온을 대신하는 Jateon 같은... )
소프트웨어 -> 하드웨어는 생각이 안나는군요. (이러는 경우가 있기는 하던가요;;)
이라고 할 수 있겠습니다. )

그리고 그 설명에서는

"시뮬레이터는 하드웨어도 포함할 수도 있지만
에뮬레이터는 소프트웨어적으로만 구현하는 것을 의미한다."

라고 이해하시면 될거 같습니다.
저 차이는 두가지를 완벽하게 구분하는데 사용하기는 힘든 특성이죠.

즉, 시뮬레이션은 소프트웨어적, 하드웨어적, 혹은 소프트웨어+하드웨어 등을 동시에 사용하여
어떠한 상황에 대한 자세한 데이터를 수집하거나 보여주는 것이 목적이고,

에뮬레이션은 어떠한 하드웨어를 소프트웨어적으로 구현하여 대상 하드웨어를 사용하는 것과
동일하게 사용하는 것이 목적이라고 할 수 있겠습니다.

------------------------------------------------------------
이 멍청이~! 나한테 이길 수 있다고 생각했었냐~?
광란의 귀공자 데코스 와이즈멜 님이라구~!

------------------------------------------------------------
이 멍청이~! 나한테 이길 수 있다고 생각했었냐~?
광란의 귀공자 데코스 와이즈멜 님이라구~!

익명 사용자의 이미지

에뮬레이션은 진실값으로 대체 하는 거고, 시뮬레이션은 모델링 한 적절한 값으로 대체 하는 겁니다.
어떤 시스템을 모델링 한다는 것은 그 시스템과 100% 일치되지는 않지만 주요 특징을 살리는 결과물을
만들어 내는 것입니다.따라서 "xxx 를 시뮬레이션 해보자" 하는 것은 xxx 의 주요 특징을 모델링 하고 (주로 수식으로)
거기에 입력을 가한 후 출력을 보는 것입니다.
에뮬레이션은 100% 동일해야 합니다. 현실에서 어려운 경우가 많죠.

과거에는 프로그래밍 할 때 에뮬레이터나 시뮬레이터를 사용했습니다.
가령 8086 이나 Z80 을 개발한다면 해당 에뮬레이터를 구입해서 (노트북 만하게 생겼습니다.)
개발중인 보드의 cpu 대신에 에뮬레이터 소켓을 꼽습니다.
그러면 이제 부터 에뮬레이터가 해당 cpu 를 대신 합니다.
에뮬레이터를 작업 pc 에 연결해서 작업합니다.
cpu 내부 실행되는 상황파악은 물론, 각 핀들을 물리적으로 컨트롤합니다. cpu 와 완전 동일한 거죠.

에뮬레이터가 비싸서 어려움이 있다면 시뮬레이터를 구입합니다. 이것은 소프트웨어의 일종입니다.
작업 pc 에서 소프트웨어를 구동하고 target cpu 를 프로그램적으로 하나 만들어 내서
내가 작성한 코드를 실행해 주죠. 물리적인(전기적인) 동작은 할 수 없고,
프로그램의 논리관계만 검증합니다.

지금 주류가 된 ARM mcu 도 초기에는(2000년대 초반 ???) arm 에서 판매하는 500만원짜리 에뮬레이터를
가지고 작업했습니다. 지금은 그거 없어도 무관한 것 같은데요....ㅎㅎㅎ.

추가로의 이미지

일단 처음 답변은 결과적으로 잘못되었다고 얘기할 수 있네요. 제가 알고있는것과 확실히 알기 위해 검색해본 결과 아래 댓글이 맞다고 할 수 있습니다. 시뮬레이션은 한마디로 가상으로 하는겁니다. 에뮬레이션은 거의 실제를 사용합니다. 테스트지만 실제를 기반으로 합니다. 고로 처음 답글처럼 시뮬레이션=하드웨어포함될 수 있다와 에뮬레이션=순수소프트웨어는 잘못된겁니다...
주로 시뮬레이션, 에뮬레이션이란 표현은 하드웨어(실물)을 대상으로 테스트를 어찌하느냐를 나타내기 때문입니다.

vagabond20의 이미지

에뮬레이터라는 단어를 처음 접한것은 (1980년대 말 90년대 초) 터미널 에뮬레이터 개발하는 외주 개발자로부터였습니다. 막 직장생활 시작하였을 아무것도 모를때, 유니시스 (유니벡) 시스템 오리지날 터미널은 그야말로 그냥 터미널로, 크기만 딥다 컸지 유니시스 시스템에만 물려서 쓰는 타자기 달린 '테레비' 였지요.

이걸 당시에 막 도입되기 시작한 IBM PC 에서 소프트웨어와 접속카드를 개발, 유니시스 터미널 처럼 쓰게 한것을 유니시스 터미널 에뮬레이터 라고 불렀고, 그 작동 자체를 유니시스 터미널 에뮬레이션이라고 하더군요.

돌이켜 보니 그 개발자분이 정확하게 알려준것 같습니다.
즉, 에뮬레이터란 원래의 기기나 기능을 다른 기기상에서 소프트웨어를 개발하여 똑같은 역할을 하게 한것을 말합니다. 그 기능 자체를 에뮬레이션이라고 하고요.

미국에 와서도 그 개념과 용어는 같은 의미로 쓰이더군요.
스트라투스 컴퓨터의 에뮬레이터는 전에 있던 직장에서는 벤다이크 제품을 Windows PC 에 설치해서 썼고, 지금 이곳에서는 엑스트라 엑스트림 에뮬레이션 소프트웨어를 깔아서 역시 Windows PC 에서 씁니다.

*
자 그럼 시뮬레이터는 무엇인가?
(이바닥에서) 이것은 보통, 시스템의 end-to-end 또는 접속테스트때 주로 나오는 개념일겁니다.
예를 들어서 비자 카드 회사의 시스템을 새 버젼으로 개발한다고 칩시다.
테스트를 하려면 거기에 물리는 전방의 카드 가맹점과 카드 사용자, 후방에 물리는 은행, 결제 회사 들이 있어야 합니다. 그러나 많은 경우, 그렇게 다 구비 해 놓고 처음부터 개발 하지 못합니다. 그래서, 카드 가맹점과 카드 사용자를 대신 할 트랜잭션 발생 장치를 스스로 만듭니다. 그럼 그게 카드 가맹점/사용자 시뮬레이터가 되고 그 행위를 시뮬레이션이라고 할 수 있습니다. 후방 역시 마찬가지, '가짜로' 은행이나 결제 회사를 만들어서, 지금 막 개발하고 테스트 하기 시작한 막되먹은 소프트웨어가 '싸 질러 놓는' 테스트 데이터를 받아서 에러든 성공처리든 하게 한게 그 시뮬레이터라 할 수 있을겁니다.

또는 이 전체 흐름을 시뮬레이션이라고 부르기도 합니다.

*
뭐 대충, 제가 아는 선에서 답변이고요, 더 정확하게 '항문적으로' 답을 주실분 또 계실것이라고 생각합니다.

여의도자바

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.