Что такое эмуляция и эмулятор?
18 Сентябрь 2007
Эмуля́ция (англ. software emulation) — имитация работы одной программы средствами другой.
Эмуляция позволяет выполнять компьютерную программу на платформе (компьютерной архитектуре и/или операционной системе), отличной от той, для которой она была написана в оригинале. Эмуляцией также называют сам процесс этого выполнения. В отличие от симуляции, которая лишь воспроизводит поведение программы, при эмуляции ставится цель точного моделирования состояния имитируемой системы, для выполнения оригинального машинного кода.

Одно из популярных применений эмуляции — выполнение на персональном компьютере игр, написанных для игровых автоматов или игровых приставок.
Теоретически, согласно тезису Чёрча—Тьюринга, любая операционная среда может быть эмулирована в любой другой среде. На практике, однако, встречается ряд трудностей; в частности, точное поведение эмулируемой системы часто не документированно и должно быть исследовано и определено с помощью реверс инжиниринга (хакерскими методами проще говоря
.
Достаточно полная эмуляция некоторой аппаратной платформы требует предельной точности, до уровня отдельных тактовых циклов, недокументированных особенностей и даже ошибок реализации. Это особенно важно для таких моделей классических домашних машин, как Amiga, Commodore 64, ZX Spectrum 48/128, программное обеспечение которых сильно зависит от программистских решений, основанных на недокументированных возможностях, изобретённых программистами игр и энтузиастами демосцены.

В противоположность этому, на некоторых других платформах довольно мало использовался прямой доступ к оборудованию. В этом случае оказывается достаточным обеспечить некоторый уровень совместимости, обеспечивающий трансляцию системных вызовов эмулируемой системы в вызовы работающей системы. Свежий пример это Nintendo 64.

Обычно, эмулятор состоит из нескольких модулей, отвечающих за различные подсистемы эмулируемого компьютера. Чаще всего, эмулятор состоит из:
- эмулятора или симулятора центрального процессора
- модуля подсистемы памяти, эмулирующего ОЗУ и ПЗУ
- модуля или модулей эмуляции различных устройств ввода/вывода
Эмуляция, то есть процесс имитации работы какой-либо системы – очень ресурсоёмкая задача, и может требовать от Вашего компьютера намного большей производительности (скорости процессора, объёма памяти), чем производительность эмулируемой системы. Чем сложнее система и выше точность эмуляции – тем большая производительность для неё требуется. От точности эмуляции зависит совместимость с запускаемыми в эмуляторе программами (играми) – например, если эмулятор не учитывает какой-то небольшой нюанс устройства системы, используемый в некотором количестве игр – эти игры не будут запускаться, или будут работать неправильно, но будут работать остальные игры. Также от точности эмуляции зависит качество и достоверность получаемого изображения и звука.
Эмуляторы обычно создаются любителями-энтузиастами. Создание эмулятора – очень сложная задача, требующая большого опыта программирования, знаний, точной информации об устройстве эмулируемой системы. Поэтому эмуляторы одной и той же системы могут различаться как в достоверности эмуляции, так и в требованиях к компьютеру. В настоящее время существует множество достаточно точных эмуляторов большинства существовавших приставок и компьютеров. Исключение составляют игровые системы последних поколений и очень редкие либо очень сложные старые системы.
Эмулироваться могут так же и старые операционные системы и железо, например эмулятор DosBox – эмулирует операционную систему MS-DOS с железом от 286 до Pentium MMX, а так же звуковые карты AdLib и SoundBlaster Pro/16.

Trackback this post | Subscribe to the comments via RSS Feed