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


97

컴퓨터 과학에서 시뮬레이션에뮬레이션 을 자주 봅니다 . 이 두 용어는 동의어처럼 보입니다. 시뮬레이션에뮬레이션 간에 차이가 있습니까?

답변:


108

예, 개념이 다릅니다.


시뮬레이션

A simulation는 다른 것과 비슷하게 동작 하지만 완전히 다른 방식으로 구현 되는 시스템입니다 . 시스템의 기본 동작을 제공하지만 시뮬레이트되는 시스템의 모든 규칙을 반드시 준수 할 필요는 없습니다. 어떻게 작동하는지에 대한 아이디어를 제공합니다.

비행 시뮬레이터를 예로 들어보십시오. 비행기를 타는 것처럼 보이고 느껴지지만 비행기를 타는 현실과 완전히 분리되어 있으며 규칙에 따라 규칙을 구부리거나 깨뜨릴 수 있습니다. 예를 들어, 에어 버스 A380을 손상시키지 않고 런던과 시드니 사이를 거꾸로 비행하십시오.


에뮬레이션

A emulation는 다른 것과 똑같이 동작 하고 에뮬레이션되는 시스템의 모든 규칙을 준수하는 시스템입니다. 에뮬레이트 된 시스템의 입력 및 출력과 바이너리 호환이 가능하지만 원래 에뮬레이션 된 시스템의 환경과 다른 환경에서 작동하는 다른 시스템을 효과적으로 복제하는 것입니다. 규칙이 수정되어 변경할 수 없거나 시스템이 실패합니다.

MAME의 시스템은 바로이 전제 중심으로 구축되어있다. 오랫동안 잊혀 졌거나 거의 완전히 하드웨어로 구현되었거나 하드웨어 시스템의 펌웨어로 구현 된 모든 오래된 아케이드 시스템은 가능한 최고 점수에 도달했을 때 발생할 수있는 원래 버그와 충돌로 바로 모방 될 수 있습니다.


18
"...처럼 정확하게 행동"은 필요하지 않을 수 있습니다. 중요한 것은 그것을 사용하는 것과 관련하여 "같은 정확한 외부 행동을 재현하는 것"입니다.
Emilio Garavaglia

시뮬레이션 / 에뮬레이션 대상에 따라 다릅니다. 예를 들어, PC 호환 컴퓨터를 에뮬레이트하는 것은 PC 호환 컴퓨터의 디지털 회로를 시뮬레이트하는 것보다 훨씬 덜 정확하고 덜 현실적 일 수 있습니다. 이 경우 시뮬레이터는 실제 PC와 정확히 동일하게 동작하지만 에뮬레이터는 그렇지 않습니다 (시뮬레이터가 훨씬 낮은 레벨에서 무언가를 시뮬레이션하기 때문에).
Brendan

16

시뮬레이션은 분명히 당신이 당신의 검색어와 관련된 기능을 유지하고, 관련이없는 사람을 떠나고 싶어 - 그 일의 일부 기능을 재현 등을 잎 뭔가 다른 구성된 모델입니다.

예를 들어, 이른 아침 통근자 교통 시뮬레이션은 통근자의 이름과 심지어 자신의 정체성 (실제 Commuter개체 집합이 아닌 카운터 변수 사용 )을 제외하지만 도착률을 무시할 수는 없습니다.


에뮬레이션 은 소프트웨어 자체를 변경하지 않고 플랫폼 B에서 플랫폼 A 용으로 작성된 소프트웨어 X를 실행하는 것입니다. 이를 위해서는 B에서 실행되는 A 모델을 구축해야하며 코드 실행과 관련된 A에 대한 모든 것을 모델링해야합니다. (이론적으로이 특정 소프트웨어가 사용하지 않을 것이라는 것을 알고있는 opcode에 대한 지원을 생략 할 수는 있지만 드문 경우입니다. 에뮬레이터를 수행하는 것은 어려운 작업이며 철저한 작업을 수행하고 kludge보다 재사용 할 수있는 것이 훨씬 더 가치가 있습니다. S에만 적용됩니다.)


7

둘 다 다른 일을하는 것을 의미합니다.

차이점은 "시뮬레이션" 은 (사용자와 관련하여) 의식적인 수준 에서 발생하며 일반적으로 현실 자체를 건드리지 않고 현실의 결과를 예측하도록 마무리됩니다.

"에뮬레이션"은 무의식 수준 에서 발생하며 기본 구성 요소를 사용자와 관련하여 이전 구성 요소로 사용하는 다른 구성 요소로 대체하려는 목적을 가지고 있습니다.

다시 말해, 시뮬레이션 은 "병렬 세계"에서 발생 하지만 에뮬레이션 은 "대체 된 세계"에서 발생합니다.


3
이것은 컴퓨터 과학과 관련하여 OP의 질문에 어떻게 대답합니까? 그들에 대해 의식적이거나 무의식적 인 것은 없습니다. 에뮬레이션과 마찬가지로 시뮬레이션도 실용적입니다. 그러나 각각의 목적은 개념적으로 매우 다릅니다.
S.Robins 2012

@ S.Robins : 의식 / 무의식! = 실제 / 비현실. 의식 = 당신이 명시 적으로 결정한 것, 무의식적 인 것 "에뮬레이트 된"시스템에서 실행되는 앱은 해당 에뮬레이션에 대해 알지 못합니다. "시뮬레이트 된"시스템에서 실행되는 앱은 반드시 동일한 동작을 가질 필요가 없기 때문에 알고 있어야합니다.
Emilio Garavaglia

1
어떤 앱이 어디에서 실행 중인지와 관련이 없으며 의식적이거나 무의식적 인 결정을 내리는 것과는 관련이 없습니다. 근본적인 차이점은 시스템이 일반적으로 모델링되는지 또는 완전히 복제되는지에 관한 것입니다.
S.Robins 2019

@ S.Robins : 나는 당신이 의미하는 개념에 동의하지만, 잡을 수없는 미묘한 것이 있습니다 : "에뮬레이터"는 일반적으로 응용 프로그램의 범위에서 무언가 대체하여 무언가를 실행하도록 고안되었습니다 . "시뮬레이터"는 일반적으로 실제 응용 프로그램 대신 자체적으로 실행되도록 고안되었습니다 . 그것들은 같은 추상화 수준에 있지 않습니다.
Emilio Garavaglia

6

기술적으로, 그들은 둘 다 똑같이합니다. 마치 실제처럼 행동하는 환경에서 무언가를하십시오.

그러나 개념적으로 중요한 차이점이 있습니다.

시뮬레이션은 어느 정도 현실 세계에서 분리하도록되어; 시뮬레이션의 출력은 시뮬레이션하는 것과 직접 연결되지 않습니다. 예를 들어 항공기 시뮬레이터는 실제로 비행하지 않으며 조종사는 실제 항공 교통 관제사와 실제로 통신하지 않습니다.

시뮬레이션은 일반적으로이 목표를 테스트 또는 안전한 환경에서 약간의 실제 과정을 예측을; 시뮬레이션이 실제 세계와의 연결이 끊어 졌기 때문에 실제로는 나쁜 일이 발생할 수 없습니다 (충돌 된 항공기 시뮬레이터는 실제 사람들을 죽이지 않습니다).


에뮬레이션는 대조적으로, 진짜의 장소 복용의 목표를 가지고 좀 더 정교한 프로그램 CPU를 사용하여 간단한 마이크로 컨트롤러를 에뮬레이트하는 경우, 예를 들어,이 CPU는 원래 마이크로 컨트롤러 대신에 사용할 수있다; 그것은 실제로 어떤 기계에 연결될 것이고, 실제로는 마이크로 컨트롤러처럼 기계를 제어 할 것입니다.

에뮬레이션목표 는 원래 모듈을 사용할 수없는 경우 (또는 유지 관리하기 만하면 너무 비싸게 된 경우) 하드웨어 또는 소프트웨어 구성 요소를 기능적으로 동등한 것으로 교체 하는 입니다 . 에뮬레이션은 하드웨어를보다 유연하게 사용한다는 목표를 달성 할 수 있습니다. 동일한 프로그래밍 가능 마이크로 컨트롤러가 여러 간단한 컨트롤러에 대해 두 배로 증가하여 필요에 따라 에뮬레이션 모드를 전환 할 수 있습니다.


3
"technically", 그들은 완전히 다릅니다. 설명하는 개념적 차이는이 차이의 기본입니다.
S.Robins 2012

@ S.Robins : '기술적으로'는 기술적 구현이 종종 유사하거나 동등하다는 것을 의미합니다. 차이점은 주로 사용 용도에 있습니다.
tdammers

유스 케이스와 관련이 없습니다. 두 가지 매우 분리 된 개념을 정의하는 것은 근본적인 목적 차이입니다. 에뮬레이션은 복잡한 기능 시스템을 원본과 구별 할 수 없도록 정확하게 대체하려고하지만 시뮬레이션은 시스템을 크게 단순화 한 것이며 모델을 통해 매우 일반적인 의미로 기능을 나타냅니다. 따라서 기술적 구현은 반드시 크게 다릅니다.
S.Robins 2019

@ S.Robins-동의하지 않습니다. 주어진 마이크로 프로세서를 시뮬레이트하거나 에뮬레이션하든 구현에 큰 차이가 없지만 그로 인해 수행하는 작업이 달라집니다.
tdammers 2013

1
@tdammers : 일반적으로 에뮬레이터의 기본 디자인 목표는 에뮬레이션되는 항목을 "실시간"으로 대체하는 것이며 시뮬레이터의 주요 디자인 목표는 불필요하게 실시간 분석을 허용하는 것입니다. 기본 프로세스와 상호 작용할 수 있습니다. 일부 시뮬레이터는 빠르며 일부 에뮬레이터는 기본 프로세스를 분석 및 / 또는 상호 작용하는 실질적인 기능을 제공 할 수 있지만 엔지니어링 우선 순위는 다릅니다.
supercat

1

어원이 엄격하게 정확하지는 않지만, "공감해야 할 것"과 공감의 차이에 대해 생각합니다. 시뮬레이션에는 문제의 시각적 표현이 포함될 수 있지만 그렇지 않을 수도 있습니다. 예를 들어, 무언가 또는 총 수익 또는 평균 속도로 얼마나 많은 사람들이 줄을 나타내는 숫자 열을 인쇄 할 수 있습니다. 현실과 일치하는 특성과 그렇지 않은 특성이 있습니다.

하나의 플랫폼에서 다른 플랫폼 인 것처럼 자주 사용되는 에뮬레이션이 훨씬 더 완벽합니다. 따라서 Windows Phone 개발자는 전화처럼 보이고 하나처럼 동작하는 에뮬레이터의 Windows 컴퓨터에서 자신의 전화 앱을 실행하거나 디버깅 할 수 있습니다. 에뮬레이터에서 기존 Commodore 64 게임을 실행할 수도 있습니다.

단어가 정확하지 않습니다. 대부분의 비행 시뮬레이터는 필자의 의견으로는 에뮬레이터와 비슷하지만 몰입 적이 지 않은 시대에 이름이 붙어 있습니다. 어떤 사람들은 크로스 플랫폼 사례를 위해 에뮬레이터라는 단어를 예약하고 다른 어떤 것도 거부합니다. 말할 때 똑같이하면 잘못 생각하지 않을 것입니다. 그러나 어떤 사람들은 두 단어 사이의 경계를 조금 다르게 설정하고 누군가가 "이것은 에뮬레이션"이라고 말할 때 허용합니다. 완벽한 시뮬레이션.


1
에뮬레이션과 시뮬레이션이 사실상 동일하다는 일반적인 오해가있는 것 같습니다. 에뮬레이션이라는 단어가 다른 사람의 행동을 반영한다는 의미 일 수 있기 때문일 수 있습니다 (예 : 아이가 아버지를 모방 함). 컴퓨터 과학과 관련하여 말하면 기술적으로 부정확합니다. 비행 시뮬레이터는 모든 입 / 출력이 특수 제작 프로그램 (시뮬레이터)을 통해 관리되기 때문에 비행 시뮬레이션은 에뮬레이션이 아닙니다. 시뮬레이터는 정확히 동일한 컴퓨터를 구현하지 않기 때문에 모델링 된 항공기의 동작을 정확하게 복제하지 않습니다. 항공기가하는 프로그램. 이했다면, 다음 은 에뮬레이터 될 것이다.
S.Robins

0

두 용어는 개념 상 매우 유사합니다. 흉내 내기.

시뮬레이션 또는 시뮬레이터는 소프트웨어를 사용하여 기본 핵심 기능 (특히 기본 방법론)과 관련하여 대상 모델과 매우 유사한 복제 시스템을 생성합니다.

반면 에뮬레이터는 대상 시스템과 비교할 때 외부 유사성에 더 중점을 둡니다. 기능이 어떻게 "모방"되었는지에 대한 최소한의 우려가 있습니다. 에뮬레이터는 일반적으로 원래 시스템과 완전히 다른 환경 (예 : 다른 운영 체제)에서 작업 할 때 사용됩니다.


1
두 가지 개념이 섞여 있다고 말하고 싶습니다. 정확한 구현에 신경 쓰지 않는 것은 시뮬레이션입니다. 에뮬레이션은 내부를 매우 중요하게 생각합니다. MAME
Andres F.
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.