10. Fallbeispiel Plurix 10.1 Entwurfsziele und Visionen: 10.1.1 Schnelles und leichtgewichtiges OS: Kurze Ausführungspfade: - Übersichtlich, Kompakter Code, Direkte Adressierung, Keine Datenserialisierung, Kein Lader und kein Binder, Verzicht auf heterogene Hardware, Programmierung auf Hardwareebene, Weglassen einiger Betriebssystemschichten, Nur ein einziger Adressraum für alle PCs im Cluster. Verteilte Betriebssysteme 2002, © VS Informatik, Uni Ulm 1 Hohe Durchsatzleistung pro Station: - übersetzt 20 000 Zeilen pro Sekunde, 20 000 Transaktionen pro Sekunde, 30 MB/s auf Disk schreiben. Systemstart in 1 Sekunde, 3D Beschleunigung. Geeignet auch für mobile Endgeräte: - Wenig Hauptspeicher und schwache CPUs, GPRS Datenraten sollen ausreichen, Sparsamer Batteriebetrieb, Verteilte Datenhaltung, Embedded Systems. Verteilte Betriebssysteme 2002, © VS Informatik, Uni Ulm 2 Vereinfachte Benutzersicht: - Ortsunabhängige Sicht auf den Gesamtcluster: Workspace enthält die Objekte eines Benutzers, Einfache Administrierung & Konfiguration, Aktive Texte à la Oberon. Programmierkomfort: - Persistente Objekte. Programmierung wie Einzelplatz, Automatische Freispeichersammlung. Objektorientierte Programmierung in Java, Erlernbarkeit/Teachability: - Betriebsmittel als Java-Klassen bzw. Java-Objekte, (CPU, Memory, MMU, Network, Devices), Shared virtual Memory anstatt RPC, Einsatz im Übungsbetrieb. Verteilte Betriebssysteme 2002, © VS Informatik, Uni Ulm 3 10.2 Geplante Einsatzbereiche 10.2.1 Allgemeine Zielrichtungen Vorerst weniger geeignet als Höchstleistungsrechner. Allgemeine Datenverarbeitungsaufgaben. Multimedia-Telekooperation. Network Computing. Multplayerspiele. Hypertexte. VR. Verteilte Betriebssysteme 2002, © VS Informatik, Uni Ulm 4 10.2.2 Zum Beispiel: "Frame-On-Demand“ Technik Je nach Belastung der Stationen und des Netzes werden mehr oder weniger Frames abgeholt. Neuen Frame erst holen, nach Invalidierung des alten durch den Sender. Bisher übliche Verfahren: - Flusskontrolle, - Skalierung beim Sender, - Übertragungsratensteuerung. Verfeinerungen: Komprimierung, Rundspruch, „Interest Bit“. Verteilte Betriebssysteme 2002, © VS Informatik, Uni Ulm 5 10.2.3 Beispielszenarium CeBit 2000: CeBit2000 Demo Cluster mit 3 PCs: - 3 Videokameras (Shared) Texteditor 100 MBit/s Ethernet 360 Grad Panoramabild Programm+Daten im DSM Programmgrösse: - Panorama: 1 KB + 1 MB OS mit Treibern: 40 KB Editor: 10 KB Video 1 KB 10.2.4 Verteilte Betriebssysteme 2002, © VS Informatik, Uni Ulm 6 10.2.4 CeBit 2001 Demo: ATI Radeon Hochleistungsgrafik für gemeinsam rotierenden Würfel. QuickBoot BIOS. ~ Oberon GUI. CD abspielen. Sound Analyzer. ≡Quit≡ ≡AutoRotate≡ ≡Manual≡ ≡Grabber≡ ≡Textures≡ // ATI Radeon Supercube ≡On≡ ≡Off≡ // Use Cursorkeys, PageUp, PageDown, to move ≡Quit≡ ≡CD-ROM≡ ≡Mic≡ ≡Line≡ // Graphic Alyzer ≡Quit≡ ≡Objects≡ ≡Start/Stop≡ ≡Reset≡ // Sound ≡Quit window system≡ ≡Cube≡ ≡Analyzer≡ ≡WavePlayer≡ ≡InfoText≡ ≡Applications≡ // Main Framegrabber. DSM-Monitor. Verteilte Betriebssysteme 2002, © VS Informatik, Uni Ulm 7 10.3 Aktive Text Bedienerschnittstelle, geplant Jeder Text in einem Viewer ist ein potentieller Befehl. Analog zur Bedienung des Oberon Systems, jedoch keine Interclicks. Mausknöpfe: Doppelclick: ausführen Links: auswählen Rechts: zusätzliches Menu .... .... pjc.compile cube3D allgemeine Befehlssyntax: <Klassenname>"."<Methodenname> <textuelle Parameter> <Objektname>"."<Methodenname> <textuelle Parameter> Platzhalter: *, ~, ^ Dynamische Methoden von Text evtl. abgekürzt: .cut, .copy, .paste, .clear, .open, .close, .grow Verallgemeinerte Textelemente: - Bilder, Verzeichnisse, Menus, Syntaxfehler, URLs, Helpers, Hiders ... Verteilte Betriebssysteme 2002, © VS Informatik, Uni Ulm 8 10.4 Transaktionsschleife Kooperatives Multitasking (Oberon-style): - Zentrale Event-Schleife => - System Transaktion (GC ..), - Legacy Netzwerkprotokolle, - Tastatur & Mauslistener, - Installierbare Transaktionen. Kernel Funktionen: - Initialisierung, - Interrupt dispatching, - Memory management, - Machine Record als Kontext, - Begin- & End-of-Transaction. System Network Input User System System System Besonderheiten: - Kurze Transaktionen erwünscht, - Pro Befehl implizites Begin- & End-Of-Transaction, - Automatischer Wiederanlauf nach Zugriffskonflikten im DSM ... Verteilte Betriebssysteme 2002, © VS Informatik, Uni Ulm 9 10.5 Gemeinsamer verteilter Speicher = Distributed Shared Memory = DSM . = Verteilter virtueller Speicher = VVS . Granularität: Viele Objekte pro Seite. Seitenorientierter DSM in Plurix: - Logischer Speicherzugriff mit einer Byteadresse, - Übersetzung in phys. Adresse durch MMU, - Falls erforderlich werden 4K übertragen. Implizite Kommunikation: - Über gemeinsamen Speicher, Kein RMI/RPC/Corba, TCP/FTP extern, Keine Pipes, Kein MPI ... Logical Memory DSM Physical Mem. MMU Verteilte Betriebssysteme 2002, © VS Informatik, Uni Ulm 10 10.6 Optimistisches Konsistenzmodell: Sequentielle Konsistenz zwischen den verschiedenen Transaktionen. Die Reihenfolge der Transaktionen ist vorerst unbestimmt. Kollidierende Transaktionen werden erneut gestartet. Erkennen der Zugriffskonflikte mithilfe der Read- & Write-Sets: Verteilte Betriebssysteme 2002, © VS Informatik, Uni Ulm 11 10.7 Schattenkopien und Rücksetzung Zwischen Transaktionen in verschiedenen Stationen: - Im Lauf einer Transaktion wird ein Read- & ein Write Set aufgebaut, Schattenkopie erstellen, bevor eine Seite beschreiben wird, Commit-Request am Ende einer Transaktion, Im Kollisionsfall Reset Kollisionsauflösung: - Serialisierung über Token, - Derzeit mit „First wins“, - Fairness nicht garantiert. Kurze Transaktionen: - Niedrige Kollisionsrate, Oberon-artige Befehle, Tastatur und Maus, Klasse compilieren, Ein Video Frame … Verteilte Betriebssysteme 2002, © VS Informatik, Uni Ulm 12 10.8 Rücksetzbare Puffer (Smart Buffers) Für wiederholbare Eingabe: - Schreibzeiger für die InterruptRoutine ist definitiv - Commitzeiger ist wirksam nach einem erfolgreichem Commit, - Lesezeiger für die Transaktion ist rücksetzbar Smart Buffers liegen zwischen Interrupt- & Transaktionsraum : - Die Interrupt-Routine legt Eingabe-Daten in den Smart Buffer, - Eingaben in eine erneut gestartete Transaktion können erneut gelesen werden. Die Pufferinhalte sind als Klassen mit Attribut „NonTransactional“ angelegt und nehmen damit nicht am Rücksetzungsalgorithmus teil. Ausgabepuffer können die Ausgaben einer Transaktion verwerfen. Verteilte Betriebssysteme 2002, © VS Informatik, Uni Ulm 13 10.9 Speicherorganisation DSM-Heap allen Stationen gemeinsam: - Reguläre Transaktionsobjekte, Schwach konsistente Objekte, Objekte ohne Backchain, Offscreen-Pixmap, Stationsobjekt, Share-Sets. 3.5 GB Lokaler Speicher: - Puffer (Grafik, Netz, Sound ...), Attribut "nontransactional", Interrupt-Vektor, Netzwerktreiber, 0.5 GB Seitentabellen ... > 32 MB Physikalische Kacheln: - mapped oder unmapped. Verteilte Betriebssysteme 2002, © VS Informatik, Uni Ulm 14 10.10 Stationsobjekt Clusterobjekt: - Einmal pro Cluster vorhanden, - Enthält unter anderem den Stationsarray. Stationsobjekt liefert den lokalen Kontext: - thisStation Aktuell ausführende Transaktion, Eingehängte Transaktionen, Focus- und Maus-Viewer, System.out Viewer, Standardtreiber, IP-Adresse, Desktop, Verzeichnisse, thisCluster.station[ Station# ]. - User, Public, Kernel. "System.out" übersetzt in "thisCluster.Station[ Station# ].out" Verteilte Betriebssysteme 2002, © VS Informatik, Uni Ulm 15 10.11 Verkettung der Heapblöcke ... Wurzelobjekt. ObjectType Basisklassen. extends Klassen. < Interface > CodesegType Type of InterfaceType ArrayType KlassType < Array > < Klasse > extends Instanzen => Verteilte Betriebssysteme 2002, © VS Informatik, Uni Ulm Methode Arrayvariable Instanzobjekt 16 10.12 Doppelköpfiges Objektformat im Heap Objektformat im Heap: - Referenzen " links" vom Header, - Variablen " rechts" vom Header. Header im Inneren des Heap-Blockes: - Entspricht der Klasse "java.lang.object", An abgeleitete Objekte vererbt, Anker für die Backchain, Flags & Längenfelder, Nächster Heapblock Objektklasse. Flagwort im Header: - Memory Modes, - Stopper. Ist des letzte Bit eines Referenzwortes gesetzt, so wird damit das Ende des Referenzbereichs markiert (Stopper) und der Header folgt. Verteilte Betriebssysteme 2002, © VS Informatik, Uni Ulm 17 10.13 Implementierung von Interfaces Felder im Klassendeskriptor: - Statische Variablen der Klasse, Referenz auf die Klasse "ClassDeskriptor", Unmittelbare Elternklasse zum erben, Referenz auf dynamische Methoden, Eigene statische Methoden, Eigene Referenzvariablen, Referenzen auf Strings, Importierte Klassen. Code Klasse Interf. Interface-Deskriptoren machen eine Methoden-Untermenge verfügbar: - Zusätzlich zu Klassenfeldern eine Referenz auf die implementierende Klasse, In Java nur dynamische Methoden und Konstanten im Interface, Im Prinzip aber allgemeine Mehrfachvererbung, Interfaces evtl. auf Klasse casten, Interface-Variablen sind 16 Bytes groß & zeigen auf Interf. & Instanz. Verteilte Betriebssysteme 2002, © VS Informatik, Uni Ulm 18 10.14 Objektidentifikation in einer beliebigen DSM-Seite Problemstellung: - Ein Page-Fault liefert eine Byteadresse. Welches Objekt ist davon betroffen? Nützlich für Werkzeuge zur Analyse des Speicherkonfliktverhaltens, Nützlich zur komprimierten Übertragung von Speicherseiten, bzw. zur Übertragung von Einzelobjekten. Lösung: - "R-Speicherseiten" enthalten als erstes Wort eine Referenzvariable, Alle R-Speicherseiten sind in der Seitentabelle markiert Am Anfang einer R-Seite beginnend wird die Seite sequentiell durchsucht, Finden wir einen Stopper so haben wir den Anfang eines Objektes gefunden, Ab hier kann von einem Objekt zum nächsten gesprungen werden, Solange bis das zu unserer Adresse passende Objekt gefunden ist. - Verteilte Betriebssysteme 2002, © VS Informatik, Uni Ulm - - + - - + - 19 10.15 Freispeichersammlung und Relozierung Virtualisierung durch MMU: - Derzeit 4 Gigabytes großer Heap - 4 Megabytes für Seitentabellen - Verwaltung der Seitenattribute Heap Objekt Referenzen Garbage Collection mit Backchain: - Verkettung der Referenzen auf ein Objekt Objekte mit leerer Backchain sind Garbage Inkrementelle Freispeichersammlung Automatisch und im ganzen Cluster Sammlung nur mit leerem Stack Zyklenerkennung Off-Line ... Backchain Relozierung: - Verschieben eines Objektes im Heap Referenzen mithilfe der Backchain anpassen Zum Zwecke der Speicherdefragmentierung Zur Speicherentflechtung bei False-Sharing Verteilte Betriebssysteme 2002, © VS Informatik, Uni Ulm 20 10.16 False-Sharing von DSM-Objekten Grundphänomen in seitenbasierten DSM-Systemen: - Zwei Objekte liegen auf derselben Speicherseite, Zugriffe erfolgen von verschiedenen Knoten, Die Seite wird unnötig oft transportiert, Exakte Definition schwierig ... Speicherentflechtung Verteilte Betriebssysteme 2002, © VS Informatik, Uni Ulm 21 10.17 Orthogonale Persistenz Es besteht ein Namensdienst für Objekte, aber kein Dateisystem. Konzeptuell wird der DSM-Cluster nie abgeschaltet. Alle noch referenzierbaren Daten sind persistent. Stationen verlassen den Cluster und treten wieder bei. Import & Export von serialisierten Objekten ist optional. Zwischen verschiedenen gleichzeitig aktiven DSM werden Kopien von serialisierten Objekten ausgetauscht => Verteilte Betriebssysteme 2002, © VS Informatik, Uni Ulm 22 10.18 Page Server (Skibicki & Frenz) Liefert den Hintergrundspeicher für den persistenten Heap. Off-Line Freispeichersammlung und Relozierung. Anmeldung für neu hinzukommende Stationen. Periodische Komplettierung des Heap-Abbildes. Sichert konsistente Heap-Images: ~ Minimale Konsistenzverzögerung Beantworten von Page-requests Abschalten des DSM-Heaps Wiederanlauf im Fehlerfall Mithören am Netz 30 Mbytes / sec ... Clusterbetrieb ist auch ohne Server möglich. Ausnahmen für "lazy Pages". Verteilte Betriebssysteme 2002, © VS Informatik, Uni Ulm 23 10.19 Native Java Compiler (M. Schöttner) Java Source nach native i486: < 200 kByte JVM Bytecode, > 10000 Zeilen / sec. Direkte Übersetzung in den DSM: - Binden & Laden zur Compilationszeit, - Frühe Initialisierung von Klassen, - Serialisierung entfällt. Direkte Programmierung der HW: - Compilerklasse “Magic” & “pMapper”, - “return” sequenz für Interruptmethoden. - inline assembly code … Java Übersetzung ist umständlich: - Zyklisches Importieren & Initialisieren, - Polymorphien und Interfaces, Multipass compiler Verteilte Betriebssysteme 2002, © VS Informatik, Uni Ulm 24 10.20 Bewertung Pro: - kompakt, schnell, übersichtlich, ubiquitär. Contra: - Fehlende Fairness, Java Allozierungsstrategie, Rücksetzbarkeit von Grafikausgaben, False-Sharing Situationen schwer erkennbar, Schreibkonflikte im Heap wegen Backchain ... Optimierungspotentiale: - Objekt-Aufsatz zur parallelen Programmierung, Verbesserte Strategie zur Konfliktauflösung, Alternative Speicherverkettung, Explizite Variablenallozierung, Optimierender Compiler, Fairnessprotokoll, 64 Bit Adressen ... Verteilte Betriebssysteme 2002, © VS Informatik, Uni Ulm 25