Fehlertoleranz

Fehlertoleranz ist die Eigenschaft, die a ermöglicht System im Falle des Ausfalls eines oder mehrerer Fehler in einigen seiner Komponenten ordnungsgemäß ordnungsgemäß zu operieren. Wenn seine Betriebsqualität überhaupt abnimmt, ist der Rückgang proportional zur Schwere des Versagens im Vergleich zu einem naiv gestalteten System, bei dem selbst ein kleiner Fehler einen Gesamtumbruch verursachen kann. Fehlertoleranz ist besonders gesucht in hohe Verfügbarkeit, Missionskritisch, oder auch lebenskritische Systeme. Die Fähigkeit, Funktionen aufrechtzuerhalten, wenn Teile eines Systems abgebaut werden anmutiger Abbau.[1]

A Fehlertolerantes Design ermöglicht es einem System, seinen beabsichtigten Betrieb, möglicherweise auf reduziertem Niveau, fortzusetzen, anstatt vollständig zu scheitern, wenn ein Teil des Systems vollständig ist scheitert.[2] Der Begriff wird am häufigsten verwendet, um zu beschreiben Computersysteme Entwickelt, um mehr oder weniger voll funktionsfähig mit einer Reduzierung in einer Reduzierung Durchsatz oder eine Zunahme von Reaktionszeit im Falle eines Teilversagens. Das heißt, das System als Ganzes wird aufgrund von Problemen auch in der Hardware- oder der Software. Ein Beispiel in einem anderen Feld ist ein Kraftfahrzeug, das so konzipiert ist, dass es weiterhin fahrbar ist, wenn einer der Reifen durchbohrt wird, oder eine Struktur, die seine Integrität in Gegenwart von Schäden aufgrund von Ursachen wie z. B. beibehalten kann Ermüdung, Korrosion, Herstellungsfehler oder Auswirkungen.

Im Rahmen eines Individuell System, Fehlertoleranz können erreicht werden, indem außergewöhnliche Bedingungen vorweggenommen und das System aufgebaut werden Selbststabilisierung so dass das System in Richtung eines fehlerfreien Zustands konvergiert. Wenn jedoch die Folgen eines Systemversagens katastrophal sind oder die Kosten für die ausreichend zuverlässige Verhandlung sehr hoch sind, kann eine bessere Lösung darin bestehen, irgendeine Form der Duplikation zu verwenden. Wenn die Folge eines Systemversagens so katastrophal ist, muss das System in der Lage sein, um Rückkehr in einen abgesicherten Modus zurückzukehren. Dies ähnelt der Wiederherstellung von Roll-Back-Rückfällen, kann aber eine menschliche Handlung sein, wenn Menschen in der Schleife vorhanden sind.

Geschichte

Der erste bekannte fehlertolerante Computer war Sapo, erbaut 1951 in Tschechoslowakei durch Antonín Svoboda.[3]: 155 Sein grundlegendes Design war magnetische Trommeln über Relais verbunden, mit einer Abstimmungsmethode von Speicherfehler Erkennung (dreifache modulare Redundanz). Entlang dieser Linie wurden mehrere andere Maschinen entwickelt, hauptsächlich zur militärischen Verwendung. Schließlich trennten sie sich in drei verschiedene Kategorien: Maschinen, die eine lange Zeit ohne Wartung dauern würden, wie z. B. die, die verwendet werden NASA Raumsonden und Satelliten; Computer, die sehr zuverlässig waren, aber eine konstante Überwachung benötigten, wie z. B. die zur Überwachung und Kontrolle Atomkraftwerke oder Supercollider Experimente; und schließlich Computer mit einer hohen Laufzeit, die stark genutzt werden würde, wie viele der Supercomputer, die von verwendet werden Versicherungsgesellschaften für ihre Wahrscheinlichkeit Überwachung.

Der größte Teil der Entwicklung im sogenannten LLNM-Computer (Long Life, No Warting) wurde von der NASA in den 1960er Jahren durchgeführt.[4] in Vorbereitung für Projekt Apollo und andere Forschungsaspekte. Die erste Maschine der NASA ging in eine Weltraumobservatoriumund ihr zweiter Versuch, der JStar -Computer, wurde in verwendet Voyager. Dieser Computer hatte eine Sicherung von Speicherarrays, um Speicherwiederherstellungsmethoden zu verwenden, und so wurde er als JPL-Selbsttesting und Reparaturcomputer bezeichnet. Es könnte seine eigenen Fehler erkennen und beheben oder nach Bedarf redundante Module aufbringen. Der Computer arbeitet Anfang 2022 noch.[5]

Hyperabhängbare Computer wurden hauptsächlich von Pionierarbeit von Pionierarbeit Flugzeug Hersteller,[3]: 210 Atomkraft Unternehmen und die Eisenbahnindustrie in den USA. Diese benötigten Computer mit massiven Betriebszeiten, die dies tun würden scheitern Sie anmutig Genug mit einem Fehler, um einen weiteren Betrieb zu ermöglichen, während sich die Tatsache angewiesen hat, dass der Computerausgang ständig von Menschen überwacht wird, um Fehler zu erkennen. Auch hier entwickelte IBM den ersten Computer dieser Art für die NASA für die Anleitung von Saturn v Raketen, aber später BNSF, Unisys, und General Electric baute ihre eigenen.[3]: 223

In den 1970er Jahren ist auf diesem Gebiet viel Arbeit passiert.[6][7][8] Zum Beispiel, F14 CADC hatte eingebauter Selbsttest und Redundanz.[9]

Im Allgemeinen konzentrierten sich die frühen Bemühungen um fehlertolerante Entwürfe hauptsächlich auf die interne Diagnose, bei denen ein Fehler darauf hindeutet, dass etwas versagte und ein Arbeiter es ersetzen konnte. Sapo hatte beispielsweise eine Methode, mit der fehlerhafte Speichertrommeln vor dem Ausfall ein Geräusch emittieren würden.[10] Spätere Anstrengungen zeigten, dass das System, um vollständig effektiv zu sein, sich selbst zu reparieren und zu diagnostizieren-einen Fehler zu isolieren und dann eine redundante Sicherung implementieren und gleichzeitig einen Reparaturbedarf aufmerksam zu machen. Dies ist als N-Model-Redundanz bekannt, bei dem Fehler automatisch ausfällt und dem Bediener eine Warnung warnen, und es ist immer noch die häufigste Form des heute verwendeten Fehlers der Stufe 1.

Die Abstimmung war eine weitere anfängliche Methode, wie oben erläutert, mit mehreren redundanten Sicherungen, die ständig funktionierten und die Ergebnisse des anderen überprüften, mit dem Ergebnis, dass, wenn beispielsweise vier Komponenten eine Antwort von 5 und eine Komponente meldeten, eine Antwort von 6, die anderen vier, gemeldet wurden, die anderen vier würde "abstimmen", dass die fünfte Komponente fehlerhaft war und sie aus dem Dienst genommen hat. Dies nennt man M -Mehrheit.

Historisch gesehen bestand die Bewegung immer darin, sich weiter vom N-Model und mehr zu m zu bewegen .

Tandem und Stratus gehörten zu den ersten Unternehmen, die sich auf die Gestaltung von fehlertoleranten Computersystemen spezialisierten Online -Transaktionsverarbeitung.

Beispiele

"M2 Mobile Web", das ursprüngliche mobile Web -Front -Ende von Twitter, diente später als Fallback Legacy -Version zu Kunden Ohne JavaScript -Unterstützung und/oder inkompatible Browser bis Dezember 2020.

Die Hardware -Fehlertoleranz erfordert manchmal, dass zerbrochene Teile herausgenommen und durch neue Teile ersetzt werden, während das System noch in Betrieb ist (im Computer, bekannt als heißer Tausch). Ein solches System, das mit einer einzigen Sicherung implementiert ist Einzelpunkt -tolerant und repräsentiert die überwiegende Mehrheit der fehlertoleranten Systeme. In solchen Systemen die Zwischenzeit zwischen Fehlern sollte lang genug sein, damit die Betreiber genügend Zeit haben, um die kaputten Geräte zu reparieren (mittlere Reparaturzeit) Bevor die Sicherung auch fehlschlägt. Es ist hilfreich, wenn die Zeit zwischen den Ausfällen so lang wie möglich ist, dies ist jedoch in einem fehlertoleranten System nicht speziell erforderlich.

Fehlertoleranz ist in Computeranwendungen besonders erfolgreich. Tandem -Computer baute ihr gesamtes Geschäft auf solchen Maschinen, die eine Einzelpunkt-Toleranz verwendeten, um ihre zu erstellen Nonstop Systeme mit upTimes gemessen in Jahren.

Ausfallsicher Architekturen können auch die Computersoftware umfassen, beispielsweise nach Prozess Reproduzieren.

Datenformate können auch so konzipiert werden, dass sie sich anmutig verschlechtern. Html Zum Beispiel ist es zu sein vorwärts kompatibel, erlauben Internetbrowser neue und nicht unterstützte HTML -Unternehmen ignorieren, ohne dass das Dokument unbrauchbar ist. Darüber hinaus bieten einige Websites, einschließlich beliebter Plattformen wie Twitter (bis Dezember 2020), ein optionales leichtes Frontend, auf das sich nicht verlassen JavaScript und hat a minimal Layout, um breit zu gewährleisten Barrierefreiheit und Reichweitewie auf Spielekonsole mit begrenzten Web -Browsing -Funktionen.[11][12]

Terminologie

Ein Beispiel für eine anmutige Verschlechterung durch Design in einem Bild mit Transparenz. Jedes der beiden obersten Bilder ist das Ergebnis des Betrachtens des zusammengesetzten Bildes in einem Betrachter, der Transparenz erkennt. Die beiden unteren Bilder sind das Ergebnis zu einem Betrachter ohne Unterstützung für Transparenz. Da die Transparenzmaske (Mitte unten) verworfen wird, bleibt nur die Überlagerung (Mitte oben); Das Bild links wurde so konzipiert, dass es sich anmutig verschlechtert und daher ohne seine Transparenzinformationen immer noch aussagekräftig ist.

Ein sehr fehlertolerantes System kann auf dem gleichen Leistungsniveau fortgesetzt werden, obwohl eine oder mehrere Komponenten fehlgeschlagen sind. Beispielsweise bietet ein Gebäude mit einem elektrischen Backup -Generator die gleiche Spannung wie die Wandauslässe, selbst wenn der Netzstrom ausfällt.

Ein System, das ausgelegt ist ausfallsicher, oder versagen, oder scheitern Sie anmutigOb es auf einem reduzierten Niveau funktioniert oder vollständig fehlschlägt, tut dies auf eine Weise, die Menschen, Eigentum oder Daten vor Verletzungen, Schäden, Eindringen oder Offenlegung schützt. In Computern könnte ein Programm durch Ausführen von a fehlschlagen anmutiger Ausgang (im Gegensatz zu einem unkontrollierten Absturz), um die Korruption von Daten nach einem Fehler zu verhindern. Eine ähnliche Unterscheidung wird zwischen "gut scheitern" und ""schlecht scheitern".

Fehlgeschlagen ist die gegenteilige Strategie, die in Waffensystemen eingesetzt werden kann, die zum Töten oder Verletzungen von Zielen ausgelegt sind, auch wenn ein Teil des Systems beschädigt oder zerstört wird.

Ein System, das erfunden soll anmutiger Abbau, oder zu scheitern weich (Verwendet im Computer, ähnlich wie "Safe Fail Safe"[13]) arbeitet nach einigen Komponentenfehlern mit reduziertem Leistungsniveau. Beispielsweise kann ein Gebäude Beleuchtung mit reduzierten Niveaus und Aufzügen bei reduzierter Geschwindigkeit betreiben, wenn die Stromversorgung fehlschlägt, anstatt entweder die Menschen im Dunkeln vollständig zu fangen oder weiterhin mit voller Leistung zu arbeiten. Bei der Berechnung eines Beispiels für eine anmutige Verschlechterung besteht darin, dass anstelle der hochauflösenden Version eine unzureichende Netzwerkbandbreite zur Verfügung steht, um ein Online-Video zu streamen. Progressive Enhancement ist ein Beispiel für das Computing, bei dem Webseiten in einem grundlegenden funktionalen Format für ältere, kleine Bildschirme oder Webbrowser mit begrenzter Kapazität verfügbar sind. In einer verbesserten Version für Browser, die zusätzliche Technologien bearbeiten können oder eine größere Anzeige zur Verfügung haben.

Im Fehlertolerante Computersysteme, Programme, die berücksichtigt werden robust sind so konzipiert, dass er trotz eines Fehlers, einer Ausnahme oder einem ungültigen Eingang fortgesetzt wird, anstatt vollständig zu stürzen. Software -Sprödigkeit ist das Gegenteil von Robustheit. Widerstandsfähige Netzwerke Senden Sie weiterhin Daten, obwohl einige Links oder Knoten nicht bestanden werden. belastbare Gebäude und Infrastruktur Es wird ebenfalls erwartet, dass sie in Situationen wie Erdbeben, Überschwemmungen oder Kollisionen ein vollständiges Versagen verhindern.

Ein System mit hoher Fehlertransparenz Benachrichtigt die Benutzer darüber, dass ein Komponentenfehler aufgetreten ist, auch wenn er weiterhin mit voller Leistung betrieben wird, sodass ein Fehler repariert oder unmittelbar bevorstehend wird.[14] Ebenso a Fail-Fast Die Komponente wird so konzipiert, dass sie am ersten Ausfallpunkt melden, anstatt nachgeschaltete Komponenten zu fehlschlagen und dann Berichte zu erstellen. Dies ermöglicht eine einfachere Diagnose des zugrunde liegenden Problems und kann einen unzulässigen Betrieb in einem gebrochenen Zustand verhindern.

Einzelfehlerzustand

A Einzelfehlerzustand ist eine Situation, in der man bedeutet für Schutz gegen a Gefahr Defekt. Wenn eine einzelne Fehlerbedingung in einer anderen Einzelfehlerbedingung unvermeidlich entsteht, werden die beiden Fehler als eine einzelne Fehlerbedingung angesehen.[15] Eine Quelle bietet das folgende Beispiel:

A Ein-Fault-Bedingung ist eine Bedingung, wenn ein einzelnes Mittel zum Schutz vor Gefahren in Geräten defekt ist oder ein einzelner externer abnormaler Zustand vorliegt, z. Kurzschluss zwischen den lebenden Teilen und dem angelegten Teil.[16]

Kriterien

Die Bereitstellung von fehlertolerantem Design für jede Komponente ist normalerweise keine Option. Die damit verbundene Redundanz bringt eine Reihe von Strafen mit sich: Zunahme von Gewicht, Größe, Stromverbrauch, Kosten sowie Zeit zum Entwerfen, Überprüfen und Tests. Daher muss eine Reihe von Auswahlmöglichkeiten untersucht werden, um festzustellen, welche Komponenten Fehler tolerant sein sollten:[17]

  • Wie kritisch ist die Komponente? In einem Auto ist das Radio nicht kritisch, so dass diese Komponente weniger Fehlertoleranz benötigt.
  • Wie wahrscheinlich ist die Komponente scheitert? Einige Komponenten wie die Antriebswelle in einem Auto sind wahrscheinlich nicht ausfällt, sodass keine Fehlertoleranz erforderlich ist.
  • Wie teuer ist es, den Komponentenfehler tolerant zu machen? Ein redundanter Automotor beispielsweise wäre sowohl wirtschaftlich als auch in Bezug auf Gewicht und Raum wahrscheinlich zu teuer, um berücksichtigt zu werden.

Ein Beispiel für eine Komponente, die alle Tests besteht, ist das Insassen -Rückhaltesystem eines Autos. Obwohl wir normalerweise nicht an das denken primär Insassen Zurückhaltungssystem, es ist Schwere. Wenn das Fahrzeug über einen starken G-Kräften rollt oder schwere G-Foren unterzogen wird, kann diese primäre Methode zur Zurückhaltung der Insassen scheitern. Die Einschränkung der Insassen während eines solchen Unfalls ist für die Sicherheit absolut von entscheidender Bedeutung. Daher bestehen wir den ersten Test. Unfälle, die die Ausschleuderin der Insassen verursachten, waren zuvor weit verbreitet SicherheitsgurteAlso bestehen wir den zweiten Test. Die Kosten für eine redundante Zurückhaltungsmethode wie die Sicherheitsgurte sind sowohl wirtschaftlich als auch in Bezug auf Gewicht und Raum recht niedrig, sodass wir den dritten Test bestehen. Daher ist das Hinzufügen von Sicherheitsgurten zu allen Fahrzeugen eine hervorragende Idee. Andere "ergänzende Rückhaltesysteme", wie z. Airbags, sind teurer und bestehen so diesen Test mit einem kleineren Rand.

Ein weiteres ausgezeichnetes und langfristiges Beispiel für dieses Prinzip, das in die Praxis umgesetzt wird sogar und ausgewogene Anwendung der Bremskraft auf alle Räder. Es wäre auch unerschwinglich kostspielig, die Hauptkomponenten weiter zu verdoppeln, und sie würden erhebliches Gewicht verleihen. Die ähnlich kritischen Systeme zur Betätigung der Bremsen unter Fahrerregelung sind jedoch von Natur aus weniger robust und verwenden im Allgemeinen ein Kabel (können Rost, Strecken, Jam, Schnapp-) oder hydraulische Flüssigkeiten (Leckseblüftung, Kochen und Entwicklung von Blasen entwickeln, Wasser absorbieren und somit die Wirksamkeit verlieren ). In den meisten modernen Autos ist der Fußbremshydraulikbremskreis diagonal geteilt, um zwei kleinere Versagenspunkte zu ergeben Split und sollte der Hydraulikkreis vollständig ausfallen (ein relativ sehr seltenes Ereignis), gibt es in Form der kabelakten Feststellbremse, die die ansonsten relativ schwachen hinteren Bremsen betreibt, das Fahrzeug aber dennoch zum Stillstand bringen kann In Verbindung mit dem Getriebe/Motorbremsen, solange die Anforderungen darauf mit dem normalen Verkehrsfluss übereinstimmen. Die kumulativ unwahrscheinliche Kombination des Gesamtfußbremsversagens mit dem Bedarf an hartem Bremsen im Notfall führt wahrscheinlich zu einer Kollision, aber immer noch eine bei niedrigerer Geschwindigkeit, als es sonst der Fall gewesen wäre.

Im Vergleich zum Fußbrake des Fußpedal-aktivierten Dienstes ist die Feststellbremse selbst ein weniger kritischer Gegenstand und es wird nicht unmittelbar gefährd Moment der Anwendung. Daher ist keine Redundanz an sich in sie eingebaut (und es verwendet normalerweise ein billigeres, leichteres, aber weniger hartes Kabelbetanungssystem), und es kann ausreichen, wenn dies auf einem Hügel geschieht, um das Fahrzeug noch vorübergehend zu verwenden, um das Fahrzeug immer noch zu halten , bevor Sie losfahren, um ein flaches Stück Straße zu finden, auf dem Sie anhalten können. Alternativ kann das Getriebe bei flachen Gradienten in Park, Rückwärts- oder Erstgetriebe verschoben werden, und die Übertragungsschloss / Motorkomprimierung, die es stationär halten .

Bei Motorrädern wird ein ähnliches Maß an Fehlersicherheit mit einfacheren Methoden bereitgestellt. Erstens sind die vorderen und hinteren Bremssysteme, unabhängig von ihrer Aktivierungsmethode (die Kabel, Stab oder Hydraulik sein können) völlig getrennt, sodass eins vollständig ausfällt, während sie das andere nicht betroffen lassen. Zweitens ist die hintere Bremse im Vergleich zu ihrem Cousin des Automobils relativ stark, selbst wenn es sich um eine mächtige Scheibe für Sportmodelle handelt, obwohl die übliche Absicht darauf besteht, dass das vordere System die überwiegende Mehrheit der Bremskraft liefert. Da das gesamte Fahrzeuggewicht zentraler ist, ist der hintere Reifen im Allgemeinen größer und grippiger, und der Fahrer kann sich zurücklehnen, um mehr Gewicht darauf zu setzen, sodass mehr Bremskraft aufgebracht werden kann, bevor das Rad aufnimmt. Auf billigeren Maschinen der Versorgungsklasse, auch wenn das Vorderrad eine hydraulische Scheibe für zusätzliche Bremskraft und einfachere Verpackung verwenden sollte, ist das Heck normalerweise eine primitive, etwas ineffiziente, aber außergewöhnlich robuste Stangentrommel, dank der Leichtigkeit Das Füßen des Footpedal mit dem Rad auf diese Weise und vor allem die nahezu unmögliche Unmöglichkeit eines katastrophalen Versagens zu Zusammenbruch durch vernachlässigte Wartung.

Anforderungen

Die grundlegenden Eigenschaften der Fehlertoleranz erfordern:

  1. Nein der Punkt des Versagens - Wenn ein System einen Fehler erlebt, muss es während des Reparaturprozesses ohne Unterbrechung weiter funktionieren.
  2. Fehleranalyse Für die fehlerhafte Komponente - Wenn ein Fehler auftritt, muss das System in der Lage sein, das Versagen der beleidigenden Komponente zu isolieren. Dies erfordert die Zugabe dedizierter Ausfallerkennungsmechanismen, die nur für den Zweck der Fehlerisolation existieren. Die Wiederherstellung einer Fehlerbedingung erfordert die Klassifizierung des Fehlers oder der fehlenden Komponente. Das Nationales Institut für Standards und Technologie (NIST) kategorisiert Fehler basierend auf Lokalität, Ursache, Dauer und Wirkung.[wo?][Klarstellung erforderlich]
  3. Fehlerbehälter zur Verhinderung der Ausbreitung des Fehlers - Einige Fehlermechanismen können dazu führen, dass ein System fehlschlägt, indem das Versagen des Restes des Systems ausbreitet. Ein Beispiel für diese Art von Scheitern ist der "Schurkensender", der die legitime Kommunikation in einem System überfluten und ein Gesamtsystemausfall verursachen kann. Firewalls oder andere Mechanismen, die einen Schurkensender oder eine fehlende Komponente zum Schutz des Systems isolieren.
  4. Verfügbarkeit von Reversionsmodi[Klarstellung erforderlich]

Darüber hinaus sind fehlertolerante Systeme sowohl in Bezug auf geplante Servicesausfälle als auch für ungeplante Servicesausfälle charakterisiert. Diese werden normalerweise auf Anwendungsebene und nicht nur auf Hardwareebene gemessen. Die Zahl der Verdienste heißt Verfügbarkeit und wird als Prozentsatz ausgedrückt. Zum Beispiel a Fünf Nines Das System würde statistisch 99,999% Verfügbarkeit liefern.

Fehlertolerante Systeme basieren typischerweise auf dem Konzept der Redundanz.

Fehlertoleranztechniken

Die Erforschung der für kritischen Systeme erforderlichen Toleranzen umfasst eine große Menge an interdisziplinärer Arbeit. Je komplexer das System, desto sorgfältiger müssen alle möglichen Wechselwirkungen berücksichtigt und vorbereitet werden. Berücksichtigung der Bedeutung von hochwertigen Systemen für den Transport,, Öffentliche Einrichtungen und das Militär, das Bereich der Themen, die die Forschung berühren, ist sehr breit: Es kann offensichtliche Themen wie Softwaremodellierung und Zuverlässigkeit oder Hardwaredesign, zu arkanen Elementen wie z. stochastisch Modelle, Graphentheorie, formelle oder ausschließende Logik, Parallelverarbeitung, Fernbedienung Datenübertragung, und mehr.[18]

Reproduzieren

Ersatzkomponenten behandeln das erste grundlegende Merkmal der Fehlertoleranz auf drei Arten:

  • Reproduzieren: Bereitstellung mehrerer identischer Instanzen desselben Systems oder Subsystems, die Aufgaben oder Anfragen an alle von ihnen in Regie stellen parallelund die Auswahl des korrekten Ergebniss auf der Grundlage von a Quorum;
  • Redundanz: Bereitstellung mehrerer identischer Instanzen desselben Systems und Umstellung auf eine der verbleibenden Instanzen bei einem Fehler (FehlerFailover);
  • Vielfalt: Mehrfach bereitstellen anders Implementierungen derselben Spezifikation und Verwendung von replizierten Systemen zur Bewältigung von Fehlern in einer bestimmten Implementierung.

Alle Implementierungen von ÜBERFALLEN, redundante Auswahl unabhängiger Scheiben, außer RAID 0, sind Beispiele für einen Fehlertoleranten Speichermedium das verwendet Daten Redundanz.

A Lockstep Fehlertolerante Maschine verwendet replizierte Elemente, die parallel betrieben werden. Zu jeder Zeit sollten alle Replikationen jedes Elements im selben Zustand liegen. Die gleichen Eingänge werden zu jedem bereitgestellt Reproduzierenund die gleichen Ausgänge werden erwartet. Die Ausgänge der Replikationen werden mit einem Abstimmungsschaltungskreis verglichen. Eine Maschine mit zwei Replikationen jedes Elements wird bezeichnet Dual modular redundant (DMR). Der Abstimmungskreis kann dann nur eine Nichtübereinstimmung erkennen, und die Wiederherstellung stützt sich auf andere Methoden. Eine Maschine mit drei Replikationen jedes Elements wird bezeichnet Dreifach modular redundant (TMR). Der Abstimmungskreis kann bestimmen, welche Replikation fehlerhaft ist, wenn eine Zwei-zu-Eins-Abstimmung beobachtet wird. In diesem Fall kann der Abstimmungskreis das korrekte Ergebnis ausgeben und die fehlerhafte Version verwerfen. Danach wird angenommen, dass der interne Zustand der fehlerhaften Replikation von dem der beiden anderen unterscheidet, und der Abstimmungsschaltungskreis kann in einen DMR -Modus wechseln. Dieses Modell kann auf eine größere Anzahl von Replikationen angewendet werden.

Lockstep Fehlertolerante Maschinen können am einfachsten voll gemacht werden synchronDa jedes Tor jeder Replikation denselben Zustand über den gleichen Rand der Uhr übergeht und die Uhren zu den Replikationen genau in der Phase enthalten sind. Es ist jedoch möglich, Lockstep -Systeme ohne diese Anforderung zu erstellen.

Um die Replikationen in Synchronität zu bringen, müssen ihre internen gespeicherten Zustände gleich gestaltet werden. Sie können aus einem festen Ausgangszustand wie dem Reset -Status aus gestartet werden. Alternativ kann der interne Zustand einer Replik in eine andere Replik kopiert werden.

Eine Variante von DMR ist Paar und Spare. Zwei replizierte Elemente arbeiten als Paar in Lockstep, mit einem Abstimmungsschaltungskreis, der jegliche Nichtübereinstimmung zwischen ihren Operationen erkennt und ein Signal ausgibt, das angibt, dass ein Fehler vorliegt. Ein anderes Paar arbeitet genauso. Eine endgültige Schaltung wählt die Ausgabe des Paares aus, die nicht verkündet, dass es fehlerhaft ist. Paar-und-Sport erfordert eher vier Repliken als die drei von TMR, wurde jedoch kommerziell verwendet.

Versagens-oblives Computing

Versagens-oblives Computing ist eine Technik, die ermöglicht Computerprogramme trotz der Ausführung weiter ausführen Fehler.[19] Die Technik kann in verschiedenen Kontexten angewendet werden. Erstens können ungültige Speicherlesungen behandelt werden, indem ein hergestellter Wert an das Programm zurückgegeben wird.[20] was wiederum den hergestellten Wert nutzt und den ersteren ignoriert Erinnerung Wert darauf, zugegriffen zu haben, dies ist ein guter Kontrast zu Typische Speicherprüfer, die das Programm über den Fehler informieren oder das Programm abbrechen. Zweitens kann es auf Ausnahmen angewendet werden, bei denen einige Fangblöcke geschrieben oder synthetisiert werden, um unerwartete Ausnahmen zu erfassen.[21] Darüber hinaus kommt es vor, dass die Ausführung mehrmals in Folge geändert wird, um Kaskadierungsfehler zu verhindern.[22]

Der Ansatz hat Leistungskosten: Da der Technik den Code umschreibt, um dynamische Überprüfungen für die Adressgültigkeit einzufügen, steigt die Ausführungszeit um 80% bis 500%.[23]

Erholungshirten

Recovery Shepherding ist eine leichte Technik, mit der Softwareprogramme sich von ansonsten tödlichen Fehlern wie der Dereferenz von Nullzeiger und durch Null erholen können.[24] Im Vergleich zur fehlerhaften, obliven Computing -Technik arbeitet Recovery Shepherding direkt an dem kompilierten Programm Binär und muss nicht zum Programm neu kompiliert werden.

Es verwendet das gerade rechtzeitig Binärinstrumentierung Rahmen Stift. Es wird an das Anwendungsprozess angeschlossen, wenn ein Fehler auftritt, die Ausführung repariert, die Reparatureffekte im Laufe der Ausführung verfolgt, die Reparatureffekte innerhalb des Antragsverfahrens enthält und sich vom Prozess abschließt, nachdem alle Reparatureffekte aus dem Prozesszustand gespült wurden. Es stört die normale Ausführung des Programms nicht und verursacht daher vernachlässigbare Gemeinkosten.[24] Für 17 von 18 systematisch gesammelten Real World Null-Dreferference- und Divide-by-Null-Fehlern ermöglicht eine Prototyp-Implementierung die Anwendung, ihre Benutzer weiterhin akzeptable Ausgaben und Dienstleistungen für die Fehler auszulösen.[24]

Leistungsschalter

Das Leiterschalterdesignmuster ist eine Technik, um katastrophale Fehler in verteilten Systemen zu vermeiden.

Redundanz

Redundanz ist die Bereitstellung funktionaler Fähigkeiten, die in einer fehlerfreien Umgebung unnötig wären.[25] Dies kann aus Sicherungskomponenten bestehen, die automatisch "einschalten", wenn eine Komponente fehlschlägt. Zum Beispiel können große Frachtwagen ohne wesentliche Konsequenzen einen Reifen verlieren. Sie haben viele Reifen, und niemand ist kritisch (mit Ausnahme der Vorderreifen, die zum Lenkrieren verwendet werden, aber im Allgemeinen weniger Last tragen, insgesamt und insgesamt die anderen vier bis 16, sind also weniger wahrscheinlich, dass sie versagen. ). Die Idee, Redundanz einzubeziehen, um die Zuverlässigkeit eines Systems zu verbessern John von Neumann in den 1950ern.[26]

Zwei Arten von Redundanz sind möglich:[27] Space -Redundanz und Zeitaufnahme. Space Redundancy bietet zusätzliche Komponenten, Funktionen oder Datenelemente, die für den fehlerfreien Betrieb nicht erforderlich sind. Die Space -Redundanz wird je nach Art der redundanten Ressourcen, die dem System hinzugefügt wurden, weiter in Hardware-, Software- und Informationsreduktion eingeteilt. In der Zeitredenheit wird die Berechnung oder die Datenübertragung wiederholt und das Ergebnis mit einer gespeicherten Kopie des vorherigen Ergebniss verglichen. Die aktuelle Terminologie für diese Art von Tests wird als "In -Service -Fehlertoleranztests oder kurz ISFTT" bezeichnet.

Nachteile

Die Vorteile des Fehlertoleranten Designs sind offensichtlich, während viele seiner Nachteile nicht sind:

  • Interferenz mit der Fehlererkennung in derselben Komponente. Um das obige Passagierfahrzeugbeispiel fortzusetzen, ist es mit einem der fehlertoleranten Systeme möglicherweise nicht offensichtlich für den Fahrer, wenn ein Reifen durchbohrt wurde. Dies wird normalerweise mit einem separaten "automatisierten Fehlerkennzeichnungssystem" behandelt. Im Falle des Reifens erkennt ein Luftdruckmonitor den Druckverlust und benachrichtigt den Fahrer. Die Alternative ist ein "manuelles Fehler zur Erkennung von Verwerfungen", z. B. die manuelle Überprüfung aller Reifen an jedem Stopp.
  • Störung mit der Fehlererkennung in einer anderen Komponente. Eine weitere Variation dieses Problems ist, wenn die Fehlertoleranz in einer Komponente die Fehlererkennung in einer anderen Komponente verhindert. Wenn beispielsweise die Komponente B einen Betrieb basierend auf der Ausgabe von Komponente A ausführt, kann die Fehlertoleranz in B ein Problem mit A ausblenden Es scheint, dass die neue Komponente B das Problem ist. Erst nachdem das System sorgfältig geprüft wurde, wird es klar, dass das Wurzelproblem tatsächlich mit Komponente A liegt.
  • Verringerung der Priorität der Fehlerkorrektur. Auch wenn der Bediener den Fehler bewusst ist, verringert ein fehlertolerantes System wahrscheinlich die Bedeutung der Reparatur des Fehlers. Wenn die Fehler nicht korrigiert werden, führt dies schließlich zu einem Systemfehler, wenn die Fehlertoleranzkomponente vollständig ausfällt oder wenn auch alle redundanten Komponenten fehlgeschlagen sind.
  • Testschwierigkeit. Für bestimmte kritische fehlertolerante Systeme wie a KernreaktorEs gibt keine einfache Möglichkeit zu überprüfen, ob die Sicherungskomponenten funktional sind. Das berüchtigtste Beispiel dafür ist Tschernobyl, wo die Betreiber die Notfallkühlung testeten, indem sie die primäre und sekundäre Kühlung deaktivierten. Das Backup schlug fehl, was zu einer Kernschmelze und einer massiven Freisetzung von Strahlung führte.
  • Kosten. Sowohl fehlertolerante Komponenten als auch redundante Komponenten erhöhen die Kosten. Dies kann rein wirtschaftliche Kosten sein oder andere Maßnahmen wie Gewicht umfassen. Bemannte RaumschiffeHaben Sie zum Beispiel so viele redundante und fehlertolerante Komponenten, dass ihr Gewicht gegenüber unbemannten Systemen dramatisch erhöht wird, die nicht das gleiche Sicherheitsniveau erfordern.
  • Minderwertige Komponenten. Ein fehlertolerantes Design kann die Verwendung minderwertiger Komponenten ermöglichen, die das System ansonsten nicht funktionsfähig gemacht hätten. Während diese Praxis das Potenzial hat, die Kostenerhöhung zu mildern, kann die Verwendung mehrerer minderwertiger Komponenten die Zuverlässigkeit des Systems auf ein Niveau, das gleich oder sogar schlechter als ein vergleichbares nicht-faultolerantes System entspricht, senken.

Verwandte Begriffe

Es gibt einen Unterschied zwischen Fehlertoleranz und Systemen, die selten Probleme haben. Zum Beispiel die Westliche Elektrik Latte Die Systeme hatten Ausfallraten von zwei Stunden pro vierzig Jahre und waren daher hoch Fehlerresistent. Aber als ein Fehler auftrat, hörten sie immer noch auf, vollständig zu operieren und waren deshalb nicht Fehlertoleranz.

Siehe auch

Verweise

  1. ^ Adaptive Fehlertoleranz und anmutiger Abbau, Oscar González et al., 1997, Universität von Massachusetts - Amherst
  2. ^ Johnson, B. W. (1984). "Fehlertolerante Mikroprozessor-basierte Systeme", IEEE Micro, Band 4, Nr. 6, S. 6–21
  3. ^ a b c Daniel P. Siewiorek; C. Gordon Bell; Allen Newell (1982). Computerstrukturen: Prinzipien und Beispiele. McGraw-Hill. ISBN 0-07-057302-6.
  4. ^ Algirdas avižienis; George C. Gilley; Francis P. Mathur; David A. Rennels; John A. Rohr; David K. Rubin. "Der Stern (Selbsttest und Reparatur) Computer: Eine Untersuchung der Theorie und Praxis des fehlertoleranten Computerdesigns" (PDF).
  5. ^ "Voyager -Missionsstaat (meistens mindestens drei Monate ab dem Datum)". NASA. Abgerufen 2022-04-01.
  6. ^ Randell, Brian; Lee, P. A.; Treleaven, P. C. (Juni 1978). "Zuverlässigkeitsprobleme im Computersystemdesign". ACM Computing -Umfragen. 10 (2): 123–165. doi:10.1145/356725.356729. ISSN 0360-0300. S2CID 16909447.
  7. ^ P. J. Denning (Dezember 1976). "Fehlertolerante Betriebssysteme". ACM Computing -Umfragen. 8 (4): 359–389. doi:10.1145/356678.356680. ISSN 0360-0300. S2CID 207736773.
  8. ^ Theodore A. Linden (Dezember 1976). "Betriebssystemstrukturen zur Unterstützung der Sicherheit und der zuverlässigen Software". ACM Computing -Umfragen. 8 (4): 409–445. doi:10.1145/356678.356682. HDL:2027/MDP.39015086560037. ISSN 0360-0300. S2CID 16720589.
  9. ^ Ray Holt."Der F14A Central Air Data Computer und die LSI-Technologie im Jahr 1968 auf dem neuesten Stand der Technik".
  10. ^ Fehlertolerant Computing in Computer Design Neilforoshan, M.R. ISSN 1937-4771
  11. ^ "Warum Ihre Website ohne JavaScript funktionieren sollte". Dev Community. Abgerufen 2021-05-16.
  12. ^ Fairfax, Zackerie (2020-11-28). "Legacy Twitter -Shutdown bedeutet, dass Sie nicht mehr von den 3Ds twittern können.". Screenrant. Abgerufen 2021-07-01.{{}}: CS1 Wartung: URL-Status (Link)
  13. ^ Stallings, W (2009): Betriebssysteme. Interna und Designprinzipien, sechste Ausgabe
  14. ^ Thampi, Sabu M. (2009-11-23). "Einführung in verteilte Systeme". Arxiv:0911.4395 [cs.dc].
  15. ^ "Kontrolle". Grouper.ieee.org. Archiviert von das Original Am 1999-10-08. Abgerufen 2016-04-06.
  16. ^ Baha al-Shaikh, Simon G. Stacey, Wesentliche von Geräten in Anästhesie, Intensivmedizin und perioperativer Medizin (2017), p. 247.
  17. ^ Dubrova, E. (2013). "Fehlertolerantes Design", Springer, 2013, ISBN978-1-4614-2112-2
  18. ^ Zuverlässigkeitsbewertung einiger fehlertoleranter Computerarchitekturen. Springer-Verlag. November 1980. ISBN 978-3-540-10274-8.
  19. ^ Herzberg, Amir; Shulman, Haya (2012). "Oblivious und Fair Server-Aided Two-Party-Berechnung". 2012 siebte internationale Konferenz über Verfügbarkeit, Zuverlässigkeit und Sicherheit. IEEE: 75–84. doi:10.1109/ares.2012.28. ISBN 978-1-4673-2244-7. S2CID 6579295.
  20. ^ Rigger, Manuel; Pekarek, Daniel; Mössenböck, Hanspeter (2018), "Kontextbewusstes fehlerfreies Computing als Mittel zur Verhinderung von Pufferüberläufen", Sicherheit und Systemsicherheit, Cham: Springer International Publishing, S. 376–390, Arxiv:1806.09026, doi:10.1007/978-3-030-02744-5_28, ISBN 978-3-030-02743-8, abgerufen 2020-10-07
  21. ^ Zhang, lang; Monperrus, Martin (2019). "TripleAgent: Überwachung, Störung und Versagensbeschwerde für die automatisierte Resilienzverbesserung in Java-Anwendungen". 2019 IEEE 30. Internationales Symposium für Software Reliability Engineering (ISSRE). Berlin, Deutschland: IEEE: 116–127. Arxiv:1812.10706. doi:10.1109/issre.2019.00021. ISBN 978-1-7281-4982-0. S2CID 57189195.
  22. ^ Durieux, Thomas; Hamadi, Youssef; Yu, zhongxing; Baudry, Benoit; Monperrus, Martin (2018). "Erschöpfende Erkundung des fehlgeschlagenen Suchraums für den Computer". 2018 IEEE 11. Internationale Konferenz über Softwaretests, Überprüfung und Validierung (ICST). S. 139–149. Arxiv:1710.09722. doi:10.1109/ICST.2018.00023. ISBN 978-1-5386-5012-7. S2CID 4304123.
  23. ^ Keromytis, Angelos D. (2007), "Charakterisierung von Software-Selbstheilungssystemen"in Gorodetski, Vladimir I.; Kotenko, Igor; Skormin, Victor A. (Hrsg.), Charakterisierung von Software-Selbstheilungssystemen, Computer -Netzwerksicherheit: Vierte internationale Konferenz über mathematische Methoden, Modelle und Architekturen für die Sicherheit von Computernetzwerks. Springer, ISBN 978-3-540-73985-2
  24. ^ a b c Lang, Fan; Sidiroglou-Douskos, Stelios; Rinard, Martin (2014). "Automatische Laufzeitfehlerreparatur und Eindämmung durch Wiederherstellungsschäfer". Verfahren der 35. ACM -Sigplan -Konferenz zum Design und zur Implementierung von Programmiersprache. Pldi '14'. New York, NY, USA: ACM. S. 227–238. doi:10.1145/2594291.2594337. ISBN 978-1-4503-2784-8. S2CID 6252501.
  25. ^ Laprie, J. C. (1985). "Zuverlässige Computer- und Fehlertoleranz: Konzepte und Terminologie", Proceedings mit dem 15. Internationalen Symposium zum Fehlertolerant Computing (FTSC-15), S. 2–11
  26. ^ Von Neumann, J. (1956). "Probabilistische Logik und Synthese zuverlässiger Organismen aus unzuverlässigen Komponenten"In Automata Studies, Hrsg. C. Shannon und J. McCarthy, Princeton University Press, S. 43–98
  27. ^ Avizienis, A. (1976). "Fehlertolerante Systeme", IEEE -Transaktionen auf Computern, Band 25, Nr. 12, S. 1304–1312