Что такое эмуляция и эмулятор?

18 Сентябрь 2007

Эмуля́ция (англ. software emulation) — имитация работы одной программы средствами другой.

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

b78df3.png

Одно из популярных применений эмуляции — выполнение на персональном компьютере игр, написанных для игровых автоматов или игровых приставок.

Теоретически, согласно тезису Чёрча—Тьюринга, любая операционная среда может быть эмулирована в любой другой среде. На практике, однако, встречается ряд трудностей; в частности, точное поведение эмулируемой системы часто не документированно и должно быть исследовано и определено с помощью реверс инжиниринга (хакерскими методами проще говоря :) .

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

c7acaa.png

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

beb472.jpg

Обычно, эмулятор состоит из нескольких модулей, отвечающих за различные подсистемы эмулируемого компьютера. Чаще всего, эмулятор состоит из:

  • эмулятора или симулятора центрального процессора
  • модуля подсистемы памяти, эмулирующего ОЗУ и ПЗУ
  • модуля или модулей эмуляции различных устройств ввода/вывода

Эмуляция, то есть процесс имитации работы какой-либо системы – очень ресурсоёмкая задача, и может требовать от Вашего компьютера намного большей производительности (скорости процессора, объёма памяти), чем производительность эмулируемой системы. Чем сложнее система и выше точность эмуляции – тем большая производительность для неё требуется. От точности эмуляции зависит совместимость с запускаемыми в эмуляторе программами (играми) – например, если эмулятор не учитывает какой-то небольшой нюанс устройства системы, используемый в некотором количестве игр – эти игры не будут запускаться, или будут работать неправильно, но будут работать остальные игры. Также от точности эмуляции зависит качество и достоверность получаемого изображения и звука.

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

093f8d.png

Эмулироваться могут так же и старые операционные системы и железо, например эмулятор DosBox – эмулирует операционную систему MS-DOS с железом от 286 до Pentium MMX, а так же звуковые карты AdLib и SoundBlaster Pro/16.

Entry Filed under: FAQ, Статьи, Эмуляторы. .

Leave a Comment

Required

Required, hidden

Some HTML allowed:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <pre> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Trackback this post  |  Subscribe to the comments via RSS Feed


Calendar

Сентябрь 2007
Пн Вт Ср Чт Пт Сб Вс
    Окт »
 12
3456789
10111213141516
17181920212223
24252627282930

Most Recent Posts