+--------------------> Proseminar
|
|           Konzepte der parallelen Programmierung
|
|
|                   Verteilte Systeme
|
|                Netzwerkbetriebssysteme, 
|                Verteilte Betriebssysteme, 
|                Topographie
|
|                     Marc Schanne
|                       24.01.96
|
v

Inhaltsverzeichnis

  1. Allgemeines
    1. Definitionsversuch Verteiltes System
    2. Einsatzgebiete
    3. Vor- und Nachteile Verteilter Systeme
      Vorteile gegenüber Mainframe-Welt
      Vorteile gegenüber unabhängigen PCs
      Nachteile verteilter Systeme
  2. Topographie
    1. Hardware
    2. Logische Topographie
    3. Klassifizierung
  3. Netzwerkbetriebssystem
  4. Verteiltes Betriebssystem
    1. Transparenz
    2. Flexibilität
    3. Zuverlässigkeit
    4. Performance
    5. Skalierbarkeit
  5. Beispiele
  6. Bibliographie

1. Allgemeines

1.1 Definitionsversuch Verteiltes System

Grundlegend für die weiteren "Uberlegungen soll hier eine lockere Begriffsdefinition für Verteilte Systeme" gegeben werden: Ein verteiltes System ist eine Sammlung voneinander unabhängiger Computer, die dem Benutzer des Systems den Eindruck vermitteln, es handle sich um einen einzigen Computer."[7]

1.2 Einsatzgebiete

Aus dieser recht allgemein gehaltenen Beschreibung für verteilte Systeme folgt eine Vielzahl von Einsatzgebieten. Ein paar Beispiele - Ort und Anwendung - sollen hier skizziert werden:

1.3 Vor- und Nachteile Verteilter Systeme

Vorteile gegenüber Mainframe-Welt

Vorteile gegenüber unabhängigen PCs

Nachteile verteilter Systeme

2 Topographie

2.1 Hardware

Die Hardware eines verteilten Systems kann durch einen Graphen dargestellt werden. Ein zelne Rechner/ Prozessoren (Hier eine Trennung vorzunehemen ist nicht sinnvoll. Alle Verbindungsstrukturen lassen sich sowohl auf autonome Rechner als auch auf einzelnen Prozessoren anwenden.) werden als Knoten und die sie verbindenden Kommunikations kanäle als Kanten gezeichnet. Die Struktur eines Graphen bezeichnet man als Topographie.

Im Folgenden werden einige spezielle regelmässige Verbindungsstrukturen vorgestellt. Diese werden aber (insbesondere bei grösseren Netzen) selten in Reinform aufgebaut. Es meist sinnvoller die Verbindungsstruktur am Nachrichtenaufkommen der einzelnen Rechner auszurichten. So entsteht eine unregelmässige Topographie. Abbildung 1: Busstruktur Abbildung 2: Ring mit 5 Elementen

Abbildung 6: Binärbaum, Stern und Kette Abbildung 7: Kreuzschienenverteiler für n = 7 Ein-/ Ausgänge Abbildung 8: Delta-Schalter (durchgeschaltet, gekreuzt) und Delta-Netz mit 8 Rechnern

2.2 Logische Topographie

Analog zur physikalischen Topographie der Hardware kann man auch für die Software, für Prozesse (einfache Applikationen, Serverdienste, etc.) und deren Kommunikationskanäle (Nachrichten) eine Topographie erstellen.

Im `Idealfall' ist diese unabhängig von den physikalischen Gegebenheiten. Dieses Ziel wird aber von den meisten verteilten Systemen nicht vollständig erreicht. Hardwareabhängige Prozesse, die zum Beispiel nur auf einem speziellen Prozessor laufen oder eine bestimmtes Peripheriegerät bedienen, oder Prozesse, die nicht nur über Nachrichten, sondern auch über gemeinsam genutzte Daten im gleichen Speicher kommunizieren, sind örtlich gebunden. Ih re Verteilung wird damit eingeschränkt.

Wenn man die weitgehend flexible logische Topographie auf die Hardware abbildet, entsteht eine Konfiguration des verteilten Systems.

2.3 Klassifizierung

Zusätzlich zur Verbindungsstruktur der Hardware kann man eine weitere Einteilung für parallele und verteilte Computersysteme treffen, die sich haupsächlich auf die Möglichkeiten beim Speicherzugriff stützt: 1. Multiprozessorsysteme (eng gekoppelt: gemeinsam genutzter Speicher) 2. Multirechnersysteme (lose gekoppelt: privater Speicher, autonome Rechner)

Durch ähnliche Klassifikation im Softwarebereich lassen sich 3 wesentliche Kombinationen bilden:

3 Netzwerkbetriebssystem Ein Netzwerkbetriebssystem ist mehr eine zusätzliche Betriebssystemfunktionsbibliothek als ein vollständiges Betriebssystem. Im Folgenden ist seine Funktionalität kurz zusam mengefasst:

4 Verteiltes Betriebssystem

Ziel eines verteilten Betriebssystems ist es, den Eindruck eines `einzigen' Timesharing- Systems zu vermitteln und nicht die Sammlung einzelner Maschinen im Netz. Dieses Ziel wird selten völlig erreicht, und nicht für jede Anwendung ist es auch wirklich sinnvoll.

Im Folgenden sind die wichtigsten Aspekte beim Systemdesign zusammengestellt. Es werden Vor- und Nachteile, sowie Möglichkeiten der Umsetzung angesprochen:

4.1 Transparenz

Transparenz, die einheitliche Systemsicht, kann auf zwei verschiedenen Ebenen realisiert werden. Am einfachsten ist es, die Verteilung vor dem Anwender zu verbergen. Wo, das heisst auf welchen Prozessoren, oder wie (Parallelität) ein Befehl ausgeführt wird, ist für den Benutzer uninteressant.

Auf einer niedrigeren Ebene kann man das System auch für Programme transparent erscheinen lassen. Das heisst, die Schnittstelle für Systemaufrufe kann so entworfen werden, dass die Existenz mehrerer Prozessoren nicht ersichtlich ist.

Transparenz (für Anwender und Programme) kann man auf mehrere Aspekte eines verteilten Systems beziehen:

4.2 Flexibilität

Um das zweite Ziel, die Flexibilität des Systems, zu erreichen, tauscht man die derzeit weit verbreiteten monolithischen Kernel (z.B. UNIX), die die gesamte Betriebssystemfunktiona lität enthalten, gegen Microkernel und zusätzliche Server aus.

Der Mikrokernel bietet nur minimale Dienste, wie Interprozesskommunikation, grund legende Speicherverwaltung, Prozessverwaltung, Scheduling auf unterster Ebene und Low- Level-I/O-Routinen. Alle anderen Betriebssystemdienste werden als Server auf Benutzere- bene realisiert. Daraus ergibt sich eine modulare Struktur mit klaren Schnittstellen, die Implementierung, Installation, Fehlersuche, Ergänzen und Entfernen von Komponenten er- leichtert - das System flexibel macht.

4.3 Zuverlässigkeit

Die Zuverlässigkeit eines verteilten Systems soll in drei Aspekte gegliedert werden: 1.Die Verfügbarkeit, die Zeit, während das System zur Verfügung steht, kann bei einem verteilten System durch Redundanz kritischer Komponeten und durch die Ver teilung allgemein verbessert werden. Wenn eine Einzelkomponente ausfällt, bleibt das ganze System intakt. 2.Sicherheit von Daten und Ressourcen ist ein viel schwerwiegenderes Problem. So ist es in einem verteilten System z.B. für einen Server schwierig festzustellen, ob eine Anfrage wirklich vom angegebenen Absender stammt und ob die Operation erlaubt ist. Hier ist beim Systemdesign grösste Sorgfalt geboten. 3.Der dritte Aspekt der Zuverlässigkeit ist die Fehlertoleranz. Was passiert, wenn z.B. ein Server abstürzt und dann sofort neu bootet? Stürzen mit ihm auch die Anwendungen ab? In verteilten Systemen wird versucht, solch einen Fehler vor dem Anwender zu verbergen, so dass das System - vielleicht mit Performaceverlust - dennoch weiterläuft.

4.4 Performance

Um ein praktisch nutzbares System zu entwickeln, muss aber ausser den vorgenannten Aspek ten auch die Performance beachtet werden.

Hier kann es in einem verteilten System zu einer Vielzahl von Problemen kommen. Es muss sowohl der erhöhte Verwaltungsaufwand (im Vergleich zum Einzelprozessor), die Kommunikation zwischen parallelen Prozessen (Antwortezeiten), die Netzwerkkapazität als auch die Ausnutzung des verteilten Systems beachtet werden. Ein Ausweg ist die Granularität der einzelnen Operationen zu betrachten: 1.Fein-granulierte Parallelität: Es existiert eine grosse Anzahl kleiner Berechnun gen mit viel Interaktion. Bei Verteilung der Einzelberechnungen über mehrere Rechner wäre eine erhöhte Kom munikation über das Netzwerk die Folge und die Vorteile der parallen Ausführung schnell aufgebraucht. Hier ist eine Verteilung deshalb wenig sinnvoll. 2.Grob-granulierte Parallelität: Es gibt umfangreiche Berechnungen, eine geringe Interaktionsrate und wenig Daten. Hier ist die Verteilung, eine Ausführung der umfangreicheren Berechnungen auf schnel leren Prozessoren - auch weiter weg - günstiger.

4.5 Skalierbarkeit

Heutige verteilte Systeme sind für den Einsatz mit einigen hundert CPUs ausgelegt. Zukünf tige Systeme werden vielleicht eine ganz andere Grössenordung besitzen. Schon beim Sy stemdesign kann man dies berücksichtigen. Um Engpässe zu vermeiden, sollte man deshalb auf zentralisierte Daten/ Komponenten/ Algorithmen verzichten.

5 Beispiele

Zum Abschluss soll nun noch eine kleine, nichtrepräsentative Auswahl an Netzwerkbetriebs- systemen, verteilten Betriebssystemen und Programmierumgebungen kurz vorgestellt wer den. Für weitere Informationen sei auf entsprechende Literatur verwiesen.

Bibliographie

  1. Bräunl, Th.: Parallele Programmierung. Eine Einführung. pp. 39-56. Braunschweig, Wiesbaden: Vieweg, 1993.
  2. Champine, G. A.: M.I.T. project Athena. A model for distributed campus computing. DEC, 1991.
  3. Geist, A., Beguelin, A., et al.: PVM: Parallel Virtual Machine. A Users' Guide and Tutorial for Networked Parallel Computing. Cambridge: M.I.T. Press, 1994.
  4. Herrtwich, R. G. und Hommel, G.: Kooperation und Konkurrenz. Nebenläufige, verteilte und echtzeitabhängige Programmsysteme. pp. 353-376. Berlin, Heidelberg: Springer-Verlag, 1989.
  5. Hildebrand, D.: An Architectural Overview of QNX. QNX Software Systems LTD.
  6. Müller-Stoy, P. (Hg): Architektur von Rechensystemen (Tagungsband). pp. 415-427. VDE-Verlag, 1990.
  7. Tanenbaum, A. S.: Verteilte Betriebssysteme. pp. 15-50. München: Prentice Hall PTR, 1995.
  8. ebd. pp. 441-500.
  9. ebd. pp. 501-550.
  10. ebd. pp. 551-602.
  11. ebd. pp. 603-662.
  12. Plan 9 from AT&T Bell Lab. FAQ. AT&T, 1995.
  13. http://www.novell.com
  14. news:comp.os.qnx

----------------------------------------------------------------
[home] [research] [guestbook] [contact]                   (c) SM