Verteilte und Parallele Programmierung

Mit Virtuellen Maschinen

Prof. Dr. Stefan Bosse

Universität Koblenz - FB Informatik - FG Praktiksche Informatik

1 / 80

Stefan Bosse - VPP - Modul G Virtuelle Maschinen ::

Virtuelle Maschinen

Was sind Virtuelle Maschinen?

2 / 80

Stefan Bosse - VPP - Modul G Virtuelle Maschinen ::

Virtuelle Maschinen

Was sind Virtuelle Maschinen?

Wo könnte Parallelisierung in VMs ansetzen?

3 / 80

Stefan Bosse - VPP - Modul G Virtuelle Maschinen ::

Virtuelle Maschinen

Was sind Virtuelle Maschinen?

Wo könnte Parallelisierung in VMs ansetzen?

Wo liegen die Grenzen der Parallelisierung von VMs?

4 / 80

Stefan Bosse - VPP - Modul G Virtuelle Maschinen ::

Virtuelle Maschinen

Was sind Virtuelle Maschinen?

Wo könnte Parallelisierung in VMs ansetzen?

Wo liegen die Grenzen der Parallelisierung von VMs?

Ist Verteilung besser?

5 / 80

Stefan Bosse - VPP - Modul G Virtuelle Maschinen :: Virtualisierung

Virtualisierung

  • Motivation von Virtualisierung:
    • Abstraktion der Maschine und Speicher
    • Abstraktion und einfache Wiederverwendung von Algorithmen
    • Abstraktion von Kommunikation
    • Abstraktion von Parallelisierung und Verteilung!
    • Abstraktion der Maschineninstruktion ⇒ Instruction Set Architecture (ISA) ⇒ ISA kann physisch oder nur virtuell existieren
  • Virtualisierung V ist die Abstraktion und Vereinheitlichung von:
    • Mikroprozessor ISA
    • Multitasking, Synchronisation
    • Sensoren, per. Geräte, Aktoren
    • Kommunikation und Konnektivität (Protokolle)
    • Speicher (GC, Tupelräume)
    • Semantische Daten, Kontext und Ort
6 / 80

Stefan Bosse - VPP - Modul G Virtuelle Maschinen :: Virtualisierung

Virtualisierung

Virtualisierung V transformiert i.A. eine Applikationsprogrammierschnittstelle (API) in eine andere API höherer Komplexität.

V:APIiAPIo,Θ(APIo)Θ(APIi)

  • VM für eingebettete Systeme:
    • Lua (eLua, 32 Bit, 64kB RAM, 256kB ROM, GC, speed-down 1:100)
    • FORTH (Mecrisp, 32 Bit (≥8), 1kB RAM, 16 kB ROM, JIT!, no GC, speed-down 1:10)
7 / 80

Stefan Bosse - VPP - Modul G Virtuelle Maschinen :: Virtualisierung

A Computer System Architektur mit verschiedenen Ebenen (Software, Betriebssystem, Hardware) → verschiedene Virtualisierungsebenen

8 / 80

Stefan Bosse - VPP - Modul G Virtuelle Maschinen :: Virtualisierung

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)

9 / 80

Stefan Bosse - VPP - Modul G Virtuelle Maschinen :: Prozessvirtualisierung

Prozessvirtualisierung

  • Einzelne Ausführungsprozesse werden virtualisiert
  • Häufig werden Programme in einer eigenen Metasprache und einem speziellen Anweisungsformat ausgeführt (Bytecode, Text)

    • Java Virtual Machine (jvm)
    • Lua Virtual Machine (lua, luajit, plvm)
    • JavaScript Virtual Machine (Google v8, jerryscript, spidermonkey)
    • OCaML Bytecode VM (funktionale Programmierung)
  • Benötigt spezielle Verabeitung der Programme (nur auf dieser VM ausführbar)

  • Abstraktion von Hardware und Betriebssystemebene

10 / 80

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)

11 / 80

Stefan Bosse - VPP - Modul G Virtuelle Maschinen :: Systemvirtualisierung

Systemvirtualisierung

  • Hier wird die Maschine (Hardware) virtualisiert
  • Verschiedene Programme und Programmformate können konventionell ausgeführt werden

  • Parallele Ausführung verschiedener gekapselter Betriebssysteme

    • Parallelisierung kann entsprechend des Betriebssystem auf OS und Prozessebene erfolgen
    • Die VM selbst kann parallele IO Ausführung nutzen
12 / 80

Stefan Bosse - VPP - Modul G Virtuelle Maschinen :: Systemvirtualisierung

Systemvirtualisierung

A Systemvirtualisierung (Abstraktion von Hardware) und Parallelisierung (1:1 Zuordnung einer VM Zone zu virtuellen Prozessor)

13 / 80

Stefan Bosse - VPP - Modul G Virtuelle Maschinen :: Systemvirtualisierung

Systemvirtualisierung

A Beispiel: Zwei Betriebssysteme werden auf virtualisierter Hardware (parallel) ausgeführt

14 / 80

Stefan Bosse - VPP - Modul G Virtuelle Maschinen :: Compiler

Compiler

Klassischer Softwareentwurf mit Compiler und Linker (C)

15 / 80

Stefan Bosse - VPP - Modul G Virtuelle Maschinen :: Interpreter

Interpreter

Edit - Compile - Execute Zyklus bei einem Interpreter

16 / 80

Stefan Bosse - VPP - Modul G Virtuelle Maschinen :: Virtuelle Maschine und Bytecode Interpreter

Virtuelle Maschine und Bytecode Interpreter

  • Die Übersetzung des Quelltextes in Bytecode kann vor und während der Ausführung des Programms erfolgen!
  • Bytecode kann privat und abstrakt sein (nur interne Datenstrukturen) oder öffentlich in kodierter Binär- oder Assemblerform.

  • Ausführung des Bytecodes durch VM. Vorteile:

    • Unabhängig von Hostplattform
    • Virtuelle Maschine kann optimiert werden ohne dass der Bytecode neu erzeugt werden muss
    • Abstraktion der Speicherverwaltung (automatisches Speichermanagement)
    • Parallelisierung kann durch VM automatisch erfolgen (wenn möglich)
    • Abstraktion der IO Schnittstellen und Kommunikation
    • VM kann Bytecode zu Beginn der Ausführung oder zur Laufzeit dynamisch und nach Bedarf optimieren (JIT)
17 / 80

Stefan Bosse - VPP - Modul G Virtuelle Maschinen :: Virtuelle Maschine und Bytecode Interpreter

Virtuelle Maschine und Bytecode Interpreter

Python Vergleich Interpreter mit Bytcode Compiler-Interpreter System

18 / 80

Stefan Bosse - VPP - Modul G Virtuelle Maschinen :: Bytecode Ausführung

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 endif
done
19 / 80

Stefan Bosse - VPP - Modul G Virtuelle Maschinen :: Serialisierung

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)

20 / 80

Stefan Bosse - VPP - Modul G Virtuelle Maschinen :: Serialisierung

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

21 / 80

Stefan Bosse - VPP - Modul G Virtuelle Maschinen :: Serialisierung

Peter Cawley