[Inhaltsverzeichnis] [Nächstes Kapitel]

1. Einleitung

Nach der Ablösung von Großrechnersystemen durch vernetzte Workstations sind verteilte Systeme alltäglich geworden. Dabei beschränkt sich die Verteiltheit dieser Systeme meistens auf verteilte Dateisysteme. Jeder Rechner, oder eine kleine Anzahl von Servern, ist für einen kleinen Teil in der Dateisystemhierarchie verantwortlich, und mittels NFS [10] werden alle kleinen Teile zu einem Ganzen zusammengesetzt.

Die Programmierung verteilter Applikationen, die gleichzeitig kooperativ auf mehreren Rechnern des Netzes laufen, ist allerdings noch immer eine Aufgabe für Spezialisten. Verteilte Anwendungen müssen zwangsweise Daten über Rechnergrenzen hinweg austauschen. Bei diesem Austausch muß der Programmierer ständig von Hand auf Kommunikationsprimitiven zugreifen, stets müssen Spezial- und Fehlerfälle abgeprüft werden. Kurzum, für effektive Programmierung verteilter Anwendungen existiert bislang noch unzureichende Unterstützung.

Dabei gibt es genügend Beispiele, in denen verteilte Anwendungen von Vorteil sind. Bei Überlastung eines Rechners können Teile von Anwendungen auf andere Rechner verschoben werden. Rechenintensive Programme können auf mehreren Rechnern parallel laufen und somit ihre Antwortzeit deutlich verkürzen. Sicherheitskritische Dienste können von mehreren Rechnern angeboten werden, damit diese Dienste auch bei Ausfall eines Teils des Netzwerks erreichbar sind.

Es wurden schon mehrere Möglichkeiten erdacht, diese Unterstützung zu liefern. Bestehende Systeme haben jedoch entweder den Nachteil, daß sich der Aufruf einer nicht-lokalen Prozedur von dem Aufruf einer lokalen Prozedur unterscheidet, oder daß der Zugriff auf lokale Prozeduren unnötig ineffizient ist.

Emerald [3] ist ein weiterer Versuch, die verteilte Programmierung zu unterstützen. Das Konzept einer konsequent objektorientierten Umgebung, in der jedes Konstrukt von einer einfachen Zahl bis hin zu einer kompletten Applikation prinzipiell vom gleichen abstrakten Typ "Objekt" ist [1], wird in Emerald auf verteilte Systeme übertragen. Die Semantik der Sprache unterscheidet nicht zwischen lokalen und entfernten Objekten, so daß das Netzwerk für den Programmierer vollkommen transparent ist. Gleichzeitig sind alle Objekte beliebiger Größe beweglich und können jederzeit auf Wunsch des Programmes oder nach Entscheidung eines Betriebssystemes auf andere Rechner verschoben werden [2]. Dabei wird in Emerald versucht, der inhärente Performanceverlust dieses allgemeinen Konzeptes durch Intelligenz in Compiler und Betriebssystem sowie durch enge Zusammenarbeit beider Teile zu vermindern.

[Inhaltsverzeichnis] [Nächstes Kapitel]


Frank Pilhofer <fp -AT- fpx.de> Back to the Homepage
Last modified: Fri Mar 31 18:41:06 1995