1 Introduction to Virtual Machines Werden Abstraktionsniveau in gut definierte Schnittstellen organisiert. Levels teilen die Softwares von der Maschine (Plattform). ‐ VM’s sind durch JAVA‐VM und MultiCore‐Proc bekannt geworden. ‐ Systemarchitektur: voneinander abhängige Hardware & Softwarekomponenten haben „wohldefinierte Schnittstellen“ (z.B. ISA), die erst ein Zusammenspiel ermöglichen. ‐ Abstrahiert von Basisimplementation hohe Flexibilität ‐ VM Hardware: kompatible Schnittstellen. - Hardware VM: flexibel, abstrakt. ‐ Abstraktion ermöglicht Spezialisierung der VMs. - Große Vielfalt an VMs! Vom Skript: Abstraktionslevel / ‐stufen, hierarchisch: ‐ Auf Maschinenebene viel Hardwaredetails (HD: CHS): 1. Alle Komponenten sind physische Ressourcen 2. Reale Eigenschaften 3. Interface definiert, um Ressourcen anzusprechen ‐ Auf Betriebsebene kaum Hardwaredetails (HD: Files): 1. Die Komponenten sind logische Verweise 2. Weniger Restriktionen durch Hardware! Wohldefinierte Schnittstellen: ‐ Ermöglicht unabhängiges Arbeiten an Hardware bzw. Software 1. Beispiel: Instruction Set wird von Intel und AMD in deren CPU umgesetzt. Werden die Spezifikationen/Schnittstellen eingehalten, funktioniert das Windows Binary bei Beiden. ‐ Beim Betriebssystem für Applikationen. ‐ [Applikationen für Benutzerkommunikation] ‐ Problem: unterschiedliche Instruction Set (IA32 – IBM PowerPC) und unterschiedliche OS (Linux – Windows) Die Hardware Ressourcen werden von EINEM Betriebssystem verwaltet (set von function call): ‐ Eingeschränkte Flexibilität ‐ Sicherheits‐ und Fehlereingrenzung im multi‐user Betrieb. Virtualisierung löst diese Probleme! Entspannt die Grenzen. ‐ Alle Ressourcen werden gemappt. Microsoft hat Kompilierungen Entwickelt, die Mappen eine HLL zum gleichen Instruktion Set. ‐ Es gibt das virtuelle Gastsystem, das auf das realem Hostsystem gemappt wird Isomorphismus Virtualisierung ist keine Abstraktion, da keine Details versteckt werden, sondern zu dem System darunter (Host) gleich sind! Bring mehr Flexibilität. Beispiel, HD: Virtuelle Disk ist wie ein großer File, selbe Operationen, etc. Virtualisierung ist ein Isomorphismus! Diversität = + Innovation, - Interoperabilität Weiterer Vorteil: Höhere Softwareportablität und reduzierte Flexibilität. Emulation erlaubt crossplattform Kompatibilität und Dynamic, on the fly, optimization Anders: Hochsprache (VM ohne reale Maschine): ‐ Java erstellt das Konstrukt ‐ Java‐VM führt (platformunabhängig!) das Konstrukt aus 1.1. Computer Architecture ISA – Instruction Set Architecture (Computer Architektur: Architektur ist definiert durch Interfaces und hat eine Implementierung): ‐ Befehlssatzarchitektur, die im Prozessor oder eben in einer Virtuellen Maschine implementiert ist. 1 ‐ Wenn ein Programmierer in einer ISA schreibt, dann lässt sich der Code auf jedem Prozessor, der diese ISA zur Verfügung stellt, ausführen Kompatibilität / (Reproduzierbarkeit) ‐ Es gibt zwei Modi: die user ISA (unkritische Ressourcen) und system ISA (kritische Ressourcen; supervisor) – Seite 7. ABI – Application Binary Interface: ‐ Schnittstelle zw. Programm und Shared HD Ressourcen ‐ Enthält nur user ISA! ABI lauft nur auf dem gleiche ISA und OS ‐ Hardware Ressourcen über OS system call interface API – Application Programming Interface: ‐ Definiert die Programmanbindung auf Quelltextebene (HHL). - durch den typischen standard library - Applikationen die man zu API schreibt, können schnell kompiliert und portiert werden. - manche API routine sind wrappers: Kode der übersetzt API zu binary, der von OS erwartet ist 1.2. Virtual Machine Basics Eine Maschine aus Sicht eines Prozess der ein Programm ausführt ist: Eine Kombination aus Betriebssystem und der darunterliegenden user‐level Hardware (ABI stellt Interface zwischen Prozess und Maschine). Eine Maschine aus Sicht eines OS ist: Eine Implementierung der unterliegenden Hardware (ISA stellt Interface zwischen System und Maschine). Eine virtuelle Maschine ist eine Kombination aus realer Leistung (Host) und virtualisierende Software. Dabei können die Ressourcen differieren. Virtualisierungsprozess: 1. Mapping der virtuellen Ressourcen und Zustände (registers, memory, files zu reale Ressource) 2. Aufruf der benötigten Maschinen Instruktion und/oder System calls Prozess‐VMs, ABI, emuliert Benutzeranweisungen und Systemaufrufe, runtime System‐VMs, ISA, emuliert die Hardware (ISA), VMM genannt, versorgt ein komplettes System. Guest sieht eine andere ISA als diese, die von HD unterstutzt ist. Real Maschine = Native Maschine (Guest der emuliert wird) Emulation, Repliziert, Komponiert 1.3. Process Virtual Machines Virtual ABI: replizierung, emulierung, optimisierung 1.3.1. Multiprogramming Jeder Prozess bekommt eine vollständige Maschine simuliert. 1.3.2. Emulation and Dynamic Binary Translation Ein ISA muss emuliert werden, auf dem HD der für einen anderen programmiert ist. (ein Binary hat eine andere ISA, als die Ziel‐ISA). Methoden: ‐ Interpretation: ein Interpreter führt das Binary in der Ziel‐ISA (fetches, decodes) aus (niedriger startup overhead, langsam, 10 Target für eine Ziel Instruktion). ‐ Binary translation: ein Translator übersetzt das Programm in die Zielarchitektur vor der Ausführung (wenn gecached, hoher startup overhead, schneller). Staged emulation combined with profiling (interpretier und zusätzliche Optimierung an übersetzten Code) Digital FX!32 hat Alpha HD: Translation passiert inkrementell während das Runtime 1.3.3. Same‐ISA Binary Optimizers Same ISA dynamic binary optimization collect Profile und nutze es um das Code zu optimieren z.B. Dynamo System, von HP 1.3.4. High-Level Language Virtual Machines: Platform Independence FX!32 zu Alpha: portabilität mit case-by-case basis Problem: Ausführen eines Quell‐binary in einer abweichenden Zielarchitektur erfordert eine VM, die die Zielarchitektur unterstützt. Lösung: Software Framework – high Level language (= Process-level VM)! Plattform unabhängig! Bsp. Pascal. 2 Alt: Software wird als Source geschrieben, kompiliert (lexical, syntactical und semantic) zu intermediate Code und Objekt Code (in beliebigen ISA/OS neucompiliert) ‐> erst dann ausgeliefert. Neu: Source, portabler code, Auslieferung an VM, VM Memory Image loader, Host Instruktion. Beispiel: .NET & Java, bei Sofistizierte HLL: Kompilierung im Host Maschine Code, auf dem Host ausgeführt. CLI (Common Linguage Infrastrukture) fundierte .NET ISA ist in bytecodes 1.4 System Virtual Machines Legacy Server Heute: Sicherheit danke Isolation, +OS gleichzeitig unterstutzt Die VMs sind voneinander isoliert. Bei Fehler im Gastsystem bleibt das Hostsystem unverletzt. Multiple OS VMM Single Hardware 1.4.1 Implementation of System Virtual Machines Implementationen: 1. Direkt nach der Hardware; Problem: Erst VMM, dann alle OSs / I‐O‐Treiber müssen vorhanden sein! Scratching and Installing on top 2. Erst Hostsystem, dann VMM: result hosted VM; Problem: Leistungsverlust (mehrere Layers) Problem: ISA ist unterschiedlich, z.B. OS X und Windows. 1.4.2 Whole System VMs: Emulation (Performance ist zweite prio) Lösung: whole‐system VM: Applikation und OS müssen emuliert werden. Dazu Windows: software VM und OS X Hardware (oder andersrum). Erscheint als eine komplexe Applikation! Hardware wird ebenfalls vollständig emuliert (VM Managment and Trap Handling) Problem: Wenn die Hardwareeigenschaft in den OS grundunterschiedlich sind! 1.4.3 Codesigned Virtual Machines: Hardware Optimization Codesigned VM für Hardware‐Optimierung: Benutzen innovative ISA (keine nativ ISA) entweder auf Host oder Gast. VM SW ist Teil der HW Implementierung Das Gastsystem nutzt niemals direkt die Hardware (spec ISA native ISA); Transmeta Crusoe IBM AS/400 hat viele codesigned Technikums. 1.5 Taxonomy, Klassifizierung: 1. Prozess‐VM (ABI + System calls): a. Gleiche ISA: Multiprogramm‐System; Dynamic Binary Optimizer b. Unterschiedliche ISA: Dynamic Translater; HLL VMs 2. System‐VM (unterstutzt vollständige ISA): a. Guest-Host Gleiche ISA: Classic‐VMs; Hosted VMs b. Unterschiedliche ISA: Whole‐System‐VMs; Codesigned‐VMs 1.6 The Versatility of Virtual Machines Java, Linux on Windows 1.7 The Rest of Book System and Process VMs. Case Study: Shade simulation nutzt mehrere emulationen (one by one simple fashion, binary translation) Same ISA: dynamic binary optimization HP Dynamo Pascal-P codes HHL – High performance IBM Jikes Codesigned VMs: Transmeta Crusoe, IBM AS/400 3