Mit Virtuellen Maschinen
Prof. Dr. Stefan Bosse
Universität Koblenz - FB Informatik - FG Praktiksche Informatik
Stefan Bosse - VPP - Modul G Virtuelle Maschinen ::
Was sind Virtuelle Maschinen?
Stefan Bosse - VPP - Modul G Virtuelle Maschinen ::
Was sind Virtuelle Maschinen?
Wo könnte Parallelisierung in VMs ansetzen?
Stefan Bosse - VPP - Modul G Virtuelle Maschinen ::
Was sind Virtuelle Maschinen?
Wo könnte Parallelisierung in VMs ansetzen?
Wo liegen die Grenzen der Parallelisierung von VMs?
Stefan Bosse - VPP - Modul G Virtuelle Maschinen ::
Was sind Virtuelle Maschinen?
Wo könnte Parallelisierung in VMs ansetzen?
Wo liegen die Grenzen der Parallelisierung von VMs?
Ist Verteilung besser?
Stefan Bosse - VPP - Modul G Virtuelle Maschinen :: Virtualisierung
Stefan Bosse - VPP - Modul G Virtuelle Maschinen :: Virtualisierung
Virtualisierung V transformiert i.A. eine Applikationsprogrammierschnittstelle (API) in eine andere API höherer Komplexität.
V:APIi→APIo,Θ(APIo)≫Θ(APIi)
Stefan Bosse - VPP - Modul G Virtuelle Maschinen :: Virtualisierung
A
Computer System Architektur mit verschiedenen Ebenen (Software, Betriebssystem, Hardware) → verschiedene Virtualisierungsebenen
Stefan Bosse - VPP - Modul G Virtuelle Maschinen :: Virtualisierung
Java Application │ │ Java VM jvm (bytecode) ∇ Linux IA32 │ │ VMWARE (x86) ∇ Windows IA32 │ │ Code Morphing (x86 ──▶ Risc) ∇ Crusoe VLIW
Drei Ebenen von VMs. Eine Java-Anwendung, die auf einer Java-VM ausgeführt wird (Linux OS), die auf einer System-VM ausgeführt wird (Windows OS), die wiederum auf einem Code Morphing Prozessor VM läuft (VLIW: Very Large Instruction Word)
Stefan Bosse - VPP - Modul G Virtuelle Maschinen :: Prozessvirtualisierung
Häufig werden Programme in einer eigenen Metasprache und einem speziellen Anweisungsformat ausgeführt (Bytecode, Text)
Benötigt spezielle Verabeitung der Programme (nur auf dieser VM ausführbar)
Abstraktion von Hardware und Betriebssystemebene
Stefan Bosse - VPP - Modul G Virtuelle Maschinen :: Prozessvirtualisierung
A
Prozessvirtualisierung (Abstraktion von Hardware und Software) → Highlevel Language VM → Parallelisierung auf VM Instanzebene (1:1 Zuordnung P:VM)
Stefan Bosse - VPP - Modul G Virtuelle Maschinen :: Systemvirtualisierung
Verschiedene Programme und Programmformate können konventionell ausgeführt werden
Parallele Ausführung verschiedener gekapselter Betriebssysteme
Stefan Bosse - VPP - Modul G Virtuelle Maschinen :: Systemvirtualisierung
A
Systemvirtualisierung (Abstraktion von Hardware) und Parallelisierung (1:1 Zuordnung einer VM Zone zu virtuellen Prozessor)
Stefan Bosse - VPP - Modul G Virtuelle Maschinen :: Systemvirtualisierung
A
Beispiel: Zwei Betriebssysteme werden auf virtualisierter Hardware (parallel) ausgeführt
Stefan Bosse - VPP - Modul G Virtuelle Maschinen :: Compiler
Klassischer Softwareentwurf mit Compiler und Linker (C)
Stefan Bosse - VPP - Modul G Virtuelle Maschinen :: Interpreter
Edit - Compile - Execute Zyklus bei einem Interpreter
Stefan Bosse - VPP - Modul G Virtuelle Maschinen :: Virtuelle Maschine und Bytecode Interpreter
Bytecode kann privat und abstrakt sein (nur interne Datenstrukturen) oder öffentlich in kodierter Binär- oder Assemblerform.
Ausführung des Bytecodes durch VM. Vorteile:
Stefan Bosse - VPP - Modul G Virtuelle Maschinen :: Virtuelle Maschine und Bytecode Interpreter
Python
Vergleich Interpreter mit Bytcode Compiler-Interpreter System
Stefan Bosse - VPP - Modul G Virtuelle Maschinen :: Bytecode Ausführung
Bytecode wird i.A. durch eine große Ausführungsschleife ausgeführt. Diese besteht i.A. aus einem Dekoder (Mehrfachauswahl) und operationalen Programmabschnitten. Nach jeder Instruktion kann ein Taskwechsel erfolgen (Scheduling Point) um fein granuliertes Multitasking zu ermöglichen.
while not terminated do operation = decode(code[next]) select operation.code of case OP1 => DO IT case OP2 => DO IT .. endcase compute next if scheduling point then yield endifdone
Stefan Bosse - VPP - Modul G Virtuelle Maschinen :: Serialisierung
Da Bytecode unabhängig von der Hostplattform sein sollte, kann Bytecode einfach von einer Maschine zu einer anderen übertragen und ausgeführt werden
Dazu ist eine Serialisierung von Daten und Code erforderlich (Flache Liste von Bytes), mit anschließender Deserialisierung (Wiederherstellung der Daten- und Codestruktur)
Stefan Bosse - VPP - Modul G Virtuelle Maschinen :: Serialisierung
A
Serialisierung transformiert ein Objekt in ein implementierungs- und systemunabhängiges Format (a) für die Netzwerkübertragung (Text!) (b) für die persistente Speicherung
Stefan Bosse - VPP - Modul G Virtuelle Maschinen :: Serialisierung
Peter Cawley