Virtuele machine
Van Wikipedia
Een virtuele machine (Engels: virtual machine) is een computerprogramma dat in staat is om een ander programma uit te voeren dat niet speciaal voor de computer waarop de virtuele machine draait, geschreven hoeft te zijn. De virtuele machine biedt aan andere computerprogramma's een virtuele computer aan. De term virtual machine is vooral bekend geworden door Sun Microsystems, maker van de programmeertaal Java. Javaprogramma's worden uitgevoerd door een Java Virtual Machine.
Virtuele machines zijn er in twee varianten: programmeertaal-georiënteerd of als emulator.
[bewerk] Programmeertaal-georiënteerd
De virtuele machine interpreteert code en voert vervolgens die taak uit. De virtuele machine is dan een koppelstuk tussen de uitgevoerde code en de microprocessor (of andere hardware) waarop het uiteindelijke programma wordt uitgevoerd, waarbij de uitgevoerde code niet de 'echte' hardware gebruikt, maar alleen de functies die worden aangeboden door de virtuele machine. De code van een programma voor een virtuele machine kan hierdoor algemeen zijn. De implementatie van een virtuele machine kan in elke andere programmeertaal gebeuren.
Wanneer voor een bepaald platform (hardware en besturingssysteem) een virtuele machine gemaakt is, kan elk programma dat voor deze virtuele machine geschreven is, worden uitgevoerd. Op deze manier wordt zogenaamde platform-onafhankelijkheid bereikt.
Een voorbeeld van een programmeertaal-georiënteerde virtuele machine is de Java Virtual Machine (JVM). Het resultaat van de compilatie van een Javaprogramma wordt bytecode genoemd. Een JVM kan dan deze bytecode-instructies één voor één interpreteren door ze te vertalen naar één of meerdere echte machine-instructies. Ook zijn er JVM's die de bytecode just-in-time (JIT) compileren naar de instructies van het platform. Dit levert uiteraard prestatiewinst op in vergelijking met interpretatie.
Het idee van bytecode is niet recent. Sommige varianten van de programmeertaal Pascal hadden dit concept reeds; hier heette dit p-code of pseudocode.
[bewerk] Emulatie
Een virtuele machine die de hardware van de computer emuleert, is niet gericht op een programmeertaal (zoals Java of Pascal), maar emuleert een processor (en eventueel andere hardware) voor een programma dat oorspronkelijk voor het geëmuleerde platform is geschreven. In feite doet de virtuele machine zich voor alsof het de andere computer is. Met een dergelijke virtuele machine is het dus bijvoorbeeld mogelijk om Windows® te emuleren in een GNU/Linux-omgeving.
Zie ook: emulator, hardwarevirtualisatie.
Voorbeelden van zulke software:
- VMware "VMware"-site
- Bochs "Bochs"-projectpagina
- Virtual PC "MS Virtual PC"-site (draait alleen op Windows!)
- Qemu "Qemu"-projectpagina (Windows versie)
- Xen geavanceerde hypervisor (draait alleen op Linux en BSD)