Verteiltes Betriebssystem

A verteiltes Betriebssystem ist Systemsoftware über eine Sammlung unabhängiger Software, vernetzt, kommunizierenund physisch getrennte Rechenknoten. Sie kümmern sich um Jobs, die von mehreren CPUs gewartet werden.[1] Jeder einzelne Knoten enthält eine bestimmte Software -Teilmenge des globalen Aggregats -Betriebssystems. Jede Untergruppe ist eine Komposit aus zwei verschiedenen Dienstleistern.[2] Das erste ist ein allgegenwärtiger Minimal Kernel, oder Mikrokernel, das steuert die Hardware dieses Knotens direkt. Zweitens ist eine höhere Sammlung von höherer Ebene von Systemmanagementkomponenten Das koordiniert die individuellen und kollaborativen Aktivitäten des Knotens. Diese Komponenten abstrakten Mikrokernel -Funktionen und unterstützen Benutzeranwendungen.[3]

Die Sammlung von Microkernel und der Management -Komponenten arbeiten zusammen. Sie unterstützen das Ziel des Systems, mehrere Ressourcen und Verarbeitungsfunktionen in ein effizientes und stabiles System zu integrieren.[4] Diese nahtlose Integration einzelner Knoten in ein globales System wird als bezeichnet als Transparenz, oder Einzelsystembild; Beschreibung der Illusion, die Benutzer des Erscheinungsbilds des globalen Systems als einzelne Computereinheit zur Verfügung stellt.

Beschreibung

Struktur des monolithischen Kernel-, Microkernel- und Hybrid-Kernel-basierten Betriebssystems

Ein verteiltes Betriebssystem liefert die wesentlichen Dienste und Funktionen, die eines Betriebssystems benötigen, fügt jedoch Attribute und Besonderes hinzu Konfigurationen Damit zusätzliche Anforderungen wie erhöhte Skala und Verfügbarkeit unterstützt werden können. Für einen Benutzer funktioniert ein verteiltes Betriebssystem ähnlich wie ein einzelner Knoten. monolithisches Betriebssystem. Das heißt, obwohl es aus mehreren Knoten besteht, erscheint es Benutzern und Anwendungen als einzelner Knoten.

Die Trennung von Funktionen auf minimaler Systemebene von zusätzlichen modularen Diensten auf Benutzerebene liefert eine ""Trennung von Mechanismus und Politik". Mechanismus und Politik können einfach als" was etwas getan "im Vergleich zu" Wie etwas getan wird "interpretiert werden. Diese Trennung erhöht die Flexibilität und Skalierbarkeit.

Überblick

Der Kernel

Bei jedem Gebietsschema (Normalerweise ein Knoten) Der Kernel bietet einen minimal vollständigen Satz von Dienstprogrammen auf Knotenebene, die für den Betrieb der zugrunde liegenden Hardware und Ressourcen eines Knotens erforderlich sind. Diese Mechanismen umfassen Allokation, Management und Disposition der Ressourcen, Prozesse, Kommunikation und der Ressourcen eines Knotens Input-Output Management -Support -Funktionen.[5] Innerhalb des Kernels ist das Kommunikations-Subsystem für ein verteiltes Betriebssystem von größter Bedeutung.[3]

In einem verteilten Betriebssystem unterstützt der Kernel häufig minimale Funktionen, einschließlich niedriger Ebene Adressraum Management, Faden Management und Interprozesskommunikation (IPC). Ein Kernel dieses Designs wird als als bezeichnet Mikrokernel.[6][7] Die modulare Natur verbessert die Zuverlässigkeit und Sicherheit, wesentliche Merkmale für ein verteiltes Betriebssystem.[8]

General overview of system management components that reside above the microkernel.
Systemverwaltungskomponentenübersicht

Systemmanagement

Systemverwaltungskomponenten sind Softwareprozesse, die den Knoten definieren Richtlinien. Diese Komponenten sind Teil des Betriebssystems außerhalb des Kernels. Diese Komponenten bieten Kommunikations-, Prozess- und Ressourcenmanagement, Zuverlässigkeit, Leistung und Sicherheit. Die Komponenten stimmen mit den Funktionen eines Single-Car-Systems überein und fügen die in einer verteilte Umgebung erforderliche Transparenz hinzu.[3]

Die verteilte Art des Betriebssystems erfordert zusätzliche Dienste, um die Verantwortung eines Knotens gegenüber dem globalen System zu unterstützen. Darüber hinaus akzeptieren die Systemverwaltungskomponenten die "defensiven" Verantwortung für Zuverlässigkeit, Verfügbarkeit und Persistenz. Diese Verantwortlichkeiten können miteinander in Konflikt stehen. Ein konsistenter Ansatz, eine ausgewogene Perspektive und ein tiefes Verständnis des Gesamtsystems kann zur Identifizierung beitragen Rückgänge abnehmen. Die Trennung von Politik und Mechanismus mildert solche Konflikte.[9]

Zusammenarbeit als Betriebssystem

Die Architektur und das Design eines verteilten Betriebssystems müssen sowohl einzelne Knoten- als auch globale Systemziele realisieren. Architektur und Design müssen in einer Weise angegangen werden, die mit der Trennung von Politik und Mechanismus übereinstimmt. Auf diese Weise versucht ein verteiltes Betriebssystem, ein effizientes und zuverlässiges verteiltes Computergerüst bereitzustellen, das ein absolutes minimales Benutzerbewusstsein für die zugrunde liegenden Befehls- und Kontrollbemühungen ermöglicht.[8]

Die mehrstufige Zusammenarbeit zwischen einem Kernel und den Systemverwaltungskomponenten sowie zwischen den verschiedenen Knoten in einem verteilten Betriebssystem ist die funktionale Herausforderung des verteilten Betriebssystems. Dies ist der Punkt im System, der eine perfekte Harmonie des Zwecks aufrechterhalten und gleichzeitig eine vollständige Absicht der Implementierung beibehalten muss. Diese Herausforderung ist die Gelegenheit des verteilten Betriebssystems, die Grundlage und das Rahmen für ein zuverlässiges, effizientes, verfügbares, robustes, erweiterbares und skalierbares System zu erstellen. Diese Gelegenheit hat jedoch sehr hohe Komplexität.

Der Preis der Komplexität

In einem verteilten Betriebssystem könnte der außergewöhnliche Grad der inhärenten Komplexität das gesamte System für jeden Benutzer leicht zu einem Anathema machen. Daher muss der logische Preis für die Realisierung eines verteilten Betriebssystems berechnet werden, um in vielen Bereichen und in vielen Ebenen große Mengen an Komplexität und in vielen Ebenen zu überwinden. Diese Berechnung umfasst die Tiefe, Breite und Auswahl an Konstruktionsinvestitionen und Architekturplanung, die bei der Erreichung der bescheidensten Implementierung erforderlich sind.[10]

Diese Konstruktions- und Entwicklungsüberlegungen sind kritisch und unversöhnlich. Beispielsweise ist ein tiefes Verständnis des allgemeinen Architektur- und Entwurfsdetails eines verteilten Betriebssystems zu einem außergewöhnlich frühen Punkt erforderlich.[1] Eine anstrengende Auswahl an Konstruktionsüberlegungen ist der Entwicklung eines verteilten Betriebssystems inhärent. Jede dieser Entwurfsüberlegungen kann möglicherweise viele der anderen in erheblichem Maße beeinflussen. Dies führt zu einer massiven Anstrengung im ausgewogenen Ansatz, in Bezug auf die individuellen Designüberlegungen und viele ihrer Permutationen. Als Hilfe bei dieser Bemühungen verlassen sich die meisten auf dokumentierte Erfahrungen und Forschungen in der verteilten Rechenleistung.

Geschichte

Forschungs- und Experimentierbemühungen begannen in den 1970er Jahren ernsthaft und wurden in den 1990er Jahren fortgesetzt, wobei Ende der 1980er Jahre konzentriert wurde. Während dieses Zeitraums wurde eine Reihe verteilter Betriebssysteme eingeführt. Nur sehr wenige dieser Implementierungen erzielten jedoch sogar bescheidenen kommerziellen Erfolg.

Grundlegende und wegweisende Implementierungen primitiver verteilter Betriebssystemkomponentenkonzepte datieren bis in die frühen 1950er Jahre.[11][12][13] Einige dieser individuellen Schritte konzentrierten sich nicht direkt auf verteiltes Computer, und zu dieser Zeit haben viele ihre wichtigen Auswirkungen möglicherweise nicht erkannt. Diese Pionierbemühungen legten wichtige Grundlagen und inspirierten die fortgesetzte Forschung in Bereichen im Zusammenhang mit verteilten Computing.[14][15][16][17][18][19]

Mitte der 1970er Jahre führte die Forschung zu wichtigen Fortschritten im verteilten Computer. Diese Durchbrüche bildeten eine solide, stabile Grundlage für Bemühungen, die bis in die neunziger Jahre fortgesetzt wurden.

Die beschleunigende Verbreitung von Mehrprozessor und Multi-Core-Prozessor Die Systemforschung führte zu einem Wiederaufleben des verteilten OS -Konzepts.

1950er Jahre

Die Dyseac

Eine der ersten Bemühungen war die Dyseac, ein Allzweck synchron Computer. In einer der frühesten Veröffentlichungen der Verband für Rechenmaschinen, im April 1954 ein Forscher am Nationales Büro für Standards- Jetzt der nationale Institut für Standards und Technologie (NIST) - präsentierte eine detaillierte Spezifikation der DysAC. Die Einführung konzentrierte sich auf die Anforderungen der beabsichtigten Anwendungen, einschließlich flexibler Kommunikation, aber auch andere Computer:

Schließlich könnten die externen Geräte sogar andere umfassende Computer enthalten, die dieselbe digitale Sprache wie die DyseAC verwenden. Zum Beispiel könnten die SeaC oder andere Computer ähnliche Computer mit der DysEAC und durch die Verwendung koordinierter Programme zur Zusammenarbeit in der gegenseitigen Zusammenarbeit bei einer gemeinsamen Aufgabe hergestellt werden. Der Computer kann verwendet werden, um die Vielfalt zu koordinieren Aktivitäten aller externen Geräte in einen effektiven Ensemble -Betrieb.

-Alan L. Leiner, Systemspezifikationen für die DYSEAC

In der Spezifikation wurde die Architektur von Multikomputersystemen erörtert und Peer-to-Peer statt Master-Sklave bevorzugt.

Jedes Mitglied einer solchen miteinander verbundenen Gruppe separater Computer ist jederzeit kostenlos, um Sondersteuerbestellungen an einen seiner Partner im System zu initiieren und zu versenden. Infolgedessen kann die Aufsichtskontrolle über die gemeinsame Aufgabe zunächst locker im gesamten System verteilt und dann vorübergehend auf einen Computer konzentriert oder sogar schnell von einer Maschine zur anderen weitergegeben werden, wenn die Notwendigkeit entsteht. … Die verschiedenen beschriebenen Unterbrechungseinrichtungen basieren auf der gegenseitigen Zusammenarbeit zwischen dem Computer und der externen Geräte-Tochtergesellschaft und spiegeln nicht lediglich eine einfache Master-Sklaven-Beziehung wider.

-Alan L. Leiner, Systemspezifikationen für die DYSEAC

Dies ist eines der frühesten Beispiele eines Computers mit verteilter Steuerung. Das Abteilung der Armee Berichte[20] Zertifizierte es zuverlässig und hat alle Akzeptanztests im April 1954 durchgeführt. Es wurde im Mai 1954 abgeschlossen und pünktlich geliefert. Dies war ein "tragbarer Computer", untergebracht in einem Traktor-Anhänger, mit 2 Begleiter und Fahrzeugen und 6 Tonnen Kühlung Kapazität.

Lincoln TX-2

Beschrieben als experimentelles Eingabe-Output-System, die Lincoln TX-2 betonte flexible, gleichzeitig operative Eingabe-Output-Geräte, d. H. Multiprogrammierung. Das Design des TX-2 war modular und unterstützte ein hohes Maß an Modifikation und Expansion.[12]

Das System verwendete die Mehrsequenzprogrammtechnik. Diese Technik erlaubte mehrere Programmzähler an jeden Associate mit einer von 32 möglichen Sequenzen des Programmcodes. Diese explizit priorisierten Sequenzen könnten gleichzeitig verschachtelt und ausgeführt werden, was nicht nur die Berechnung im Prozess, sondern auch den Steuerfluss von Sequenzen und das Umschalten von Geräten beeinflusst. Viel Diskussion im Zusammenhang mit der Gerätesequenzierung.

Ähnlich wie bei DyseAC können die TX-2 separat programmierten Geräte gleichzeitig funktionieren und zunehmen Durchsatz. Die volle Leistung der zentralen Einheit stand jedem Gerät zur Verfügung. Das TX-2 war ein weiteres Beispiel für ein System, das eine verteilte Steuerung aufwies, seine zentrale Einheit hat keine dedizierte Kontrolle.

Interkommunizierende Zellen

Eine frühe Anstrengung bei der Abstraking des Gedächtnizugriffs war interkommunizierende Zellen, bei denen eine Zelle aus einer Sammlung von zusammengesetzt war Erinnerung Elemente. Ein Gedächtniselement war im Grunde eine binäre Elektronik Flip Flops oder Relais. In einer Zelle gab es zwei Arten von Elementen, Symbol und Zelle. Jede Zellstruktur speichert Daten in einem Saite von Symbolen, bestehend aus a Name und ein Satz von Parameter. Informationen werden durch Zellverbände verknüpft.[13]

Die Theorie behauptete, dass das Ansprechen ein verschwenderischer und nicht-velerbarer Fall ist Indirektionsstufe. Informationen wurden auf zwei Arten zugegriffen, direkt und regenal. Direkter Abruf akzeptiert einen Namen und gibt einen Parametersatz zurück. Kreuzregen Projekte durch Parametersätze und gibt eine Reihe von Namen zurück, die die angegeben sind Teilmenge von Parametern. Dies war ähnlich wie bei einem modifizierten Hash-tabelle Datenstruktur das erlaubte mehrere Werte (Parameter) für jeden Schlüssel (Name).

Das Zellgedächtnis hätte viele Vorteile:
Writing bullet.svg Ein Hauptteil der eines Systems eines Systems Logik ist innerhalb der in den Zellen gespeicherten Informationen verteilt,
Writing bullet.svg Dieser Informationsabfluss wird etwas von dem Akt des Speicherns und Abrufens geleitet.
Writing bullet.svg Die Zeit, die für die Lagerung erforderlich ist und Abruf ist meistens Konstante und völlig unabhängig von der Größe und dem Füllfaktor des Speichers
Writing bullet.svg Zellen sind logisch nicht zu unterscheiden, was sie beide flexibel zu verwenden und relativ einfach zu verlängern

Dies Aufbau war ideal für verteilte Systeme. Die konstante Projektion durch das Gedächtnis zum Speichern und Abrufen war von Natur aus Atomic und exklusiv. Die intrinsischen verteilten Eigenschaften des Zellgedächtnisses wären von unschätzbarem Wert. Die Auswirkungen auf die Benutzer, Hardware-/Gerät, oder Anwendungsprogrammierschnittstellen war indirekt. Die Autoren erwägen verteilte Systeme und gaben an:

Wir wollten hier die grundlegenden Ideen eines verteilten Logiksystems mit ... dem makroskopischen Konzept des logischen Designs, weg vom Scannen, von der Suche, von der Adressierung und des Zählens, gleichermaßen wichtig präsentieren. Wir müssen uns um jeden Preis von den Belastungen detaillierter lokaler Probleme befreien, die nur eine Maschine auf der Evolutionsskala von Maschinen niedrig sind.

-Chung-yeol (C. Y.) Lee, Interkommunizierende Zellen, Basis für einen verteilten Logikcomputer

Grundarbeit

Kohärente Speicherabstraktion

  Algorithmen zur skalierbaren Synchronisation auf gemeinsamen Memory-Multiprozessoren [21]

Dateisystem Abstraktion

 Messungen eines verteilten Dateisystems[22]
 Speicherkohärenz in gemeinsamen virtuellen Speichersystemen [23]

Transaktionsabstraktion

 Transaktionen
  SAGAS [24]

 Transaktionsspeicher
 Komponierbare Speichertransaktionen[25]
 Transaktionsgedächtnis: architektonische Unterstützung für lockfreie Datenstrukturen [26]
 Software-Transaktionsspeicher für dynamische Datenstrukturen[27]
 Software -Transaktionsspeicher[28]

Persistenz Abstraktion

 Ozeanstore: Eine Architektur für den anhaltenden Speicher für globale Maßstäbe [29]

Koordinatorabstraktion

  Gewichtete Abstimmung für replizierte Daten [30]
  Konsens in Gegenwart einer partiellen Synchronität [31]

Zuverlässigkeit Abstraktion

 Vernunftprüfungen
 Das byzantinische Generäle Problem [32]
 Fail-Stop-Prozessoren: Ein Ansatz zum Entwerfen fehlertoleranter Computersysteme [33]

 Wiederherstellung
 Verteilt Schnappschüsse: Globale Zustände verteilter Systeme bestimmen[34]
 Optimistische Erholung in verteilten Systemen [35]

Verteilte Computermodelle

Drei grundlegende Verteilungen

Um diesen Punkt besser zu veranschaulichen, untersuchen Sie drei Systeme Architekturen; zentralisiert, dezentralisiert und verteilt. Betrachten Sie bei dieser Prüfung drei strukturelle Aspekte: Organisation, Verbindung und Kontrolle. Die Organisation beschreibt die physikalischen Anordnungsmerkmale eines Systems. Die Verbindung deckt die Kommunikationspfade zwischen Knoten ab. Control verwaltet den Betrieb der früheren beiden Überlegungen.

Organisation

A Zentrales System hat eine Strukturebene, wobei alle Bestandteile direkt von einem einzelnen Kontrollelement abhängen. EIN dezentrales System ist hierarchisch. Die untere Ebene vereint Teilmengen der Einheiten eines Systems. Diese Entitätsuntergruppen verbinden sich wiederum auf höheren Ebenen und gipfeln letztendlich in einem zentralen Master -Element. Ein verteiltes System ist eine Sammlung autonomer Elemente ohne Konzept der Ebenen.

Verbindung

Zentralisierte Systeme verbinden die Bestandteile direkt mit einer Zentralmeistereinheit in einer Hub und sprachen. Ein dezentrales System (auch bekannt als Netzwerk System) Integriert direkte und indirekte Wege zwischen den Bestandteilen und der zentralen Entität. In der Regel wird dies als Hierarchie mit nur einem kürzesten Weg zwischen zwei beliebigen Elementen konfiguriert. Schließlich erfordert das verteilte Betriebssystem kein Muster. Direkte und indirekte Verbindungen sind zwischen zwei beliebigen Elementen möglich. Betrachten Sie die Phänomene der 1970er Jahre von “Saitenkunst" oder ein Spirographie Zeichnung als a voll verbundenes System, und die Spiders Web oder der Interstate Highway System zwischen US -Städten als Beispiele von a teilweise verbundenes System.

Kontrolle

Zentralisierte und dezentrale Systeme haben angeführt Verbindungsströme an und von der zentralen Entität, während verteilte Systeme auf willkürlichen Pfaden kommunizieren. Dies ist der entscheidende Begriff der dritten Überlegung. Bei der Kontrolle werden Aufgaben und Daten für Systemelemente zuzuordnen, die Effizienz, Reaktionsfähigkeit und Komplexität ausbalancieren.

Zentralisierte und dezentrale Systeme bieten mehr Kontrolle und lindern möglicherweise die Verabreichung durch Einschränkung der Optionen. Verteilte Systeme sind schwieriger zu steuern, skalieren jedoch besser horizontal und bieten weniger systemweite Ausfallpunkte. Die Assoziationen entsprechen den Bedürfnissen, die durch das Design, nicht jedoch durch organisatorisches Chaos, auferlegt werden

Entwurfsüberlegungen

Transparenz

Transparenz oder Einzelsystembild Bezieht sich auf die Fähigkeit einer Anwendung, das System zu behandeln, auf dem es arbeitet, ohne dass es verteilt ist, und ohne Rücksicht auf Hardware oder andere Implementierungsdetails. Viele Bereiche eines Systems können von Transparenz profitieren, einschließlich Zugang, Standort, Leistung, Benennung und Migration. Die Berücksichtigung der Transparenz wirkt sich direkt auf die Entscheidungsfindung in allen Aspekten eines verteilten Betriebssystems aus. Transparenz kann bestimmte Anforderungen und/oder Einschränkungen anderer Entwurfsüberlegungen auferlegen.

Systeme können optional gegen die Transparenz gegen unterschiedliche Grade verstoßen, um bestimmte Anwendungsanforderungen zu erfüllen. Beispielsweise kann ein verteiltes Betriebssystem eine Festplatte auf einem Computer als "C" und ein Laufwerk auf einem anderen Computer als "G:" darstellen. Der Benutzer benötigt keine Kenntnisse über Gerätetreiber oder den Standort des Laufwerks. Beide Geräte funktionieren aus Sicht der Anwendung auf die gleiche Weise. Für eine weniger transparente Schnittstelle kann die Anwendung wissen, welcher Computer das Laufwerk hostet. Transparenzdomänen:

  • Standorttransparenz - Die Standorttransparenz umfasst zwei unterschiedliche Aspekte der Transparenz, der Benennung von Transparenz und der Benutzermobilität. Die Benennung von Transparenz erfordert, dass nichts in den physischen oder logischen Verweisen auf eine Systemeinheit einen Hinweis auf den Standort der Entität oder seine lokale oder entfernte Beziehung zum Benutzer oder Anwendung offenbaren sollte. Die Mobilität von Benutzer erfordert die konsistente Referenzierung von Systementitäten, unabhängig vom Systemort, aus dem die Referenz stammt.[8]: 20
  • Zugang zu Transparenz - Lokale und entfernte Systemeinheiten müssen bei der Betrachtung der Benutzeroberfläche nicht zu unterscheiden bleiben. Das verteilte Betriebssystem behält diese Wahrnehmung durch die Exposition eines einzelnen Zugangsmechanismus für eine Systemeinheit bei, unabhängig davon, ob diese Entität für den Benutzer lokal oder fernremote ist. Transparenz schreibt vor, dass Unterschiede in den Methoden zum Zugriff auf eine bestimmte Systemeinheit - entweder lokal oder fern - für den Benutzer unsichtbar und nicht nachweisbar sind.[3]: 84
  • Migrationstransparenz - Ressourcen und Aktivitäten migrieren von einem Element zu einem anderen, das ausschließlich vom System und ohne Benutzer-/Anwendungswissen oder -akten kontrolliert wird.[36]: 16
  • Replikationstransparenz - Der Prozess oder die Tatsache, dass eine Ressource auf einem anderen Element unter der Systemsteuerung und ohne Benutzer-/Anwendungswissen oder -intervention dupliziert wurde.[36]: 16
  • Parallelitätstransparenz - Benutzer/Anwendungen sind sich der Anwesenheit/Aktivitäten anderer Benutzer nicht bewusst und nicht betroffen.[36]: 16
  • Fehlertransparenz - Das System ist für die Erkennung und Sanierung von Systemfehlern verantwortlich. Es ist kein Benutzerwissen/-akt/keine andere Aktion beteiligt, als darauf zu warten, dass das System das Problem behebt.[9]: 30
  • Leistungstransparenz - Das System ist für die Erkennung und Sanierung lokaler oder globaler Leistungsminderung verantwortlich. Beachten Sie, dass Systemrichtlinien möglicherweise einige Benutzer/Benutzerklassen/Aufgaben gegenüber anderen bevorzugen. Kein Benutzerwissen oder Interaktion. ist involviert.[8]: 23
  • Größen-/Skalentransparenz - Das System ist für die Verwaltung seiner geografischen Reichweite, der Anzahl der Knoten, der Niveau der Knotenfunktion ohne erforderliche Benutzerwissen oder Interaktion verantwortlich.[8]: 23
  • Revision Transparenz - Das System ist für Upgrades und Revisionen und Änderungen der Systeminfrastruktur ohne Benutzerwissen oder Handlungen verantwortlich.[9]: 30
  • Transparenz steuern - Das System ist für die Bereitstellung aller Systeminformationen, Konstanten, Eigenschaften, Konfigurationseinstellungen usw. in einem konsistenten Erscheinungsbild, Konnotation und Kennzeichen für alle Benutzer und Anwendungen verantwortlich.[3]: 84
  • Datentransparenz - Das System ist dafür verantwortlich, Daten für Anwendungen ohne Benutzerwissen oder Maßnahmen zu liefern, die sich darauf beziehen, wo das System es speichert.[3]: 85
  • Parallelität Transparenz - Das System ist dafür verantwortlich, jegliche Fähigkeit zu nutzen, die Ausführung von Aufgaben ohne Benutzerwissen oder Interaktion parallelisieren zu können. Wohl der schwierigste Aspekt der Transparenz und von Tanenbaum als "Heiliger Gral" für verteilte Systemdesigner beschrieben.[37]: 23–25

Interprozesskommunikation

Interprozesskommunikation (IPC) ist die Implementierung allgemeiner Kommunikation, Prozessinteraktion und Datenfluss zwischen Themen und/oder Prozesse sowohl innerhalb eines Knotens als auch zwischen Knoten in einem verteilten Betriebssystem. Die Intra-Node- und Inter-Node-Kommunikationsanforderungen steuern das IPC-Design auf niedrigem Niveau, was der typische Ansatz für die Implementierung von Kommunikationsfunktionen ist, die die Transparenz unterstützen. In diesem Sinne ist die Interprozesskommunikation das größte zugrunde liegende Konzept in den Überlegungen zum Design von niedrigem Ebenen eines verteilten Betriebssystems.

Prozessmanagement

Prozessmanagement Bietet Richtlinien und Mechanismen für einen effektiven und effizienten Austausch von Ressourcen zwischen verteilten Prozessen. Diese Richtlinien und Mechanismen unterstützen Operationen, die die Zuteilung und Abteilung von Prozessen und Ports an Prozessoren sowie die Mechanismen zum Ausführen, Aussetzen, Migrieren, Stoppen oder Lebenslauf betreffen. Während diese Ressourcen und Vorgänge in Bezug auf einander entweder lokal oder ferngestattet sein können, behält das verteilte Betriebssystem den Zustand und die Synchronisation über alle Prozesse im System bei.

Als Beispiel, Lastverteilung ist eine gemeinsame Prozessverwaltungsfunktion. Lastausgleich überwacht die Knotenleistung und ist für die Verschiebung der Aktivität über Knoten verantwortlich, wenn das System aus dem Gleichgewicht gerät. Eine Lastausgleichsfunktion ist die Auswahl eines Prozesses zum Bewegen. Der Kernel kann mehrere Auswahlmechanismen verwenden, einschließlich vorrangiger Wahl. Dieser Mechanismus wählt einen Prozess, der auf einer Richtlinie wie der „neuesten Anfrage“ basiert. Das System implementiert die Richtlinie

Resourcenmanagement

Systemressourcen wie Speicher, Dateien, Geräte usw. werden in einem System verteilt, und zu einem bestimmten Zeitpunkt kann jeder dieser Knoten leichte Arbeitsbelastungen haben. Lastfreigabe und Lastausgleich erfordern viele politisch orientierte Entscheidungen, die von der Suche nach Leerlauf-CPUs, wann bewegt werden und sich bewegen können. Viele Algorithmen existieren, um diese Entscheidungen zu unterstützen; Dies erfordert jedoch eine zweite Ebene der Entscheidungsfindungspolitik bei der Auswahl des Algorithmus, der am besten für das Szenario geeignet ist, und für die Bedingungen im Zusammenhang mit dem Szenario.

Verlässlichkeit

Distributed OS kann die erforderlichen Ressourcen und Dienstleistungen bereitstellen, um ein hohes Maß an zu erreichen Verlässlichkeit, oder die Fähigkeit, Fehler zu verhindern und/oder sich von Fehlern wiederzugewinnen. Fehler sind physische oder logische Defekte, die Fehler im System verursachen können. Damit ein System zuverlässig ist, muss es die nachteiligen Auswirkungen von Fehlern irgendwie überwinden.

Zu den primären Methoden für den Umgang mit Fehlern gehören Fehlervermeidung, Fehlertoleranz, und Fehlererkennung und Wiederherstellung. Fehlervermeidung deckt proaktive Maßnahmen ab, um das Auftreten von Fehlern zu minimieren. Diese proaktiven Maßnahmen können in Form von sein Transaktionen, Reproduzieren und Backups. Fehlertoleranz ist die Fähigkeit eines Systems, den Betrieb in Gegenwart eines Fehlers fortzusetzen. Für den Fall sollte das System die volle Funktionalität erkennen und wiederherstellen. In jedem Fall sollten alle ergriffenen Maßnahmen alle Anstrengungen unternehmen, um das zu erhalten Einzelsystembild.

Verfügbarkeit

Verfügbarkeit ist der Teil der Zeit, in dem das System auf Anfragen reagieren kann.

Leistung

Viele Benchmark -Metriken quantifizieren Leistung; Durchsatz, Reaktionszeit, Auftragsabschluss pro Zeiteinheit, Systemauslastung usw. in Bezug auf ein verteiltes Betriebssystem, die Leistung wird am häufigsten in ein Gleichgewicht zwischen Destillation destilliert Prozessparallelität und IPC. Verwalten der Aufgabe Granularität der Parallelität in einer vernünftigen Beziehung zu den für die Unterstützung erforderlichen Nachrichten ist äußerst effektiv. Auch identifizieren, wann es vorteilhafter ist für einen Prozess migrieren Anstatt die Daten zu kopieren, ist ebenfalls effektiv.

Synchronisation

Kooperieren gleichzeitige Prozesse einen inhärenten Bedürfnis haben Synchronisation, was sicherstellt, dass Veränderungen korrekt und vorhersehbar auftreten. Drei grundlegende Situationen, die den Umfang dieses Bedürfnisses definieren:

  • Ein oder mehrere Prozesse müssen an einem bestimmten Punkt synchronisieren, damit ein oder mehrere andere Prozesse fortgesetzt werden können.
  • Ein oder mehrere Prozesse müssen auf einen asynchronen Zustand warten, um fortzufahren.
  • oder ein Prozess muss einen exklusiven Zugriff auf eine gemeinsame Ressource festlegen.

Eine unsachgemäße Synchronisation kann zu mehreren Fehlermodi einschließlich des Verlusts von führen Atomizität, Konsistenz, Isolation und Haltbarkeit, Sackgasse, Lebensunterhalt und Verlust von Serialisierbarkeit.

Flexibilität

Flexibilität In einem verteilten Betriebssystem wird durch die modularen Eigenschaften des verteilten Betriebssystems und durch Bereitstellung einer reichhaltigeren Reihe höherer Dienste verbessert. Die Vollständigkeit und Qualität des Kernel/Microkernel vereinfacht die Implementierung solcher Dienste und ermöglicht möglicherweise Dienstanbietern eine größere Auswahl der Anbieter für solche Dienste.

Forschung

Replikiertes Modell, das auf ein Komponentenobjektmodell erweitert wurde

 Architektonisches Design von E1 verteiltem Betriebssystem[38]
 Das Cronus verteilte Betriebssystem[39]
 Entwurf und Entwicklung von Minix -verteiltem Betriebssystem[40]

Komplexität/Vertrauensexposition durch akzeptierte Verantwortung

Skala und Leistung im Denali -Isolationskern.[41]

Multi/Viele-Kern-Systeme

The Multikernel: Eine neue Betriebssystemarchitektur für skalierbare Multicore -Systeme.[42]
Corey: Ein Betriebssystem für viele Kerne.[43]
Almos: Betriebssystem für das fortschrittliche Lokalitätsmanagement für CC-NUMA-viele-Cores.[44]

Verteilte Verarbeitung über Extreme in der Heterogenität

Helios: Heterogene Multiprozessing mit Satellitenkerneln.[45]

Effektiv und stabil in mehreren Ebenen der Komplexität

Tessellation: Raum-Zeit-Partitionierung in einem Viele-C-Client-Betriebssystem.[46]

Siehe auch

Verweise

  1. ^ a b Tanenbaum, Andrew S (September 1993). "Verteilte Betriebssysteme Anno 1992. Was haben wir bisher gelernt?". Distributed Systems Engineering. 1 (1): 3–10. Bibcode:1993dse ..... 1 .... 3t. doi:10.1088/0967-1846/1/1/001.
  2. ^ Nutt, Gary J. (1992). Zentralisierte und verteilte Betriebssysteme. Prentice Hall. ISBN 978-0-13-122326-4.
  3. ^ a b c d e f Gościński, Andrzej (1991). Verteilte Betriebssysteme: das logische Design. Addison-Wesley Pub. Co. ISBN 978-0-201-41704-3.
  4. ^ Fortier, Paul J. (1986). Design von verteilten Betriebssystemen: Konzepte und Technologie. Intertext Publications. ISBN 9780070216211.
  5. ^ Hansen, per Brinch, hrsg. (2001). Klassische Betriebssysteme: Von der Stapelverarbeitung bis zu verteilten Systemen. Springer. ISBN 978-0-387-95113-3.
  6. ^ Verwenden von Lotos zur Angabe des Chorus -verteilten Betriebssystems Kernel Pecheur, C. 1992. Verwenden von Lotos zur Angabe des Kernels des Chorus Distributed Operating Systems. Computer. Kommunieren. 15, 2 (März 1992), 93-102.
  7. ^ Cool: Kernelunterstützung für objektorientierte Umgebungen Habert, S. und Mosseri, L. 1990. Cool: Kernelunterstützung für objektorientierte Umgebungen. In Proceedings der Europäischen Konferenz über objektorientierte Programmierung zu objektorientierten Programmiersystemen, Sprachen und Anwendungen (Ottawa, Kanada). Oopsla/ecoop '90. ACM, New York, NY, 269-275.
  8. ^ a b c d e Sinha, Pradeep Kumar (1997). Verteilte Betriebssysteme: Konzepte und Design. IEEE Press. ISBN 978-0-7803-1119-0.
  9. ^ a b c Chow, Randy; Theodore Johnson (1997). Verteilte Betriebssysteme und Algorithmen. Addison Wesley. ISBN 978-0-201-49838-7.
  10. ^ Surajbali, B., Coulson, G., Greenwood, P. und Grace, P. 2007. Augmenting Reflective Middleware mit einer Aspektorientierungsunterstützungsschicht. In Proceedings of the 6. International Workshop über adaptive und reflektierende Middleware: HALTE auf der ACM/IFIP/Usenix International Middleware Conference (Newport Beach, CA, 26. bis 30. November 2007). Arm '07. ACM, New York, NY, 1-6.
  11. ^ Leiner, Alan L. (April 1954). "Systemspezifikationen für die Dyseac". Journal of the ACM. 1 (2): 57–81. doi:10.1145/320772.320773.
  12. ^ a b Forgie, James W. (26. bis 28. Februar 1957). Das Lincoln TX-2-Eingang-Ausgabesystem. Western Joint Computer Conference: Techniken zur Zuverlässigkeit. Los Angeles, Kalifornien: Vereinigung für Computermaschinen. S. 156–160. doi:10.1145/1455567.1455594. ISBN 9781450378611.
  13. ^ a b C. Y. Lee (4. bis 6. Dezember 1962). Interkommunizierende Zellen, Basis für einen verteilten Logikcomputer. Herbst gemeinsame Computerkonferenz. Philadelphia, Pennsylvania: Vereinigung für Computermaschinen. S. 130–136. doi:10.1145/1461518.1461531.
  14. ^ Dreyfus, Phillippe (1958-05-08) [1958-05-06], geschrieben in Los Angeles, "Systemdesign der Gamma 60" (PDF), Verfahren des 6. bis 8. Mai 1958, Western gemeinsame Computerkonferenz: Kontrast in Computern, ACM, New York, NY, USA, S. 130–133, IRE-ACM-AIEEE '58 (Western), archiviert (PDF) vom Original am 2017-04-03, abgerufen 2017-04-03
  15. ^ L. L. L. L., Notz, W. A., Smith, J. L. und Weinberger, A. 1958. Organisieren eines Computernetzes zur Einhaltung von Fristen. In Papieren und Diskussionen, die auf der vom 9. bis 13. Dezember 1957, Eastern Joint Computer Conference: Computer mit Termine zu treffen waren (Washington, D. C., 09. -13. Dezember 1957). IRE-ACM-AIEE '57
  16. ^ L. L. L. L., Smith, J. L., Notz, W. A. ​​und Weinberger, A. 1958. Pilot, The NBS Multicomputer System. In Papieren und Diskussionen auf der vom 3. bis 5. Dezember 1958, Eastern Joint Computer Conference: Moderne Computer: Ziele, Entwürfe, Bewerbungen (Philadelphia, Pennsylvania, 03. -05. Dezember 1958). AIEE-ACM-IRE '58 (Ost). ACM, New York, NY, 71-75.
  17. ^ Bauer, W. F. 1958. Computerdesign aus Sicht des Programmierers. In Papieren und Diskussionen auf der vom 3. bis 5. Dezember 1958, Eastern Joint Computer Conference: Moderne Computer: Ziele, Entwürfe, Bewerbungen (Philadelphia, Pennsylvania, 03. -05. Dezember 1958). AIEE-ACM-IRE '58 (Ost). ACM, New York, NY, 46-51.
  18. ^ L. L. L. L., Notz, W. A., Smith, J. L. und Weinberger, A. 1959. Pilot - ein neues Mehrfachcomputersystem. J. ACM 6, 3 (Jul. 1959), 313-335.
  19. ^ Estrin, G. 1960. Organisation von Computersystemen: Der Computer mit fester plus variabler Struktur. In Papieren, die auf der vom 3. bis 5. Mai 1960 vorgestellt wurden, westliche Joint IRE-Aiee-ACM-Computerkonferenz (San Francisco, Kalifornien, 03.-05. Mai 1960). Ire-aiee-acm '60 (Western). ACM, New York, NY, 33-40.
  20. ^ Martin H. Weik, "Eine dritte Umfrage unter inländischen elektronischen digitalen Computersystemen", Ballistic Research Laboratories Report Nr. 1115, S. 234-5, Aberdeen Proving Ground, Maryland, März 1961
  21. ^ Mellor-Crummey, J. M. und Scott, M. L. 1991. Algorithmen zur skalierbaren Synchronisation auf gemeinsamen Memory-Multiprozessoren. ACM trans. Computer. System. 9, 1 (Februar 1991), 21-65.
  22. ^ M. G. Baker, J. H. Hartman, M. D. Kuffer, K. W. Shirriff und J. K. 1991. Messungen eines verteilten Dateisystems. In Proceedings des 13. ACM -Symposiums für Betriebssysteme (Pacific Grove, Kalifornien, USA, 13. bis 16. Oktober 1991). SOSP '91. ACM, New York, NY, 198-212.
  23. ^ Li, K. und Hudak, P. 1989. Gedächtniskohärenz in gemeinsamen virtuellen Speichersystemen. ACM trans. Computer. System. 7, 4 (Nov. 1989), 321-359.
  24. ^ Garcia-Molina, H. und Salem, K. 1987. Sagas. In Proceedings der ACM Sigmod International Conference über Datenmanagement von 1987 (San Francisco, Kalifornien, USA, 27. bis 29. Mai 1987). U. Dayal, hrsg. Sigmod '87. ACM, New York, NY, 249-259.
  25. ^ Harris, T., Marlow, S.,, Peyton-Jones, S.und Herlihy, M. 2005. Komponierbare Speichertransaktionen. In Proceedings of the Tenth ACM Sigplan Symposium über Prinzipien und Praxis der parallelen Programmierung (Chicago, IL, USA, 15. bis 17. Juni 2005). Ppopp '05. ACM, New York, NY, 48-60.
  26. ^ Herlihy, M. und Moss, J. E. 1993. Transaktionsgedächtnis: architektonische Unterstützung für lockfreie Datenstrukturen. In Proceedings des 20. jährlichen internationalen Symposiums über die Computerarchitektur (San Diego, Kalifornien, USA, 16. bis 19. Mai 1993). ISCA '93. ACM, New York, NY, 289-300.
  27. ^ Herlihy, M., Luchangco, V., Moir, M. und Scherer, W. N. 2003. Software-Transaktionsspeicher für dynamische Datenstrukturen. In Proceedings of the Twenty-Second Annual Symposium über Prinzipien des verteilten Computers (Boston, Massachusetts, 13. bis 16. Juli 2003). PODC '03. ACM, New York, NY, 92-101.
  28. ^ Shavit, N. und Touitou, D. 1995. Software -Transaktionsspeicher. In Proceedings des vierzehnten jährlichen ACM -Symposiums über Prinzipien des verteilten Computers (Ottawa, Ontario, Kanada, 20. bis 23. August 1995). PODC '95. ACM, New York, NY, 204-213.
  29. ^ Kubiatowicz, J., Bindel, D., Chen, Y., Czerwinski, S., Eaton, P., Geels, D., Gummadi, R., Rhea, S., Weatherspoon, H., Wells, C., C., und Zhao, B. 2000. Ozeanstore: Eine Architektur für den anhaltenden Speicher für globale Maßstäbe. In Proceedings der neunten Internationalen Konferenz über architektonische Unterstützung für Programmiersprachen und Betriebssysteme (Cambridge, Massachusetts, USA). ASPLOS-IX. ACM, New York, NY, 190-201.
  30. ^ Gifford, D. K. 1979. Gewichtete Abstimmung für replizierte Daten. In Proceedings des siebten ACM -Symposiums für Betriebssysteme (Pacific Grove, Kalifornien, USA, 10. bis 12. Dezember 1979). SOSP '79. ACM, New York, NY, 150-162
  31. ^ Dwork, C., Lynch, N. und Stockmeyer, L. 1988. Konsens in Gegenwart einer partiellen Synchronität. J. ACM 35, 2 (April 1988), 288-323.
  32. ^ LaMport, L., Shostak, R. und Pease, M. 1982. Das byzantinische Generäle Problem. ACM trans. Programm. Lang. System. 4, 3 (Jul. 1982), 382-401.
  33. ^ Schlichting, R. D. und Schneider, F. B. 1983. Fail-Stop-Prozessoren: Ein Ansatz zur Gestaltung von fehlertoleranten Computersystemen. ACM trans. Computer. System. 1, 3 (August 1983), 222-238.
  34. ^ Chandy, K. M. und Lamport, L. 1985. Distributed Snapshots: Bestimmung globaler Zustände verteilter Systeme. ACM trans. Computer. System. 3, 1 (Februar 1985), 63-75.
  35. ^ Strom, R. und Yemini, S. 1985. Optimistische Erholung in verteilten Systemen. ACM trans. Computer. System. 3, 3
  36. ^ a b c Galli, Doreen L. (2000). Verteilte Betriebssysteme: Konzepte und Praxis. Prentice Hall. ISBN 978-0-13-079843-5.
  37. ^ Tanenbaum, Andrew S. (1995). Verteilte Betriebssysteme. Prentice Hall. ISBN 978-0-13-219908-7.
  38. ^ PFUND. Ryzhyk, A.Y. Burtsev. Architektonisches Design von DE1 -verteiltem Betriebssystem. Systemforschung und Informationstechnologien Internationales Wissenschaftlicher und technischer Journal, Oktober 2004, Kiew, Ukraine.
  39. ^ Vinter, S. T. und Schantz, R. E. 1986. Das Cronus verteilte Betriebssystem. In Proceedings of the 2. Workshop über die Herstellung verteilter Systeme arbeiten (Amsterdam, Niederlande, 08. bis 10. September 1986). EW 2. ACM, New York, NY, 1-3.
  40. ^ Ramesh, K. S. 1988. Entwurf und Entwicklung von Minix Distributed Operating System. In Proceedings der ACM Sechzehnten Jahreskonferenz über Informatik (Atlanta, Georgia, USA). CSC '88. ACM, New York, NY, 685.
  41. ^ Whitaker, A., Shaw, M. und Gribble, S. D. 2002. In Proceedings of the 5. Symposium on Operating Systems Design und Implementierung
  42. ^ Baumann, A., Barham, P., Dagand, P., Harris, T., Isaacs, R., Peter, S., Roscoe, T., Schüpbach, A. und Singhania, A. 2009. In Proceedings of Proceedings of Das ACM Sigops 22. Symposium für Betriebssystemprinzipien (Big Sky, Montana, USA, 11. bis 14. Oktober 2009). Sosp '09.
  43. ^ S. Boyd-Wickizer, H. Chen, R. Chen, Y. Mao, F. Kashoek, R. Morris, A. Pesterev, L. Stein, M. Wu, Y. Dai, Y. Zhang und Z. Zhang . Proceedings of the 2008 Symposium on Operating Systems Design and Implementation (OSDI), Dezember 2008.
  44. ^ Almaless, G. und Wajsbürt, F. 2011. In Proceedings of the 5. National Seminar von GDR Soc-SIP, Lyon, Frankreich, 2011.
  45. ^ Nightingale, E. B., Hodson, O., McIlroy, R., Hawblitzel, C. und Hunt, G. 2009. In Proceedings of the ACM Sigops 22. Symposium für Operationssysteme Prinzipien (Big Sky, Montana, USA, 11. bis 14. Oktober , 2009). Sosp '09.
  46. ^ Rose Liu, Kevin Klues und Sarah Bird, Universität von Kalifornien in Berkeley; Steven Hofmeyr, Lawrence Berkeley National Laboratory; Krste Asanović und John Kubiatowicz, Universität von Kalifornien in Berkeley. Hotpar09.

Weitere Lektüre

Externe Links