에뮬레이터
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.
1. 개요
에뮬레이터는 다른 프로그램이나 장치를 모방하는 컴퓨터 프로그램 또는 전자기기의 능력을 의미한다. 하드웨어 에뮬레이터는 하드웨어 장치를 모방하며, CPU, 메모리, 입출력 장치 등의 모듈로 구성된다. 에뮬레이션은 원래 IBM에서 마이크로코드와 하드웨어를 활용하여 이전 컴퓨터용 프로그램을 실행하는 속도를 높이기 위해 개발되었으며, 현재는 소프트웨어적 모방을 포함하는 개념으로 확장되었다. 에뮬레이션은 디지털 아카이빙 및 뉴 미디어 아트 분야에서 디지털 정보 보존 및 접근성 확보를 위해 중요한 역할을 하며, 법적으로는 에뮬레이션 자체는 합법이나, 저작권 침해는 불법이다.
더 읽어볼만한 페이지
- 에뮬레이션 소프트웨어 - 시그윈
Cygwin은 윈도우에서 유닉스 시스템과 유사한 환경을 제공하는 소프트웨어로, POSIX API 구현 및 다양한 개발 도구를 통해 유닉스 기반 소프트웨어의 개발, 빌드, 실행을 지원한다. - 에뮬레이션 소프트웨어 - Bochs
Bochs는 x86 PC 아키텍처를 에뮬레이션하는 오픈 소스 소프트웨어로, 다양한 하드웨어를 에뮬레이션하며 여러 운영 체제와 플랫폼에서 실행 가능하고, 디버깅 기능이 뛰어나 운영 체제 개발에 활용된다. - 컴퓨터 하드웨어 - 하드웨어 가속
하드웨어 가속은 성능 향상을 위해 특정 연산을 전용 하드웨어로 처리하는 기술이며, 병렬 처리를 통해 연산 속도를 높이지만 유연성이 감소하고 비용이 증가하는 특징을 갖는다. - 컴퓨터 하드웨어 - 메인보드
메인보드는 컴퓨터의 핵심 부품들을 연결하여 시스템 작동을 가능하게 하는 인쇄 회로 기판으로, CPU, 메모리, 칩셋, 확장 슬롯 등을 포함하며 펌웨어를 통해 하드웨어를 초기화하고 운영체제 부팅을 관리한다.
에뮬레이터 | |
---|---|
기본 정보 | |
유형 | 하드웨어 또는 소프트웨어 |
사용 분야 | 컴퓨터 시스템 |
관련 항목 | 시뮬레이터 |
개요 | |
상세 설명 | |
목적 | |
사용 예시 | 구형 컴퓨터 게임을 최신 컴퓨터에서 실행 다른 운영 체제 환경에서 특정 소프트웨어 사용 임베디드 시스템 개발 및 테스트 |
작동 방식 | |
기술적 측면 | |
하드웨어 에뮬레이션 | 예: 비디오 게임 콘솔 에뮬레이터는 콘솔의 CPU, GPU, 메모리 등을 소프트웨어적으로 모방. |
소프트웨어 에뮬레이션 | 예: DOSBox는 MS-DOS 환경을 에뮬레이션하여 구형 DOS 프로그램을 실행. |
같이 보기 | |
관련 주제 | 가상 머신 CPU 에뮬레이션 게임 에뮬레이터 |
주의사항 | |
저작권 문제 |
2. 컴퓨터 과학에서의 에뮬레이터
에뮬레이터는 다른 프로그램이나 장치를 모방하는 컴퓨터 프로그램 또는 전자기기의 능력이다. 예를 들어, 많은 프린터들은 HP 레이저젯 프린터를 따라하려고 하는데, 이는 꽤나 많은 소프트웨어가 HP 프린터에 맞춰 만들어져 있기 때문이다. 이러한 방식으로 프린터는 실제 HP 프린터에 맞춰진 소프트웨어에서 돌아갈 수 있다. 에뮬레이션은 소프트웨어적으로 만든 장치가 정말로 다른 장치라고 믿도록 "속이는" 것이다.[28]
하드웨어 에뮬레이터는 하드웨어 장치의 형태를 따온 에뮬레이터다. 프린터 롬(ROM) 속의 프린터 에뮬레이터와 FPGA 기반의 하드웨어 에뮬레이터가 그 예다.
도스박스는 도스 명령 줄 인터페이스를 가상으로 구현한다. 모든 에뮬레이터가 반드시 롬(ROM) 파일이 필요한 것은 아니다. 옛날 컴퓨터와 도스를 가상으로 구현하는 프로그램, 소리 출력을 가상으로 구현하는 프로그램뿐 아니라, PearPC나 Virtual PC, Virtual Box와 같이 컴퓨터 자체(CPU 제외)를 가상으로 구현해내는 프로그램도 에뮬레이터의 일종이며, 고전게임을 즐길 수 없는 컴퓨터에서 가상으로 구현해 내는 ZSNES, MAME, MESS과 같은 프로그램도 (콘솔) 에뮬레이터이다.
대부분의 에뮬레이터는 하드웨어 아키텍처만 에뮬레이트하며, 원하는 소프트웨어에 운영 체제 펌웨어나 소프트웨어가 필요한 경우, 그것 또한 제공되어야 한다(그리고 자체적으로 에뮬레이션될 수 있다). OS와 소프트웨어는 모두 네이티브 하드웨어에서 실행되는 것이 아니라 에뮬레이터에 의해 해석된다. 에뮬레이션된 바이너리 기계어의 인터프리터 외에도, 입력 또는 출력 장치와 같은 다른 하드웨어도 가상 형태로 제공되어야 한다. 예를 들어, 특정 메모리 위치에 쓰면 화면에 표시되는 내용에 영향을 미치는 경우, 이를 에뮬레이션해야 한다. 에뮬레이션은 극단적으로 가면 원자 수준까지 내려가 가상 전원 공급원으로부터 실제 회로의 시뮬레이션을 기반으로 출력을 생성할 수 있지만, 이는 매우 이례적인 해결책일 것이다. 에뮬레이터는 일반적으로 문서화된 하드웨어 사양 및 디지털 논리의 시뮬레이션에서 멈춘다.
반대로, 플레이스테이션 4용 에뮬레이터와 같이 일부 다른 플랫폼은 직접적인 하드웨어 어드레싱을 거의 사용하지 않았다.[2] 이러한 경우, 간단한 호환성 계층만으로 충분할 수 있다. 이는 외부 시스템에 대한 시스템 호출을 호스트 시스템에 대한 시스템 호출로 변환하는 것이다. 예를 들어, *BSD*에서 FreeBSD 및 NetBSD에서 독점 소스 리눅스 네이티브 소프트웨어를 실행하는 데 사용되는 리눅스 호환성 계층이 있다.[3]
2. 1. 구조
에뮬레이터는 일반적으로 에뮬레이트되는 컴퓨터의 하위 시스템에 해당하는 모듈들로 구성된다. 대부분의 경우, 에뮬레이터는 다음과 같은 모듈로 구성된다.- CPU 에뮬레이터 또는 CPU 시뮬레이터. 에뮬레이트되는 대상이 호스트와 동일한 CPU 아키텍처를 가지고 있지 않은 경우, 가상 머신 레이어를 사용할 수 있다.
- 메모리 하위 시스템 모듈
- 다양한 입출력(I/O) 장치 에뮬레이터
버스는 성능 또는 단순성 문제로 인해 에뮬레이트되지 않는 경우가 많으며, 가상 주변 장치는 CPU 또는 메모리 하위 시스템과 직접 통신한다.[2]
메모리 서브시스템 에뮬레이션은 에뮬레이션된 워드 크기와 같은 크기의 요소 배열로 단순화될 수 있지만, 컴퓨터의 논리 메모리의 어떤 위치라도 물리 메모리와 일치하지 않으면 이 모델은 매우 빠르게 실패한다. 에뮬레이션된 하드웨어가 고급 메모리 관리(이 경우, MMU 로직은 메모리 에뮬레이터에 포함되거나, 자체 모듈로 만들어지거나, 때로는 CPU 시뮬레이터에 통합될 수 있음)를 허용할 때 이 문제는 명백하다. 에뮬레이션된 컴퓨터가 MMU를 탑재하지 않더라도 일반적으로 논리 메모리와 물리 메모리 간의 등가성을 깨는 다른 요인이 있다. 많은(대부분은 아니더라도) 아키텍처는 메모리 맵 I/O를 제공하고, 그렇지 않은 경우에도 논리 메모리 블록이 ROM에 매핑되는 경우가 많으며, 이는 ROM의 읽기 전용 특성을 에뮬레이션하려면 메모리 배열 모듈을 폐기해야 함을 의미한다. 뱅크 스위칭 또는 세분화와 같은 기능도 메모리 에뮬레이션을 복잡하게 만들 수 있다. 결과적으로, 대부분의 에뮬레이터는 논리 메모리에서 읽고 쓰는 두 개 이상의 절차를 구현하며, 모든 액세스를 올바른 객체의 올바른 위치에 매핑하는 것은 이러한 절차의 의무이다.[3]
CPU 시뮬레이터는 종종 에뮬레이터의 가장 복잡한 부분이다. 많은 에뮬레이터는 특정 기기의 우수하고 효율적인 에뮬레이션에 집중하기 위해 "미리 패키지된" CPU 시뮬레이터를 사용하여 작성된다. 가장 단순한 형태의 CPU 시뮬레이터는 인터프리터인데, 이는 에뮬레이션된 프로그램 코드의 실행 흐름을 따라가며, 만나는 모든 기계어 명령어에 대해 원래 명령어와 의미적으로 동일한 작업을 호스트 프로세서에서 실행하는 컴퓨터 프로그램이다.
2. 2. 종류
- 도스박스는 도스 명령 줄 인터페이스를 가상으로 구현한다.
- 가상 핸드폰(핸드폰 에뮬레이터)은 컴퓨터에서 소프트웨어적으로 실제 핸드폰처럼 기능하고 작동한다.
- 가상 프린터(프린터 에뮬레이터)는 컴퓨터에서 소프트웨어적으로 프린터로 인식된다.
- 가상 스캐너(스캐너 에뮬레이터)는 컴퓨터에 소프트웨어적으로 설치되어 이미지 스캐너 프로그램과 호환되거나 테스트 등에 이용된다.[28]
- 하드웨어 에뮬레이터: 다른 하드웨어(일반적으로 설계 중인 시스템)를 사용하여 하나 이상의 하드웨어 부품의 동작을 모방하는 프로세스로, 일반적으로 특수 목적 에뮬레이션 시스템을 사용한다.
- 인서킷 에뮬레이터: 하드웨어 장치를 사용하여 임베디드 시스템 소프트웨어를 디버깅한다.
- 부동 소수점 에뮬레이터: 일부 부동 소수점 하드웨어는 덧셈, 뺄셈, 곱셈과 같은 가장 간단한 연산만 지원한다. 부동 소수점 하드웨어가 없는 시스템에서 CPU는 정수 연산 논리 장치에서 실행되는 일련의 간단한 고정 소수점 연산을 사용하여 이를 에뮬레이트한다.
- 명령어 집합 시뮬레이터 고급 프로그래밍 언어: 명령어 "읽기" 및 프로세서의 레지스터를 나타내는 내부 변수를 유지하여 메인프레임 또는 마이크로프로세서의 동작을 모방한다.
- 네트워크 에뮬레이션: 가상 네트워크를 통해 실제 애플리케이션의 성능을 테스트하는 기술이다. 이는 트래픽, 네트워크 모델, 채널 및 프로토콜의 가상 모델이 적용되는 네트워크 시뮬레이션과 다르다.
- 서버 에뮬레이터: 멀티플레이어 비디오 게임은 종종 온라인 게임 서버에 의존하며, 이는 사내 설치가 가능할 수도 있고 그렇지 않을 수도 있다. 서버 에뮬레이터는 내부 작동이 다를 수 있지만 공식 온라인 서버의 동작을 모방하는 비공식 사내 서버이다.
- 시뮬레이션: 시뮬레이터를 통해 에뮬레이션을 제어하는 프로세스
3. 에뮬레이터와 시뮬레이션
"에뮬레이터"라는 단어는 1963년 IBM[17]에서 NPL (IBM System/360) 제품 라인을 개발하면서 "새로운 소프트웨어, 마이크로코드, 하드웨어의 조합"[18]을 사용하며 만들어졌다. 그들은 표준 명령어만 사용하는 소프트웨어 시뮬레이션 대신, 이전 IBM 컴퓨터용으로 작성된 프로그램을 실행하기 위해 마이크로코드와 하드웨어에 구현된 추가 명령어를 사용한 시뮬레이션이 속도를 크게 높인다는 것을 발견했다. 이전에는 IBM이 650에 대한 705용 시뮬레이터를 제공하기도 했다.[19]
1963년, 마이크로코드가 시뮬레이션 속도를 높이는 데 처음 사용되었을 때, IBM 엔지니어들은 이 개념을 설명하기 위해 "에뮬레이터"라는 용어를 만들었다. 2000년대에는 소프트웨어 맥락에서 "에뮬레이트"라는 단어를 사용하는 것이 일반화되었다. 그러나 1980년 이전에는 "에뮬레이션"은 하드웨어나 마이크로코드 지원을 통한 에뮬레이션만을 의미했고, "시뮬레이션"은 순수 소프트웨어 에뮬레이션을 의미했다.[23] 예를 들어, 다른 아키텍처를 위해 설계된 프로그램을 실행하기 위해 특별히 제작된 컴퓨터는 에뮬레이터이다. 반대로, 시뮬레이터는 PC에서 실행되는 프로그램일 수 있으며, 이를 통해 오래된 아타리 게임을 시뮬레이션할 수 있다.
오늘날 "에뮬레이션"이라는 용어는 종종 바이너리 코드를 실행하는 기계의 완전한 모방을 의미하고, "시뮬레이션"은 컴퓨터 시뮬레이션처럼 추상 모델을 시뮬레이션하는 데 사용된다. 네트워크 시뮬레이션과 같이 컴퓨터 시스템의 추상 모델을 시뮬레이션하는 여러 프로젝트가 있는데, 이는 실제적, 의미적으로 네트워크 에뮬레이션과 다르다.[24]
에뮬레이션은 모방 대상 시스템에서 예측 불가능한 현상이 지배적인 경우에 사용된다. 또한, 매우 높은 안전성이 요구되는 경우에도 자주 사용된다. 예측 가능한 현상이 지배적이거나, 완전히 모방하는 것이 어려운 경우에는 시뮬레이션 기술을 사용한다.
4. 에뮬레이터의 법적 문제
5세대 콘솔인 닌텐도 64, 플레이스테이션과 6세대 휴대용 게임기인 게임보이 어드밴스는 제작 기간 동안 에뮬레이션이 크게 발전했다. 이로 인해 콘솔 제조업체는 비공식적인 에뮬레이션을 중단하려 했지만, ''세가 대 어콜레이드'', ''소니 컴퓨터 엔터테인먼트 주식회사 대 커넥틱스 코퍼레이션'', ''소니 컴퓨터 엔터테인먼트 아메리카 대 블림''과 같은 판례[6]는 정반대의 결과를 낳았다. 모든 법적 선례에 따르면, 에뮬레이션은 미국 내에서 합법이다. 그러나, 베른 협약에 따른 국가별 저작권 및 국제 저작권법에 따라 저작권이 있는 코드의 무단 배포는 여전히 불법이다.[7] 미국 법에 따르면, 사용자가 합법적으로 구매한 기기의 복사본을 소유하는 한, ''루이스 갈루브 토이즈 주식회사 대 닌텐도 오브 아메리카 주식회사'' 판례에 따라 원본 기기의 BIOS의 코어 덤프 사본을 얻는 것은 공정 사용으로 간주되어 합법이다. 그러나 이를 완화하기 위해, 게임보이 어드밴스와 같은 플랫폼의 여러 에뮬레이터는 약간의 에뮬레이션 정확성 손실을 감수하고, 고급 에뮬레이션을 사용하여 BIOS 서브루틴을 시뮬레이션하여 BIOS 파일 없이 실행할 수 있다.
5. 디지털 아카이빙에서의 에뮬레이션
에뮬레이션은 기록학에서 디지털 아카이빙의 보존 수단 중 하나이다. 기본적인 작동 원리는 디지털 원본에 적용된 기술적인 조건들에 변경이 있어도 인코딩되어 있는 콘텐츠를 재생할 수 있는 환경을 프로그램으로 만들어내어 디지털 정보의 접근성을 보장하는 기술이다.[29]
에뮬레이션은 디지털 보존을 추구하고 노후화에 대처하는 한 가지 전략이다. 에뮬레이션은 원래의 컴퓨터 환경을 재현하는 데 초점을 맞추며, 이는 시간이 오래 걸리고 달성하기 어려울 수 있지만, 디지털 객체, 운영 체제 또는 게임 플랫폼의 진정성에 더 가깝게 연결을 유지할 수 있다는 점에서 가치가 있다.[8] 에뮬레이션은 디지털 객체의 원래 하드웨어 및 소프트웨어 환경을 다루고, 이를 현재의 기계에서 재현한다.[9] 에뮬레이터를 사용하면 사용자는 현재의 플랫폼에서 모든 종류의 응용 프로그램 또는 운영 체제에 접근할 수 있으며, 소프트웨어는 원래 환경에서 작동했던 방식 그대로 실행된다.[10] 에뮬레이션을 디지털 보존 전략으로 초기에 옹호했던 제프리 로텐버그(Jeffery Rothenberg)는 "이상적인 접근 방식은 모든 유형의 문서 및 미디어에 대해 한 번에 설계하고 균일하게, 자동으로, 조직적으로 동기화(예: 모든 새로 고침 주기)하여 적용할 수 있는 단일의 확장 가능한 장기적인 솔루션을 제공할 것이다"라고 말한다.[11] 그는 또한 이것이 구식 시스템뿐만 아니라 미래의 알려지지 않은 시스템으로도 상향 이동해야 한다고 언급했다.[12] 실제로, 특정 응용 프로그램이 새 버전으로 출시될 때, 이전 버전의 해당 응용 프로그램에서 생성된 모든 디지털 객체에 대한 호환성 문제 및 마이그레이션을 해결하는 대신, 해당 응용 프로그램에 대한 에뮬레이터를 생성하여 모든 디지털 객체에 접근할 수 있도록 할 수 있다.
6. 뉴 미디어 아트에서의 에뮬레이션
뉴 미디어 아트는 디지털 형식을 주로 사용하기 때문에 보존 전략으로 에뮬레이션에 크게 의존한다.[5] 코리 아르칸젤과 같은 예술가들은 구식 기술을 작품에 되살리는 데 특화되어 있으며, 디지털 문화 보존을 위한 분산적이고 탈제도화된 프로세스의 중요성을 인식하고 있다. 많은 경우, 뉴 미디어 아트에서의 에뮬레이션의 목표는 디지털 매체를 무기한 보존하고 오류 없이 재생산하여 노후화되고 쓸모없게 되는 하드웨어에 의존하지 않도록 하는 것이다. 역설적인 점은 에뮬레이션과 에뮬레이터가 미래의 컴퓨터에서 작동하도록 만들어져야 한다는 것이다.
참조
[1]
뉴스
MS-DOS Emulation For The 64
https://archive.org/[...]
1988-04
[2]
웹사이트
PlayStation 4 Emulators
https://guidestorm.c[...]
2019-08-04
[3]
웹사이트
Linux emulation removed from OpenBSD at version 6.0
https://www.openbsd.[...]
[4]
서적
Electronic design automation : synthesis, verification, and test
https://www.worldcat[...]
Morgan Kaufmann/Elsevier
2009
[5]
웹사이트
The Emulation Imitation
https://blog.malware[...]
2014-10-17
[6]
웹사이트
Sony Computer Entertainment America v. Bleem, 214 F. 3d 1022
https://scholar.goog[...]
Court of Appeals
2000-02-14
[7]
문서
"see [[Midway Manufacturing Co. v. Artic International, Inc.]]'', 574 F.Supp. 999, aff'd, 704 F.2d 1009 (9th Cir 1982) (holding the computer ROM of Pac Man to be a sufficient fixation for purposes of copyright law even though the game changes each time played.) and Article 2 of the Berne Convention"
[8]
웹사이트
What is emulation?
http://www.kb.nl/en/[...]
2007-12-11
[9]
간행물
"Emulation for Digital Preservation in Practice: The Results."
2007
[10]
간행물
" Pushing the Boundaries of Traditional Heritage Policy: maintaining long-term access to multimedia content."
2007
[11]
웹사이트
"Criteria for an Ideal Solution." Avoiding Technological Quicksand: Finding a Viable Technical Foundation for Digital Preservation.
http://www.clir.org/[...]
2008-03-08
[12]
문서
Rothenberg, Jeffrey. "The Emulation Solution." Avoiding Technological Quicksand: Finding a Viable Technical Foundation for Digital Preservation. Washington, DC: Council on Library and Information Resources, 1998. Council on Library and Information Resources. 2008. 28 Mar. 2008 http://www.clir.org/pubs/reports/rothenberg/contents.html
[13]
웹사이트
Echoes of Art: Emulation as preservation strategy
http://www.variablem[...]
2007-12-11
[14]
웹사이트
Full System Simulation: Software Development's Missing Link
http://www.computerw[...]
[15]
웹사이트
Debugging and Full System Simulation
http://www.ddj.com/1[...]
[16]
웹사이트
Full System Simulation of Embedded Systems
http://www.irisa.fr/[...]
2012-04-22
[17]
서적
Building IBM: Shaping an Industry and Its Technology
MIT
[18]
서적
IBM's 360 and Early 370 Systems
MIT
[19]
문서
Simulation of the IBM 650 on the IBM 705
http://bitsavers.inf[...]
[20]
웹사이트
IBM Archives: 7090 Data Processing System (continued)
http://www-03.ibm.co[...]
2003-01-23
[21]
서적
Reference Manual IBM 7090 Data Processing System
http://bitsavers.org[...]
1962-03
[22]
서적
IBM 1410 Principles of Operation
http://bitsavers.org[...]
1962-03
[23]
간행물
Emulation of large systems
[24]
웹사이트
Network simulation or emulation?
https://www.networkw[...]
2017-09-22
[25]
서적
Electronic Commerce A Managerial Perspective
http://wps.prenhall.[...]
Prentice-Hall
2021-12-13
[26]
웹사이트
Virtualization in education
http://www-07.ibm.co[...]
IBM
2007-10
[27]
웹사이트
The Origin of the VM/370 Time-sharing System
http://pages.cs.wisc[...]
IBM
[28]
웹인용
보관된 사본
https://developer.dy[...]
2018-05-27
[29]
웹인용
한국도서관협회 문헌정보학용어사전 - 에뮬레이션
https://www.kla.kr/j[...]
본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.
문의하기 : help@durumis.com