Emulator umożliwia utworzenie takich samych interfejsów wejścia i wyjścia, jakie mają oryginalne urządzenia lub programy. Na przykład emulator telefonu komórkowego udostępnia wirtualne klawiaturę i wyświetlacz, wyglądające tak jak te z prawdziwego telefonu. Jeżeli w emulatorze zostanie zachowana zgodność interfejsów, można będzie uruchomić każdą aplikację, która zadziała na oryginalnym urządzeniu.
Emulatory dzielimy przede wszystkim na sprzętowe i programowe. Sprzętowe to te, które swe zadania realizują za pomocą dodatkowego urządzenia. Choć często były one droższe niż symulowane przez nie urządzenie, to cieszyły się dużą popularnością w czasach powolnych komputerów, kiedy brakowało mocy obliczeniowej, aby sprawnie symulować inną maszynę. Dzisiaj emulatory to przede wszystkim programy pozwalające “udawać” sprzęt, system operacyjny czy też nawet cały komputer. Najczęściej emulowane urządzenia to napędy CD/DVD-ROM, telefony komórkowe, starsze komputery i konsole do gier oraz instrumenty muzyczne (przeważnie dotyczy to znanych modeli syntezatorów analogowych oraz cyfrowych). Popularne są również emulatory peceta na pececie, których głównym zadaniem jest umożliwienie uruchomienia innych systemów operacyjnych pod kontrolą np. Windows. Niestety, emulatory bywają używane również niezgodnie z prawem, np. w celu zastępowania kluczy sprzętowych zabezpieczających aplikacje.
Prędkość ślimaka
Niestety, nie ma róży bez kolców. Emulatory ogromnie obciążają maszyny, na których pracują. Dzieje się tak głównie dlatego, że aplikacje wywoływane za pośrednictwem emulatorów muszą zostać poddane specjalnej interpretacji. Analizowany jest kod programu i każda jego instrukcja zostaje przetłumaczona na taką, którą zrozumie nasz komputer. W celu poprawy wydajności emulatorów ich autorzy wprowadzili techniki lepsze od zwykłej interpretacji. Fragmenty kodu, które zostały już raz przetłumaczone na rozkazy procesora PC, są następnie zapamiętywane i gotowe do wywołania w razie konieczności ich ponownego użycia. Tą drogą eliminowana jest wielokrotna analiza kodu w często wykonywanych fragmentach aplikacji.
Tak się dzieje w przypadku samego procesora, ale kolejnym wymagającym elementem jest układ graficzny. Nasz pecet musi jak najdokładniej odwzorować tryby oraz możliwości akceleracji grafiki, które nawet na tak starych komputerach jak Amiga były niemałe (wspomaganie rysowania linii, prostokątów, okręgów, wypełniania powierzchni itp.). I to właśnie dlatego mając komputer PC z zegarem 800 MHz, możemy mieć kłopot z emulacją maszyny, w której wykorzystywany był CPU o częstotliwości 14 MHz.
Poważnym problemem, z którym możemy się zetknąć, starsze gry jest prędkość procesora. Obecne maszyny bywają kilkadziesiąt razy szybsze od swych poprzedników. Bez specjalnego spowolnienia nie mamy jakiejkolwiek szansy w walce z komputerowym “zbyt szybkim” przeciwnikiem.
Istotnym sposobem na przyspieszenie pracy emulatorów jest wirtualizacja, którą przeprowadza się np. podczas emulowania peceta na pececie. Emulator pośredniczy tu jedynie pomiędzy aplikacją a sprzętem. Cały kod programu jest uruchamiany bez większych zmian i narzutów, a urządzenia, takie jak karta graficzna czy dysk twardy, nie są zastępowane programowymi odpowiednikami – emulator wykorzystuje te, które zainstalowano w komputerze.
Opisywane przeze mnie narzędzia mogą się przydać każdemu. Warto je jednak podzielić według funkcjonalności na aplikacje pomocne podczas administrowania, ułatwiające programowanie oraz przeznaczone do użytku domowego.
Przykładowe emulatory i ich przeznaczenie | ||||
Nazwa | System operacyjny | Przeznaczenie | Adres WWW [http://] | Cena |
Emulatory dla administratorów | ||||
Virtual PC | Windows/Mac OS | Emulacja PC | www.microsoft.com/windows/virtualpc/default.mspx | 129 USD |
VMware Workstation | Windows 2000/Server 2003/XP/2000 Server/Server 2003 64-bit/Professional 64-bit edition, Linux (Mandrake/Red Hut/SuSE) | Emulacja PC | www.vmware.com | 189 USD |
Wine | Linux | Emulacja środowiska Windows | www.winehq.com | freeware |
Emulatory dla domowych użytkowników | ||||
RAMDisk | Windows 9x/NT/2000/XP | Emulacja dysku twardego za pomocą pamięci RAM | www.cenatek.com/product_ramdisk.cfm | 49 USD |
DAEMON Tools | Windows 9x/Me/NT/2000/XP | Emulacja CD/DVD-ROM-u | www.daemon-tools.cc | freeware |
DOSBox | Windows 2000/XP, Linux i FreeBSD | Emulacja środowiska DOS | dosbox.sourceforge.net | freeware |
Pdf995 | Windows 9x/Me/2000/NT 4.0/XP/Server 2003 | Emulacja drukarki | www.pdf995.com | 19,95 USD |
Emulatory dla programistów | ||||
Siemens Mobility Toolkit | Windows | Emulacja telefonów Siemens | communication-market.siemens.de | freeware |
Nokia Developer Platforms | Windows/Linux | Emulacja telefonów Nokia | www.forum.nokia.com | freeware |
Visual Boy Advance | Windows 9x/Me/NT/2000/XP, Linux, BeOS | Emulacja konsoli GBA | vba.ngemu.com | freeware |