2.8 & 2.9 - Virtual Machines & Java (p.76)
Concept Virtuele Machines:
- Aanbieden van een interface die lijkt alsof het alleenstaande hardware is, maar eigenlijk draait op gedeelde hardware (met meerdere OS`en).
- Elk OS denkt alsof het complete controle heeft over de eigen CPU, RAM, IO, etc.
Voordelen:
- Elk OS draait onafhankelijk, dit geeft beveiligings voordelen
- Optimaal gebruik maken van beschikbare hardware.
- Goed voor het ontwikkelen van OS
en, omdat het bestaande OS
en niet aantast. - Goed voor het testen van software dat op verschillende OS`en moet draaien.
Emulator = Draaien van een OS in een specifiek ander OS. (in elkaar, niet naast elkaar zoals hierboven!)
Para-virtualization = Draaien van een programma in een losstaand, hetzelfde lijkend OS als die van de host.
- Programmas moeten hiervoor worden aangepast.
Implementatie is lastig.
- Het virtualisatieprogamma is een user-mode programma.
- De verschillende kernels in de guests draaien in kernel mode.
- De kernel mode moet dus voor ieder systeem worden gesimuleerd, en worden doorgegeven naar de echte hardware.
- VMs zijn in het algemeen langzamer door de meerdere levels of code tussen de applicaties en de hardware.
Programmas die Virtuele Machines laten draaien: VMware, VirtualBox, Parallels
- JVM (Java Virtual Machine) is geschreven voor meerdere platformen waardoor java zo platform independent is.
- Java code --> [COMPILER] --> Java Byte Code (.class) --> [JVM] --> Uitvoeren
- JVM implementeert geheugenbeheer en bevrijden van niet meer nodig geheugen.
- Er zijn dedicated hardware chips om JVM te draaien.
- .NET draait op hetzelfde concept maar dan met de CLR (Common Language Runtime) en het gebruik ven een JIT (Just In Time) compiler.