Echtzeitsysteme mit erweiterten Übungen - Cheatsheet
Definition und Eigenschaften von Echtzeitsystemen
Definition:
Echtzeitsysteme sind Computersysteme, die ihre Aufgaben innerhalb einer festgelegten Zeitspanne ausführen müssen.
Details:
- Determinismus: Vorhersehbares Verhalten
- Zeitschranken: Deadlines müssen eingehalten werden
- Reaktionsfähigkeit: Schnelle Reaktion auf externe Ereignisse
- Zuverlässigkeit: Hohe Verfügbarkeit und Fehlertoleranz
- Oft verwendet in: Automobilindustrie, Medizintechnik, Raumfahrt
- Echtzeitanforderungen:
- Harte Echtzeitsysteme: Strikte Deadlines
- Weiche Echtzeitsysteme: Flexible Deadlines
- Latency und Jitter minimieren
Zeitplanung und Scheduling-Algorithmen
Definition:
Planung und Verteilung der CPU-Zeit auf verschiedene Aufgaben in einem Echtzeitsystem zur Einhaltung von Zeitbeschränkungen.
Details:
- Wichtigste Scheduling-Algorithmen:
- Rate Monotonic Scheduling (RMS)
- Earliest Deadline First (EDF)
- Least Laxity First (LLF)
- RMS: Priorität basierend auf Frequenz, höhere Frequenz = höhere Priorität
- EDF: Priorität basierend auf Deadline, näherliegende Deadline = höhere Priorität
- LLF: Priorität basierend auf Laxität, geringere Laxität = höhere Priorität
- Nutze Gleichungen für RMS:
- Nutze Gleichung \( U = \sum_{i=1}^{n} \frac{C_{i}}{T_{i}} \leq n(2^{1/n} - 1) \)
- Wobei \(C\) die Ausführungszeit und \(T\) der Periodenlänge der Aufgaben darstellen.
Architektur von Echtzeitbetriebssystemen
Definition:
Architektur von Betriebssystemen, die zeitkritische Anforderungen erfüllen müssen.
Details:
- Task Management: Prioritäten, Scheduling-Algorithmen (z.B. EDF, RM).
- Speicherverwaltung: Echtzeit-Speicherallokation, statische vs. dynamische Partitionierung.
- Interprozesskommunikation: Nachrichtenqueues, Semaphoren, Mutexe.
- Unterbrechungssteuerung: Interrupt-Handling, deterministische Antwortzeiten.
- Zugriffskontrolle: Sicherheit und Vermeidung von Deadlocks.
- Echtzeit-Uhr: Timer, Zähler, Zeitstempel.
- Fehlertoleranz: Mechanismen zur Erkennung und Korrektur von Fehlern.
- Multiprozessor-Unterstützung: Lastverteilung, Synchronisation über mehrere Prozessoren.
Interprozesskommunikation und Synchronisation in Echtzeitbetriebssystemen
Definition:
Mechanismen, die es Prozessen in einem Echtzeitbetriebssystem ermöglichen, Daten auszutauschen und ihre Ausführung zu koordinieren.
Details:
- Mailboxen: Mechanismus zum Nachrichtenaustausch, bei dem Nachrichten in einer Warteschlange abgelegt werden.
- Queues: FIFO-Datenstruktur zur geregelten Übergabe von Nachrichten.
- Semaphoren: Signalisierungsmechanismus zur Steuerung des Zugriffs auf gemeinsame Ressourcen.
- Mutexe: Verhindern gleichzeitigem Zugriff auf Ressourcen durch mehrere Prozesse.
- Event Flags: Bits, die Ereignisse in einem System signalisieren.
- Prioritätsinversion: Problem, bei dem ein höher priorisierter Task warten muss, weil ein niedriger priorisierter Task die Ressource hält.
- PIP (Priority Inheritance Protocol): Strategie zur Vermeidung von Prioritätsinversion.
- Rate Monotonic Scheduling: Statisches Scheduling-Verfahren basierend auf Auftragsraten.
- EDF (Earliest Deadline First): Dynamisches Scheduling-Verfahren, basierend auf dem frühesten Fälligkeitstermin.
Modellierung und Simulation von Echtzeitsystemen
Definition:
Modellierung und Simulation von Echtzeitsystemen bezieht sich auf die Abbildung und Analyse von Systemen, die auf zeitkritischen Anforderungen basieren. Ziel ist es, die Funktionsweise und das Verhalten des Systems in Echtzeit zu verstehen und vorherzusagen.
Details:
- Modelle dienen der Abstraktion realer Echtzeitsysteme.
- Simulation ermöglicht das Testen unter verschiedenen Bedingungen ohne Einsatz des realen Systems.
- Grundlegende Modelle: Zustandsautomaten, Petri-Netze.
- Latenz und Timing: zentral für Echtzeitsimulation.
- Verwendung von Simulationswerkzeugen (z.B. MATLAB/Simulink).
- Anwendung: Verkehrssteuerung, Robotik, eingebettete Systeme.
Fehlertoleranz und Zuverlässigkeit in Echtzeitsystemen
Definition:
Fehlertoleranz und Zuverlässigkeit sind wesentliche Merkmale von Echtzeitsystemen, um sicherzustellen, dass sie trotz Fehlern korrekt und rechtzeitig funktionieren.
Details:
- Fehlertoleranz: Fähigkeit eines Systems, korrekt weiterzuarbeiten, selbst wenn Teile des Systems ausfallen.
- Zuverlässigkeit: Wahrscheinlichkeit, dass ein System über einen bestimmten Zeitraum fehlerfrei funktioniert.
- Redundanz: Einsatz mehrfach vorhandener Komponenten zur Fehlererkennung und -behebung.
- Fehlerarten: Transiente Fehler, permanente Fehler, intermittierende Fehler.
- Maßnahmen: Fehlererkennung, Fehlerisolation, Fehlerbehebung (z.B. Neuinitialisierung einer Komponente).
- Rechenschaftspflicht: Mechanismen zur Aufzeichnung und Berichterstattung von Fehlerzuständen.
Redundanz und Wiederherstellungsmethoden
Definition:
Redundanz und Wiederherstellungsmethoden dienen der Fehlererkennung und -korrektur in Echtzeitsystemen.
Details:
- Redundanz: Erhöhung der Systemzuverlässigkeit durch mehrfach vorhandene Komponenten
- Arten der Redundanz:
- Hardware-Redundanz (z.B. zusätzliche Prozessoren)
- Software-Redundanz (z.B. mehrere Algorithmen zur gleichen Aufgabe)
- Daten-Redundanz (z.B. Spiegelung von Festplatten)
- Wiederherstellungsmethoden: Techniken zur Wiederherstellung des normalen Betriebszustands nach einem Fehler
- Wichtige Methoden:
- Fehler-Toleranz (z.B. selbstkorrigierende Codes)
- Fehler-Maskierung (z.B. Triple Modular Redundancy)
- Fehler-Detektion und -Korrektur (z.B. Checksummen)
- \textbf{Formeln:}
- Triple Modular Redundancy: \textit{3 identische Module, Mehrheit entscheidet}
- Checksummenberechnung: \textit{Summe der Datenbits modulo eine Basis}
- Fehlerkorrigierende Codes: \textit{Hamming-Abstand, Paritätsbits}
Best Practices in der Echtzeitprogrammierung
Definition:
Best Practices in Echtzeitprogrammierung: Optimierung von Leistung und Zuverlässigkeit in zeitkritischen Anwendungen.
Details:
- Priorisierte Aufgabenverwaltung: Höchste Priorität für kritische Aufgaben.
- Task Scheduling: Verwende deterministische Algorithmen.
- Ressourcenverwaltung: Minimale Sperrzeiten durch optimale Synchronisation.
- Interrupt-Vermeidung: Reduziere die Anzahl und Dauer von Interrupts.
- Speichermanagement: Verwende statische Speicherzuweisung um Fragmentierung zu vermeiden.
- Latenz und Jitter: Messung, Minimierung und Überwachung.
- Taktzyklenanalyse: Überprüfe und optimiere den Zyklusverbrauch von Routinen.
- Code Effizienz: Nutze Hardwarebeschleunigung und effiziente Algorithmen.
- Simulation und Modellierung: Vorabtests zur Erkennung von Engpässen und Schwachstellen.
- Dokumentation: Achte auf klare und präzise Dokumentation für Wartbarkeit und Fehlersuche.