Неваляшка
Мудрец
(17453)
17 лет назад
Эмуля́ция (англ. software emulation) — имитация работы одной программы средствами другой.
Эмуляция позволяет выполнять компьютерную программу на платформе (компьютерной архитектуре и/или операционной системе) , отличной от той, для которой она была написана в оригинале. Эмуляцией также называют сам процесс этого выполнения. [Источник? ] В отличие от симуляции, которая лишь воспроизводит поведение программы, при эмуляции ставится цель точного моделирования состояния имитируемой системы, для выполнения оригинального машинного кода.
Используется при проектировании новых микропроцессоров и при тестировании программ написанных для различных систем.
Одно из популярных применений эмуляции — выполнение на персональном компьютере игр, написанных для игровых автоматов или игровых приставок.
Теоретически, согласно тезису Чёрча — Тьюринга, любая операционная среда может быть эмулирована в любой другой среде. На практике, однако, встречается ряд трудностей; в частности, точное поведение эмулируемой системы часто не документированно и должно быть исследовано и определено с помощью обратной разработки.
Достаточно полная эмуляция некоторой аппаратной платформы требует предельной точности, до уровня отдельных тактовых циклов, недокументированных особенностей и даже ошибок реализации. Это особенно важно для таких моделей классических домашних машин, как Commodore 64, программное обеспечение которых сильно зависит от программистских решений, основанных на недокументированных возможностях, изобретённых программистами игр и энтузиастами демосцены.
В противоположность этому, на некоторых других платформах довольно мало использовался прямой доступ к оборудованию. В этом случае оказывается достаточным обеспечить некоторый уровень совместимости, обеспечивающий трансляцию системных вызовов эмулируемой системы в вызовы работающей системы.
Обычно, эмулятор состоит из нескольких модулей, отвечающих за различные подсистемы эмулируемого компьютера. Чаще всего, эмулятор состоит из:
* эмулятора или симулятора центрального процессора
* модуля подсистемы памяти, эмулирующего ОЗУ и ПЗУ
* модуля или модулей эмуляции различных устройств ввода/вывода
Системная шина обычно не эмулируется, по причинам упрощения или повышения производительности, и виртуальная периферия общается непосредственно с модулем ЦП и модулем памяти.