Emulator
Emulator duplikuje funkcje jednego systemu w innym, dzięki czemu ów drugi system zachowuje się tak jak pierwszy. Mówimy wtedy, że drugi system jest emulowany przez pierwszy. Jedną z form emulatorów są programy, które umożliwiają uruchamianie aplikacji na komputerze i/lub systemie operacyjnym innym niż ten na który zostały napisane (np. emulatory Amigi, Atari, ZX Spectrum).
Emulacja
Emulacja polega na odczytywaniu każdej instrukcji kodu, wykonywaniu jej w pewien szczególny sposób i ustawianiu stanu maszyny wirtualnej odpowiedniego do tego, w jakim znajdowałaby się oryginalna maszyna. Nie zawsze konieczna jest emulacja każdej części środowiska, w którym mają wykonywać się programy. Zwykle jakaś część oprogramowania lub sprzętu już istnieje i nie wymaga emulacji.
Sposób działania
Opis działania emulatorów i efekty tych działań można zgrupować w następujące punkty
- pełne wymodelowanie za pomocą oprogramowania architektury systemu
- modelowanie sprzętu: procesora, urządzeń, pamięci, chipów systemowych (timery, DMA, kontroler przerwań, kontroler szyny)
- modelowanie podsystemów (I/O, audio, video)
- konieczne w przypadku, gdy architektura platformy sprzętowej różni się od architektury systemu czy aplikacji jakie chcemy na niej uruchomić
- zaletą rozwiązania jest łatwa przenaszalność
- stworzenie pełnego modelu sytemu jest pracochłonne
- duży narzut czasowy
Strategia emulacji wykorzystywana między innymi przez projekt http://www.bochs.com