Sporty samochodowe powstały jak człowiek zbudował drugi samochód.
Historia emulatorów jest praktycznie tak długa jak historia komputerów. Powody dla których ludzie chcą coś emulować są głównie trzy. Po pierwsze chcą mieć system który jest dla nich w pewien sposób nieosiągalny. Za pierwszy praktyczny przykład takiego emulatora, uważa sie złamanie kodu Emigmy. W 1941 polscy matematycy, odkryli szyfr niemieckiej maszyny Enigma i emulowali jej obliczenia celem odszyfrowywania wiadomości. Drugim powodem jest chęć zapewnienia kompatybilności ze starszym sprzętem. W roku 1961 IBM, chcąc zapewnić jak najszybsze przejście na maszynę System/360, napisał emulator który pozwala na nich uruchamiać programy maszyny 7070. Trzecim powodem dla których pisze sie emulatory, to chęć zapewnienia pewnej abstrakcji sprzętu, dla testów.
Podział technik:
Tytułem referatu jest Wirtualizacja. W dokładnym rozumieniu tego pojęcia, jest to tworzenie pewnej abstrakcji (komputera lub systemu), na potrzeby pewnego programu (systemu lub programu uzytkowego) . W ramach tego można wyróżnić trzy główne grupy wirtualizatorów:
- Emulatory pełne - Są to programy, które wirtualizują sprzęt (emulują cały komputer), na potrzeby innego systemu operacyjnego.
- Emulatory API, one z kolei wirtualizują API systemu na potrzeby programu dla danej platformy.
- Wirtualizatory - zapewniają one wrażenie danemu systemowi operacyjnemu, że jest jedynym systemem na danym komputerze.
Ten podział nie jest podziałem ścisłym powstają emulatory, które mieszczą sie gdzieś pomiędzy tymi klasami.
W dalszej części referatu często będzie używane słowo gospodarz (host) i gość (guest). W praktycznym rozumieniu gospodarz jest systemem operacyjnym z ktorego startuje komputer, natomiast gosc jest systemem ktory jest pod nim uruchamiany, za pomoca wirtualizatora. Jest to take związane z tym że większość dzisiejszych procesorów ma dwa tryby pracy, gospodarz jest systemem operayjnym który działa w trybie systemowym procesora, natomiast gość działa w trybie użytkownika. W przypadku emulatorów starszych maszyn na których nie było dwóch trybów, gość nie zdaje sobie sprawy że jest gościem, w przypadku nowych systemów często potrzebna jest łatka dla gościa, zeby stworzyc mu pozory trybu systemowego.
Wirtualizacja znalazła zastosowanie w następujących dziedzinach:
- Stare gry - wiele emulatorów powstaje, żeby emulować starsze komputery. Często głównym powodem jest chęć uruchomienia starych gier przez autora programu.
- Migracja na nowy system - Branże komputerową, cechuje ogromna prędkość rozwoju. Dotyczy ona tak hardware jak i software. Wiąże się z tym chęć jak najszybszego przechodzenia na najnowsze rozwiązania, co zwalnia moce przerobowe użyte do wsparcia starszych rozwiązań. Wirtualizacja może pomóc w migracji, w ten sposób że pozwoli np na uruchomienie starszego systemu wewnątrz nowszego.
- Rozwój "niebezpiecznego" oprogramowania - Jak wspomnieliśmy większość procesorów ma dwa tryby pracy. Niestety kod który sie wykonuje w trybie systemu też kiedyś trzeba napisać i odpluskwić. Jego niezawodność oczywiście musi być także na odpowiednio wysokim poziomie. Możliwość uruchomienia kodu, przeznaczonego dla poziomu systemowego, na poziomie użytkownika dostarcza nam wielu zalet. Możemy po pierwsze zaglądać do niego z zewnątrz, nawet jak już sie zawiesi, albo działa nie prawidłowo. Kolejną zaletą jest możliwość zapewnienia mu abstrakcji sprzętu, co ogranicza miejsca możliwych nie kompatybilności, i pozwala nam się skupić na pisanym segmencie.
- Hosting - W wielu usługach klienci chcą mieć cały serwer dla siebie. Nie zależy im jednak na wydajności jednej jednostki centralnej, gdyż ona przekracza zdecydowanie ich potrzeby, ale na pewnej abstrakcji zarządzania. W przypadku hostingu o wiele przyjemniej dla klienta, i bezpieczniej dla usługodawcy, jest stworzyć abstrakcję, że każdy klient ma cały system operacyjny tylko dla siebie.
- Szkolenia - Zastosowanie wirtualizacji w szkoleniach ma dwie zalety. Po pierwsze szybko można odtworzyć stan z przed szkolenia i szkolić następną osobę. Po drugie w związku z duża wydajnością dzisiejszych komputerów mogą one wirtualizować całą sieć komputerową, co zdecydowanie obniża koszty szkolenia.
- Możliwość korzystania z aplikacji wielu systemów bez restartu - Każda osoba ma jakieś ulubione środowisko pracy, i często rezygnuje z kilku aplikacji, których nie ma dla tego środowiska. Wirtualizacja pozwala na uruchamianie apliakcji z różnych środowisk szybko (bez restartu) i często przy zapewnieniu dobrej integracji z już używanymi programami.