Simulatie, emulatie en virtualisatie zijn begrippen die we in de IT veel tegen komen. Toch zijn het drie verschillende oplossingen voor verschillende uitdagingen. Werk jij met virtualisatie, emulatie of simulatie?

Virtualisatie heeft het werk van de beheerder drastisch veranderd en zal dat de komende jaren blijven doen. Maar hoe zit het met emulatie en simulatie? Hebben die technieken nog bestaansrecht naast virtualisatie? In de breedste zin doen deze technologieën alle drie hetzelfde: ze bootsen componenten na uit de fysieke IT. Laten we ze alle drie eens naast elkaar zetten.

Simuleren van IT

Bij simulatie is de computer die wordt gesimuleerd er niet, de devices en het besturingssysteem zijn er niet en de applicaties bestaan niet. De omgeving wordt optisch of grafisch nagebootst. Een voorbeeld van hardwaresimuluatie is een Arduino-simulator (http://123d.circuits.io). Hiermee maak en test je apps zonder een fysieke Arduino te gebruiken. En probeer eens de minder geslaagde Windows-simulatie (http://www.virtualdesktop.org). Apple heeft een developer kit (voor Mac OS X) om de grafische omgeving van elk mobiele Apple-device en elke iOS-versie te simuleren. Ontwikkelaars kunnen hierop hun app testen voor iPhones, iPads en Watches. In Google Chrome zit een simulator ingebouwd om browsers te simuleren om je website te bekijken en te testen op bijvoorbeeld een iPad, iPhone of Android tablet zonder dat je die devices in je bezit hebt.

Google Chrome device simulator

 

Emulatie van een processor

Waar er bij simuleren van computers of applicaties géén relatie is met de fysieke hardware van de computer die je simuleert, is dat bij emulatie wel het geval. Met andere woorden, de oorspronkelijke hardwarecomponenten en soms zelfs het besturingssysteem, zijn niet aanwezig maar worden geïmiteerd. Zo kun je de vreemde processor emuleren met een emulatie-applicatie die draait op de processor van je eigen systeem, waardoor je effectief een besturingssysteem op een afwijkende processor draait. Je bent in staat Android, voor de ARM v7 processor is gemaakt, ongemodificeerd te draaien op je Windows Intel-PC in een ARM-emulator. Of je draait MS-DOS van 20 jaar geleden dat niet meer functioneert op de actuele 64-bit Intel-processor in een emulator die de oude hardware (een 8-bit processor) van een IBM PC emuleert. Om dit mogelijk te maken, moet er letterlijk ‘vertaald’ worden: de machinecode van de ene processor moet worden omgezet naar machinecode van de andere processor.

 

Emulatie van een complete PC

Sinds het ontstaan van de PC zijn er initiatieven geweest om de PC (met DOS, Windows 3.x, Windows 95 en later) te emuleren. Dit emuleren was nodig, omdat er veel gebruikers van niet-PC’s (met afwijkende processors) waren, die toch graag de populaire PC-applicaties wilden gebruiken. Denk aan SoftPC (1988!) en later SoftWindows van Insignia om een x86-PC-architectuur te kunnen gebruiken op SUN-werkstations en Mac’s die een niet-Intel processor hadden. In 1997 was Virtual PC voor de Mac van Connectix populair (later overgenomen door Microsoft). De naam van het product suggereert virtualisatie, maar het is emulatie, omdat de Mac toen een niet-Intel processor had. Apple heeft bij de Intel Mac´s een tijd lang Rosetta meegeleverd, een emulator voor de oorspronkelijke PowerPC-processor van Apple. Er bestaan vandaag de dag nog steeds PC-emulaties, zoals Bochs en QEMU. Of je draait de virtuele PC in een browser (,http://www.pcjs.org). WINE (Wine Is No Emulation) is wel degelijk emulatie (het is een definitiekwestie). Het besturingssysteem wordt geëmuleerd, waardoor je een applicatie die voor het ene besturingssysteem is ontwikkeld, ongemodificeerd draait op een ander besturingssysteem (op dezelfde processor). PC-emulatoren (en virtualisatie oplossingen) gebruiken het oorspronkelijke besturingssysteem waar je ook een geldige licentie van moet hebben (in het geval van Windows). WINE biedt Windows apps zonder Windows-licentie. Ook Google en Microsoft hebben emulators voor hun mobiele devices. De Android SDK met emulator is te downloaden bij Google en Microsoft heeft een Windows Phone emulator. De jongste trend is dat je Android apps emuleert op je Windows-systeem met bijvoorbeeld freeware emulator Andy (http://www.andyroid.net, als tegenhanger van het commerciële BlueStacks). Helaas werkt Andy nog niet op Linux, een Mac versie schijnt er wel aan te komen.

 

Retro computing

Emulatie is handig, omdat je oude applicaties en besturingssystemen kunt gebruiken op hardware die niet meer bestaat. Zo kun je nagenoeg elke oude computer uit de jaren 80 en 90 gebruiken op je Windows of Linux systeem. Alleen al voor de Commodore 64 zijn er een stuk of 25 emulators te vinden. Ook op de Raspberry Pi draaien enkele emulators, lees het aankomende Linux Magazine 4 maar eens! We noemen dit retro computing (of retro gaming als je er games op speelt). Er is hier geen plek om de vele emulators te benoemen, maar als je een specifieke emulator zoekt, laat het ons weten. Grote kans dat we hem al gebruiken!

 

Apple II-emulator

 

Emuleren is complex

Emuleren van een computersysteem is echter complexe materie. Niet alleen de processor – die andere machinecode verwacht – moet geëmuleerd worden, ook de andere chips in de computer moeten geëmuleerd worden, waaronder de videochip en de geluids-chip.  Ook moet er een oplossing bedacht worden voor de fysieke randapparaten die niet meer bestaan: joysticks, cassetterecorders etc. Emulators zijn daarom niet altijd perfect en niet alle applicaties functioneren goed. Ook snelheid is soms een probleem. Je huidige Linux PC is veel sneller zijn dan de computers van 30 jaar geleden die geëmuleerd worden. Zo is de pure processorsnelheid van de 6502-processor in de Commodore 64 slechts 0,5 MIPS (miljoen instructies per seconde) terwijl de Intel Core i7 meer dan 175.000 MIPS haalt. Dat is ongeveer 250.000 keer sneller! Toch wil dit niet zeggen dat het werken met de Commodore 64 in 1975 trager was dan het werken met de moderne Intel-PC van nu.

 

 

 Commodore 64 emulator

 

ROM’s

Maar er is nog een vervelende uitdaging. Applicaties werden vaak in ROM’s geleverd, insteekmodules met een chip. Het ingebedde besturingssysteem bevond zich ook vaak in ROM, en sommige systemen hadden ook nog een derde ROM die je het beste kunt vergelijken met de BIOS. Veel emulators hebben deze ROM’s nodig en ze zijn vaak alleen te vinden in het ‘grijze circuit’ van downloads.

 

Virtualisatie

Het belangrijkste verschil tussen virtualisatie en emulatie is primair het platform. Bij alle virtualisatie-oplossingen is het platform identiek aan de daarop gevirtualiseerde omgeving en applicaties. Dat wil zeggen: een servervirtualisatieproduct dat gemaakt is voor Intel-processoren is alleen in staat besturingssystemen te draaien die voor Intel ontwikkeld en gecompileerd zijn. Virtualisatie heeft een grote vlucht genomen bij bijna alle organisaties. We onderscheiden servervirtualisatie, netwerkvirtualisatie, opslagvirtualisatie, presentatievirtualisatie, desktopvirtualisatie en applicatievirtualisatie. De eerste drie zijn datacenter-oplossingen die vaak Linux en OSS als basis hebben. De laatste drie zijn vooral Windows-georiënteerde zakelijke oplossingen. VMware, Microsoft, Citrix, Dell, Red Hat zijn belangrijke spelers in deze markt.

 

Toekomst

Er zijn ontwikkelingen die virtualisatie een andere draai gaan geven: operating system virtualisatie maakt het mogelijk één besturingssysteem (vaak Linux of BSD) geschikt te maken voor meerdere virtualisatie environments (VE’s) ofwel virtuele instances (VI’s). Elke VE of VI draait in een geïsoleerde container, vandaar dat het concept ook wel containervirtualisatie of containerization wordt genoemd. Containervirtualisatie werd al gebruikt in de tijd van de mainframes en is tegenwoordig met Odin (Parallels) Virtuozzo Containers erg populair bij hosting providers. Containervirtualisatie krijgt op dit moment een flinke boost dankzij Docker, dat pas sinds 2013 bestaat. Docker wordt ingezet op Linux als applicatievirtualisatie, waarbij een applicatie ook een heel besturingssysteem kan zijn inclusief bijvoorbeeld interactieve shells en processen. Microsoft kán niet achterblijven en heeft aangekondigd ook met een Docker-achtige omgeving te komen (Windows Server 2016 nano).

 

Conclusie

Server-applicaties en complexe client-applicaties worden als container verpakt en dit maakt de infrastructuur nog flexibeler. Soepele emulatie op laptops en desktops maken applicaties multi-platform. Dit alles betekent dat het besturingssysteem in de toekomst minder belangrijk wordt. Alle applicaties draaien op elke server en op elk device. Werk jij met containers en emulators? We horen graag waarvoor je de technologie gebruikt!