https://de.wikipedia.org/w/api.php?action=feedcontributions&feedformat=atom&user=Rob-kaiserWikipedia - Benutzerbeiträge [de]2025-05-06T10:31:29ZBenutzerbeiträgeMediaWiki 1.44.0-wmf.27https://de.wikipedia.org/w/index.php?title=Echtzeitsystem&diff=200650808Echtzeitsystem2020-06-05T10:38:26Z<p>Rob-kaiser: /* Literatur */</p>
<hr />
<div>Als '''Echtzeitsysteme''' ({{enS|real-time systems}}) werden „Systeme zur ''unmittelbaren'' Steuerung und Abwicklung von Prozessen“<ref>''Informatik – Ein Fachlexikon für Studium und Praxis''. Dudenverlag, Mannheim 2003, ISBN 3-411-10023-0, S. 537</ref> bezeichnet, die dafür an sie gestellte quantitative '''Echtzeitanforderungen''' erfüllen müssen. Diese kommen in diversen Technikgebieten zur Anwendung, etwa in der [[Prozessleittechnik]], in [[Motorsteuerung]]en, in der Satellitensystemtechnik, in Signal- und Weichenstellanlagen, in der [[Robotik]] und in weiteren Bereichen.<br />
<br />
Oft besteht die Anforderung darin, dass ein Ergebnis innerhalb eines vorher fest definierten Zeitintervalls garantiert berechnet ist, also vor einer bestimmten Zeitschranke vorliegt. Die Größe des Zeitintervalls spielt dabei keine Rolle: Während bei einigen Aufgaben (z.&nbsp;B. in der Motorsteuerung) eine Sekunde bereits zu lang sein kann, reichen für andere Probleme Stunden oder sogar Tage. Ein Echtzeitsystem muss also nicht nur ein Mess- oder Berechnungsergebnis mit dem richtigen Wert, sondern dasselbe auch noch ''rechtzeitig'' liefern. Andernfalls hat das System versagt.<br />
<br />
In der Praxis lässt sich eine beliebig kleine Zeitschranke mangels genügend schneller Hardware nicht immer realisieren. Daher spricht man auch von „in [[Echtzeit]]“, wenn Programme ohne spürbare Verzögerung arbeiten. Diese Definition ist jedoch sehr unsauber. Grundsätzlich falsch ist es, „Echtzeitsystem“ als Synonym für „besonders schnell“ anzusehen. Im Gegenteil, Echtzeitsysteme müssen entsprechende Leerläufe einplanen, um auch in besonders fordernden Situationen ihren Echtzeitanforderungen gerecht zu werden.<br />
<br />
== Harte, weiche und feste Echtzeit ==<br />
=== Definition ===<br />
Abhängig von den Folgen wird manchmal zwischen harter Echtzeit (engl. {{lang|en|''hard real-time''}}), weicher Echtzeit (engl. {{lang|en|''soft real-time''}}) und fester Echtzeit (engl. {{lang|en|''firm real-time''}}) unterschieden. Hierfür gelten jeweils unterschiedliche Echtzeitanforderungen.<br />
<br />
* '''harte''' Echtzeitanforderungen: Eine Überschreitung der Antwortzeit wird als ein Versagen gewertet. Nach einer exakten Zeiterfassung der bereitzustellenden Anwendung sind Berechnungen gemäß der Theorie der Echtzeitsysteme notwendig. Echtzeitsysteme liefern das korrekte Ergebnis immer innerhalb der vorgegebenen Zeitschranken. Auf diese Eigenschaft kann man sich beim Einsatz eines harten Echtzeitsystems verlassen.<br />
<br />
* '''weiche''' Echtzeitanforderungen: Solche Systeme arbeiten ''typischerweise'' alle ankommenden Eingaben ''schnell genug'' ab. Die Antwortzeit erreicht beispielsweise einen akzeptablen [[Mittelwert]] oder ein anderes [[Statistik|statistisches]] Kriterium. Die Zeitanforderungen sind hier als Richtlinien zu sehen. Ein Überschreiten der Zeitanforderung muss nicht als Versagen gewertet werden. Zum einen kann die Zeit häufig überschritten werden, solange sie sich noch in einem Toleranzbereich befindet. Zum anderen kann sie selten stark überschritten werden.<ref name="Echtzeitsysteme-S321">{{Literatur |Autor=Heinz Wörn, Uwe Brinkschulte |Titel=Echtzeitsysteme. Grundlagen, Funktionsweisen, Anwendungen |Verlag=Springer |Ort=Berlin u.&nbsp;a. |Datum=2005 |ISBN=3-540-20588-8 |Seiten=321 |DOI=10.1007/b139050}}</ref><br />
<br />
* '''feste''' Echtzeitanforderungen: Bei festen Echtzeitanforderungen droht kein unmittelbarer Schaden.<ref name="Echtzeitsysteme-S321" /> Nach Ablauf der Zeitanforderungen ist das Ergebnis der Berechnung jedoch nutzlos und kann verworfen werden.<br />
<br />
Je nach Problemstellung und Blickwinkel wird auch folgende Definition verwendet:<br />
* weiche Echtzeitanforderungen: Das System muss in der angegebenen Zeitspanne reagieren, nicht jedoch das vollständige Ergebnis liefern. Tritt keine Reaktion ein, gilt der Vorgang als fehlgeschlagen und wird abgebrochen. Alternativ können weiche Echtzeitsysteme auch zeitweise das Ergebnis zwar korrekt, aber zu spät liefern.<br />
* harte Echtzeitanforderungen: Das System muss im definierten Zeitfenster das Ergebnis vollständig präsentieren.<br />
<br />
Innerhalb der weichen Echtzeitsysteme finden sich manchmal weitere Klassifikationen, die die Überschreitungen der Antwortzeiten feiner differenzieren. Häufige Kriterien sind:<br />
* Das Ergebnis hat keinen Wert mehr; die Berechnung wird abgebrochen und verworfen.<br />
* Der Nutzen des Ergebnisses sinkt ab Ende der Antwortzeit.<br />
* Eine Überschreitung der Antwortzeit wird hingenommen, und das Ergebnis wird angenommen, wenn es vorliegt.<br />
Bereits die Definition von weichen Echtzeitsystemen ist von eher umgangssprachlicher Natur, so dass eine feinere Unterteilung erst recht schwierig zu geben ist.<br />
<br />
Die [[DIN-Norm]] 44300 definiert unter Echtzeitbetrieb (dort Realzeitbetrieb genannt) den [[Betrieb]] eines Rechnersystems, bei dem Programme zur Verarbeitung anfallender Daten ständig betriebsbereit sind, derart, dass die Verarbeitungsergebnisse innerhalb einer vorgegebenen Zeitspanne verfügbar sind. Diese [[Normung|Begriffsnorm]] hat sich in der Praxis als alleinig akzeptierte Definition nicht durchsetzen können, es dominieren die Begriffe aus dem englischen Sprachraum.<br />
<br />
=== Beispiele ===<br />
* Systeme für [[Videokonferenz]]en müssen Bild und Ton innerhalb von Millisekunden aufnehmen, vorverarbeiten, versenden und darstellen. Wenn dies bei einigen Bildern nicht gelingt, „ruckelt“ die Darstellung zwar etwas, es kann danach jedoch ohne negative Folgen weitergearbeitet werden. Das System muss also nur weiche Echtzeitanforderungen erfüllen.<br />
* Ein Programm, das (längere) Videosequenzen aufzeichnen soll, muss hingegen harte Echtzeitanforderungen erfüllen. Wenn es nicht gelingt, die Videodaten schnell genug auf den Datenträger zu speichern, gehen Bilder verloren und das Video ist für viele Anwendungen unbrauchbar.<br />
* Die elektronische [[Motorsteuerung]] in einem [[Automobil|Auto]] muss harte Echtzeitanforderungen erfüllen, sonst [[Stottern (Motor)|stottert]] der Motor oder das Auto bleibt stehen. Der Ausfall bzw. eine nicht korrekt eingehaltene harte Echtzeit kann einen mechanischen Schaden oder im schlimmsten Fall einen Unfall verursachen.<br />
<br />
== Umsetzung ==<br />
Echtzeit beschreibt das zeitliche Ein- bzw. Ausgangsverhalten eines Systems, sagt aber nichts über dessen Realisierung aus. Ein Echtzeitsystem kann ein Rechner mit einer geeigneten Software oder eine reine Hardware-Lösung sein. Für Anforderungen mit sogenannten weichen Grenzen werden häufig Standard-[[EDV]]-Systeme verwendet. Für Anforderungen mit harten Grenzen werden spezielle Architekturen (Hardware und Software) verwendet, z.&nbsp;B. [[Mikrocontroller]]-, [[Field Programmable Gate Array|FPGA]]- oder [[Digitaler Signalprozessor|DSP]]-basierte Lösungen.<br />
<br />
=== Feste periodische Triggerung ===<br />
Ein Ansatz, eine geforderte Reaktionszeit für spezifische Anwendungen zu erfüllen, ist der Einsatz einer eigenen Funktionseinheit, die nur diese Aufgabe mit einer fixen [[Frequenz]], gewonnen aus der Reaktionszeit <math>f=\frac{1}{\text{Reaktionszeit}}</math>, erfüllt. Ein Beispiel einer Hardwareumsetzung ist eine [[Digitalisierung]] mit einem [[Analog-Digital-Umsetzer|ADC]] als Funktionseinheit und einem [[Schwingquarz|Taktquarz]], z.&nbsp;B. zur Digitalisierung von Klängen für eine [[Audio-CD]] mit einer nötigen Frequenz von 44,1&nbsp;kHz (entspricht einer Reaktionszeit ≤&nbsp;22,7&nbsp;Mikrosekunden). Eine solche Lösung erfüllt zuverlässig das harte Echtzeitkriterium, da sie spezifisch zur Erfüllung einer einzigen Aufgabe designt wurde. Jedoch, eine komplexe Echtzeitaufgabe zerlegt nach diesem Prinzip (wie z.&nbsp;B. eine Regelung mit vielen Eingangsparametern mit großer Dynamik in den geforderten Reaktionszeiten), kann durch die zu lösende [[Asynchronität]] und redundante Systemteile teuer und komplex werden.<br />
<br />
=== Synchrone Ansätze ===<br />
Ein verallgemeinerter Ansatz für mehrere Aufgaben ist die Verwendung einer einzigen, gleichgetakteten (synchronen) Lösungsplattform, umgesetzt typischerweise mit [[Mikrocontroller]]n, [[Digitaler Signalprozessor|DSPs]], [[CPU]]s oder [[Field Programmable Gate Array|FPGAs]]. Die für die Echtzeitbedingung geforderten Reaktionszeiten werden in diesem Lösungskonzept dadurch zu erfüllen versucht, dass alle Aufgaben sequentiell so schnell wie möglich abgearbeitet werden. Die Echtzeitbedingung ist sicher erfüllt, wenn die kleinste geforderte Reaktionszeit unter den Aufgaben doppelt so groß ist wie die ''[[Maximale Laufzeit]]'' für einen Gesamtdurchlauf aller Aufgaben.<br />
<br />
Ein Beispiel wäre eine Echtzeit-[[Regelung (Natur und Technik)|Regelung]] mit einem Mikrocontroller, der mehrere Eingabeparameter entgegennimmt, eine Reaktion berechnet und diese zurückgibt. Angenommen, es soll auf das Überschreiten einer Temperatur <math>t</math> mit einer Reaktionszeit ≤&nbsp;1&nbsp;s und auf eine Drehzahl <math>d</math> unter ≤&nbsp;1&nbsp;ms mit dem Setzen eines Abschaltsignals <math>O=1</math> reagiert werden. Eine technisch einfache Lösung auf einem Mikroprozessor mit einer 2-MHz-Taktfrequenz wäre eine einfache [[Endlosschleife|Endlos-Programmschleife]] (Beispiel in Intel-Syntax [[Assemblersprache|Pseudoassemblercode]], Semikolon ist Kommentarzeichen):<br />
<br />
<syntaxhighlight lang="asm"><br />
mov a, 10000 ; Grenzwert der Drehzahl<br />
mov b, 30 ; Grenzwert der Temperatur<br />
mov O,1 ; Abschaltsignal<br />
<br />
:loop ; Markierung im Programmfluss (keine Instruktion, wird vom Assembler für Sprungadressen verwendet)<br />
in d,PORT1 ; einlesen der aktuellen drehzahl-Werte<br />
in t,PORT2 ; einlesen der aktuellen temp-Werte<br />
<br />
:drehcheck<br />
cmp d,a ; prüfe die Drehzahl<br />
jg tempcheck; wenn Grenzwert nicht erreicht, springe zu :tempcheck<br />
out PORT3,O ; Grenzwert erreicht! setze Abschaltsignal<br />
<br />
:tempcheck<br />
cmp t,b ; prüfe die Temperatur<br />
jg loop ; wenn Grenzwert nicht erreicht, springe zu :loop<br />
out PORT3,O ; Grenzwert erreicht! setze Abschaltsignal<br />
<br />
jmp loop ;unbedingter Sprung zur Marke :loop (Endlosschleife)<br />
</syntaxhighlight><br />
<br />
Unter der Annahme, dass jeder Befehl auf diesem Prozessor (jede Codezeile) einen [[Taktzyklus]] an Zeit kostet, wird ein Prüfdurchlauf <math>t_{\text{loop}}</math> in 6&nbsp;Taktzyklen durchgeführt, mit einer [[Worst case|Worst-case]]-Reaktionszeit von 12&nbsp;Taktzyklen für die Temperatur (<math>\frac{12}{2000000}=0{,}006\,\text{ms}</math>) und 11 für die Drehzahl (<math>\frac{11}{2000000}=0{,}0055\,\text{ms}</math>). Die harten Echtzeitanforderungen sind mit dieser Regelung erfüllt, jedoch um Größenordnungen schneller, als es eigentlich nötig wäre ([[Wirtschaftlichkeit|ineffizient]]). Eine Erweiterung der Echtzeitregelung z.&nbsp;B. um den Test eines Drucks <math>p</math> ist durch diese Überdimensionierung des Systems möglich. Jedoch, die erreichte Reaktionszeit für ''jede'' der Teilaufgaben wächst mit der Gesamtablaufzeit <math>t_{loop}</math> mit. Die Grenze dieses Designs ist also erreicht, wenn im Worst-case-Fall die doppelte Gesamtablaufzeit <math>t_{loop}</math> die Reaktionszeit für eine Teilaufgabe überschreitet.<br />
<br />
Dieses Konzept ist das übliche Paradigma auf dem Computer bei Multimediaanwendungen wie [[Mediaplayer|Video]], [[Demoszene|Demos]] und [[Computerspiele|Spielen]]. Typischerweise wird damit nur das ''weiche Echtzeitbedingungskriterium'' erfüllt, da eine ''Worst-case-Abarbeitungszeit/Reaktionszeit'' aufgrund der Komplexität des Systems nicht bestimmbar (oder wie im obigen Beispiel, nicht abzählbar) und/oder nicht [[deterministisch]] ist. Bei Multimediaanwendungen äußert sich dieser Nichtdeterminismus z.&nbsp;B. über variierende [[Bildwiederholfrequenz|FPS]] oder Reaktionszeiten bei Eingaben. Gründe für diesen Nichtdeterminismus sind das Vorhandensein mehrerer Codepfade mit unterschiedlichen Ausführungszeiten, das Warten der Ausführung auf Ein- oder Ausgaben oder einfach Aufgaben mit variabler Komplexität (z.&nbsp;B. variierende Szeneriekomplexität in [[Computerspiel]]en).<br />
<br />
=== Prozessbasierte Ansätze ===<br />
Auf komplexen Echtzeitsystemen (wie einer SPS oder einem als Echtzeitsystem agierenden Computer) laufen in der Regel verschiedene [[Prozess (Computer)|Prozesse]] gleichzeitig und mit unterschiedlicher Priorität ab, geregelt durch ein [[Echtzeitbetriebssystem]]. Die minimale Reaktionszeit wird durch die Zeitdauer für einen vollständigen Wechsel von einem Prozess niederer Priorität zu einem Prozess höherer Priorität definiert. Dieser Wechsel wird dann eingeleitet, wenn ein definiertes Ereignis eintritt, z.&nbsp;B. generiert durch einen externen Trigger (in der Computertechnik [[Interrupt]]) oder interne Timer. Die eigentliche Abarbeitung des aufgerufenen Prozesses beginnt erst nach dem ausgeführten Prozesswechsel. Hiermit wird die Erfüllung des ''harten'' Echtzeitkriteriums einer höherpriorisierten Aufgabe erzwungen, indem die Ausführung einer niedrigerpriorisierten Aufgabe unterbrochen wird ([[Präemptives Multitasking]]).<br />
<br />
Prinzipiell ist auch ein [[Personal Computer|PC]] echtzeitfähig, allerdings nicht oder nur sehr bedingt, wenn er mit klassischen [[Multitasking]]-Betriebssystemen betrieben wird, da dann viele [[asynchron]]e Prozesse nicht-deterministisch ablaufen. [[Echtzeitbetriebssystem]]e sind oftmals ebenfalls multitaskingfähig, verfügen jedoch über einen anderen [[Prozess-Scheduler|Scheduler]] als konventionelle Systeme. Es gibt auch Lösungen, bei denen ein bestehendes Standardbetriebssystem durch Hinzufügen spezieller Software echtzeitfähig gemacht wird. Dies hat den Vorteil, dass nur die wirklich zeitkritischen Vorgänge im Echtzeitsystem ablaufen müssen und für den Rest die normalen APIs (inkl. [[Compiler]] oder [[GUI]]s) des zugrundeliegenden Betriebssystems verwendet werden können.<br />
<br />
Auch in [[Speicherprogrammierbare Steuerung|speicherprogrammierbaren Steuerungen]] (SPS) und [[Prozessleitsystem]]en (PLS) werden Echtzeitbetriebssysteme eingesetzt, die aber dem Anwender nicht direkt zugänglich sind.<br />
<br />
Bei einer Software, die Echtzeitbedingungen erfüllen soll, muss die [[maximale Laufzeit]] bestimmbar sein und darf keinen nicht oder nur bedingt beeinflussbaren Faktoren unterliegen, muss also [[deterministisch]] sein. Dies wird u.&nbsp;a. durch folgende System- oder Softwareeigenschaften beeinflusst:<br />
* Ein Problem ist komplexe I/O, z.&nbsp;B. [[Festplatte]]n mit Cache und automatischem Ruhezustand oder Netzwerk-Kommunikation mit nicht-deterministischem Zeitverhalten (z.&nbsp;B. [[Internet Protocol|IP]]).<br />
* Die Laufzeit von Betriebssystem- und Bibliotheksaufrufen muss mit berücksichtigt werden.<br />
* Der Bedarf an Ressourcen, insbesondere der Bedarf an [[Dynamischer Speicher|Speicher]], muss bekannt sein. Die Laufzeitumgebung und die Hardware müssen den Ressourcenbedarf decken können.<br />
* Bei [[Rekursion]] muss die maximale Rekursionstiefe, bei [[Schleife (Programmierung)|Schleifen]] muss die maximale Anzahl an [[Iteration]]en feststehen.<br />
* Speicherverwaltung: Es muss daher dafür gesorgt werden, dass die Echtzeitmodule von der [[Virtuelle Speicherverwaltung|virtuellen Speicherverwaltung]] des Betriebssystems unbeeinflusst bleiben und niemals ausgelagert werden (typischerweise verwenden Echtzeitsysteme deshalb überhaupt keine virtuelle Speicherverwaltung).<br />
* Besonders problematisch ist auch zum Beispiel der Einsatz [[Automatische Speicherbereinigung|automatischer Speicherbereinigung]] (Garbage Collector), dessen Laufzeit sehr pessimistisch abgeschätzt werden muss.<br />
* Das Verhalten bei drohender Zeitüberschreitung muss definiert und vorhersehbar sein.<br />
<br />
== Beispiele für Echtzeitsysteme ==<br />
Rechner zur Steuerung von technischen Einrichtungen oder Prozessen wie Maschinen, verfahrenstechnischen Anlagen oder Verkehrsmitteln sind praktisch immer Echtzeitsysteme.<br />
Ein Echtzeitsystem reagiert also auf alle Ereignisse rechtzeitig und verarbeitet die Daten „schritthaltend“ mit dem technischen Prozess. Es wird sozusagen nicht vom technischen Prozess abgehängt – weder im Normalfall noch in kritischen Situationen.<br />
<br />
* Die Temperatur eines Apparates in einer [[Verfahrenstechnik|verfahrenstechnischen]] Anlage ändert sich meist nur innerhalb von Minuten. Eine Steuerung, die innerhalb von mehreren Sekunden auf Abweichungen reagiert, kann daher noch als echtzeitfähig gelten. Die Reaktionszeit liegt im Sekundenbereich.<br />
* Graphische Anwendungen auf dem [[Computer]] wie [[Computerspiel|Spiele]] oder [[Demoszene|Demos]]<ref name="CESCG-2002">{{cite web|author=Boris Burger, Ondrej Paulovic, Milos Hasan|url=http://www.cescg.org/CESCG-2002/BBurger |work=CESCG-2002|title=Realtime Visualization Methods in the Demoscene |publisher=[[Technische Universität Wien]] |language=en|date=2002-03-21|accessdate=2011-03-21}}</ref> erfordern bei der Aktualisierung der [[Bildschirmanzeige]] Reaktionszeiten von ≤&nbsp;63&nbsp;ms (≥&nbsp;14–16&nbsp;[[Frames per second|Bilder pro Sekunde]]), um als flüssiger Ablauf wahrgenommen zu werden.<br />
* Computer-Programme, deren Reaktionszeiten auf Anwender-Eingaben mit [[Eingabegerät]]en ([[Tastatur]], [[Maus (Computer)|Maus]] etc.) unter 10&nbsp;ms liegen, werden subjektiv als ''sofort'' wahrgenommen (siehe [[Usability]]).<br />
<br />
* Die [[Airbag]]-Steuerung im [[Automobil|Auto]] muss dauernd und innerhalb kürzester Zeit die Messwerte der Sensoren verarbeiten und entscheiden, ob und wie stark der Airbag ausgelöst wird; die Reaktionszeit liegt im Bereich von 1&nbsp;ms.<br />
* Ein [[Antiblockiersystem]] im [[Automobil|Auto]] hat typischerweise eine Regelfrequenz von ≥100 Hz, d.&nbsp;h. die Reaktionszeit liegt unter 10&nbsp;ms.<br />
* In [[Werkzeugmaschine]]n ändert sich die gegenseitige Lage von Werkstück und Werkzeug. Heutige [[Computerized Numerical Control|CNC-Steuerungen]] haben zeitliche Auflösungen der Bewegungsregelung von 125&nbsp;µs.<br />
* In einem Auto muss das elektronische [[Motormanagement]] zu bestimmten Zeitpunkten seine Ergebnisse (einzuspritzende Kraftstoffmenge, Zündzeitpunkt) liefern. Später eintreffende Ergebnisse sind wertlos. Die Reaktionszeit hängt direkt von der Drehzahl ab und geht für typische Motoren bei hohen Drehzahlen bei vielen Zylindern herunter bis auf 1&nbsp;ms.<br />
* Für die genaue Ablenkung von Elektronenstrahlen, z.&nbsp;B. beim [[Schweißen#Elektronenstrahlschweißen|Elektronenstrahlschweißen]], müssen Magnetfelder mit Frequenzen von 100&nbsp;kHz bis 1&nbsp;MHz geregelt werden. Die Reaktionszeit liegt zwischen 1&nbsp;µs und 10&nbsp;µs.<br />
<br />
== Gestaltungsparadigmen ==<br />
Bei der Realisierung gibt es zwei Gestaltungsparadigmen: ''ereignisgesteuert'' und ''zeitgesteuert''.<br />
<br />
Bei der Ereignissteuerung wird auf ein von außen kommendes Ereignis (meist mittels [[Interrupt]]) schnellstmöglich reagiert, d.&nbsp;h. eine Verarbeitung gestartet. Gegebenenfalls wird eine gerade laufende Verarbeitung dabei unterbrochen. Die Ereignissteuerung hat den Vorteil, dass sie mit sehr geringem Zeitverlust auf das Ereignis reagiert. Weil sie intuitiv ist, ist sie auch weit verbreitet. Der Hauptnachteil ist, dass es nicht verhinderbar ist, dass mehrere Ereignisse innerhalb kurzer Zeit auftreten können und es damit zu einer Überlastung des Echtzeitsystems (mit Verlust von Ereignissen und/oder Überschreitung von Zeitlimits) kommen kann. Um dieses Problem zu umgehen, muss klar definiert werden, welche Ereignisse mit welcher maximalen Häufigkeit auftreten können. Typischerweise wird mittels [[Priorität]]en bestimmt, in welcher Reihenfolge gleichzeitig auftretende Ereignisse abgearbeitet werden sollen. In einer harten Echtzeitumgebung muss sichergestellt werden, dass auch im ungünstigsten Fall (maximale Anzahl und Frequenz aller möglichen Ereignisse) selbst der Prozess mit der niedrigsten Priorität sein Ergebnis immer noch innerhalb der Zeitschranken abliefern kann, d.&nbsp;h. immer noch genügend Rechenzeit zugeteilt bekommt, um seine Aufgabe zu erfüllen.<br />
<br />
Bei der Zeitsteuerung werden Verarbeitungen aufgrund eines vorher festgelegten Zeitplans gestartet. Jedem Prozess wird also eine genau definierte Zeitscheibe im Scheduler zugeteilt (z.&nbsp;B. alle 100&nbsp;ms genau 10&nbsp;ms). Der Vorteil liegt darin, dass Überlastungen grundsätzlich ausgeschlossen werden können (sofern der Prozess niemals die zugeteilte Zeit überschreitet). Das Verhalten der Anwendung ist für alle Zeit vorhersagbar, was die Zeitsteuerung für sicherheitskritische Anwendungen geeignet macht. Der Nachteil der Zeitsteuerung ist der höhere Planungsaufwand (die Zeitzuteilung muss während der Implementation der Prozesse genau bekannt sein) und der damit verbundene notwendige Werkzeugeinsatz. Ein weiterer Vorteil ist, dass bei der Zeitsteuerung die vorhandenen Ressourcen (CPU-Zeit, Speicher) zu 100&nbsp;Prozent ausgelastet werden können, während das bei der Ereignissteuerung aufgrund ihrer [[Asynchron]]ität nicht möglich ist. Bei der Ereignissteuerung muss bei den Ressourcen immer etwas Reserve eingeplant werden, damit das System bei großer Last Zeit „aufholen“ kann.<br />
<br />
== Siehe auch ==<br />
* [[Simulation]]<br />
<br />
== Literatur ==<br />
* Dieter Zöbel: ''Echtzeitsysteme - Grundlagen der Planung''. Springer Vieweg, 2020, ISBN 978-3-662-60421-2.<br />
* Sascha Roeck: ''Echtzeitsimulation von Produktionsanlagen mit realen Steuerungssystemen''. Jost-Jetter Verlag, 2007, ISBN 3-939890-24-3.<br />
* [[Hermann Kopetz]]: ''Real Time Systems. Design Principles for Distributed Embedded Applications'' (= ''The Kluwer International Series in Engineering and Computer Science.'' Vol. 395). Kluwer Academic Publishers, Boston MA u.&nbsp;a. 1997, ISBN 0-7923-9894-7.<br />
* H. Zedan (Hrsg.): ''Real-time Systems. Theory and Applications.'' Proceedings of the conference, organized by the British Computer Society, York, 28. – 29. September 1989. North-Holland u.&nbsp;a., Amsterdam u.&nbsp;a. 1990, ISBN 0-444-88625-7.<br />
<br />
== Weblinks ==<br />
* ''Comp.realtime: Frequently Asked Questions (FAQ)'':<br />
*: regelmäßig in der Newsgroup ''comp.realtime'' gepostet<br />
*:* [http://www.faqs.org/faqs/realtime-computing/faq/ im HTML-Format]<br />
*:* [ftp://rtfm.mit.edu/pub/usenet/comp.realtime/ über anonymous FTP]<br />
* [http://www.faqs.org/faqs/realtime-computing/ faqs.org]<br />
* [http://www.dedicated-systems.com/encyc/ dedicated-systems.com]<br />
* [http://www.dedicated-systems.com/magazine/magazine.htm dedicated-systems.com]<br />
* [https://rt.wiki.kernel.org/index.php/Frequently_Asked_Questions Linux Realtime FAQ]<br />
<br />
== Einzelnachweise ==<br />
<references /><br />
<br />
[[Kategorie:Echtzeitsystem| ]]<br />
<br />
[[nl:Realtime]]</div>Rob-kaiserhttps://de.wikipedia.org/w/index.php?title=Echtzeitsystem&diff=200650752Echtzeitsystem2020-06-05T10:35:40Z<p>Rob-kaiser: /* Literatur */ Verweis auf aktuelles Lehrbuch hinzugefügt</p>
<hr />
<div>Als '''Echtzeitsysteme''' ({{enS|real-time systems}}) werden „Systeme zur ''unmittelbaren'' Steuerung und Abwicklung von Prozessen“<ref>''Informatik – Ein Fachlexikon für Studium und Praxis''. Dudenverlag, Mannheim 2003, ISBN 3-411-10023-0, S. 537</ref> bezeichnet, die dafür an sie gestellte quantitative '''Echtzeitanforderungen''' erfüllen müssen. Diese kommen in diversen Technikgebieten zur Anwendung, etwa in der [[Prozessleittechnik]], in [[Motorsteuerung]]en, in der Satellitensystemtechnik, in Signal- und Weichenstellanlagen, in der [[Robotik]] und in weiteren Bereichen.<br />
<br />
Oft besteht die Anforderung darin, dass ein Ergebnis innerhalb eines vorher fest definierten Zeitintervalls garantiert berechnet ist, also vor einer bestimmten Zeitschranke vorliegt. Die Größe des Zeitintervalls spielt dabei keine Rolle: Während bei einigen Aufgaben (z.&nbsp;B. in der Motorsteuerung) eine Sekunde bereits zu lang sein kann, reichen für andere Probleme Stunden oder sogar Tage. Ein Echtzeitsystem muss also nicht nur ein Mess- oder Berechnungsergebnis mit dem richtigen Wert, sondern dasselbe auch noch ''rechtzeitig'' liefern. Andernfalls hat das System versagt.<br />
<br />
In der Praxis lässt sich eine beliebig kleine Zeitschranke mangels genügend schneller Hardware nicht immer realisieren. Daher spricht man auch von „in [[Echtzeit]]“, wenn Programme ohne spürbare Verzögerung arbeiten. Diese Definition ist jedoch sehr unsauber. Grundsätzlich falsch ist es, „Echtzeitsystem“ als Synonym für „besonders schnell“ anzusehen. Im Gegenteil, Echtzeitsysteme müssen entsprechende Leerläufe einplanen, um auch in besonders fordernden Situationen ihren Echtzeitanforderungen gerecht zu werden.<br />
<br />
== Harte, weiche und feste Echtzeit ==<br />
=== Definition ===<br />
Abhängig von den Folgen wird manchmal zwischen harter Echtzeit (engl. {{lang|en|''hard real-time''}}), weicher Echtzeit (engl. {{lang|en|''soft real-time''}}) und fester Echtzeit (engl. {{lang|en|''firm real-time''}}) unterschieden. Hierfür gelten jeweils unterschiedliche Echtzeitanforderungen.<br />
<br />
* '''harte''' Echtzeitanforderungen: Eine Überschreitung der Antwortzeit wird als ein Versagen gewertet. Nach einer exakten Zeiterfassung der bereitzustellenden Anwendung sind Berechnungen gemäß der Theorie der Echtzeitsysteme notwendig. Echtzeitsysteme liefern das korrekte Ergebnis immer innerhalb der vorgegebenen Zeitschranken. Auf diese Eigenschaft kann man sich beim Einsatz eines harten Echtzeitsystems verlassen.<br />
<br />
* '''weiche''' Echtzeitanforderungen: Solche Systeme arbeiten ''typischerweise'' alle ankommenden Eingaben ''schnell genug'' ab. Die Antwortzeit erreicht beispielsweise einen akzeptablen [[Mittelwert]] oder ein anderes [[Statistik|statistisches]] Kriterium. Die Zeitanforderungen sind hier als Richtlinien zu sehen. Ein Überschreiten der Zeitanforderung muss nicht als Versagen gewertet werden. Zum einen kann die Zeit häufig überschritten werden, solange sie sich noch in einem Toleranzbereich befindet. Zum anderen kann sie selten stark überschritten werden.<ref name="Echtzeitsysteme-S321">{{Literatur |Autor=Heinz Wörn, Uwe Brinkschulte |Titel=Echtzeitsysteme. Grundlagen, Funktionsweisen, Anwendungen |Verlag=Springer |Ort=Berlin u.&nbsp;a. |Datum=2005 |ISBN=3-540-20588-8 |Seiten=321 |DOI=10.1007/b139050}}</ref><br />
<br />
* '''feste''' Echtzeitanforderungen: Bei festen Echtzeitanforderungen droht kein unmittelbarer Schaden.<ref name="Echtzeitsysteme-S321" /> Nach Ablauf der Zeitanforderungen ist das Ergebnis der Berechnung jedoch nutzlos und kann verworfen werden.<br />
<br />
Je nach Problemstellung und Blickwinkel wird auch folgende Definition verwendet:<br />
* weiche Echtzeitanforderungen: Das System muss in der angegebenen Zeitspanne reagieren, nicht jedoch das vollständige Ergebnis liefern. Tritt keine Reaktion ein, gilt der Vorgang als fehlgeschlagen und wird abgebrochen. Alternativ können weiche Echtzeitsysteme auch zeitweise das Ergebnis zwar korrekt, aber zu spät liefern.<br />
* harte Echtzeitanforderungen: Das System muss im definierten Zeitfenster das Ergebnis vollständig präsentieren.<br />
<br />
Innerhalb der weichen Echtzeitsysteme finden sich manchmal weitere Klassifikationen, die die Überschreitungen der Antwortzeiten feiner differenzieren. Häufige Kriterien sind:<br />
* Das Ergebnis hat keinen Wert mehr; die Berechnung wird abgebrochen und verworfen.<br />
* Der Nutzen des Ergebnisses sinkt ab Ende der Antwortzeit.<br />
* Eine Überschreitung der Antwortzeit wird hingenommen, und das Ergebnis wird angenommen, wenn es vorliegt.<br />
Bereits die Definition von weichen Echtzeitsystemen ist von eher umgangssprachlicher Natur, so dass eine feinere Unterteilung erst recht schwierig zu geben ist.<br />
<br />
Die [[DIN-Norm]] 44300 definiert unter Echtzeitbetrieb (dort Realzeitbetrieb genannt) den [[Betrieb]] eines Rechnersystems, bei dem Programme zur Verarbeitung anfallender Daten ständig betriebsbereit sind, derart, dass die Verarbeitungsergebnisse innerhalb einer vorgegebenen Zeitspanne verfügbar sind. Diese [[Normung|Begriffsnorm]] hat sich in der Praxis als alleinig akzeptierte Definition nicht durchsetzen können, es dominieren die Begriffe aus dem englischen Sprachraum.<br />
<br />
=== Beispiele ===<br />
* Systeme für [[Videokonferenz]]en müssen Bild und Ton innerhalb von Millisekunden aufnehmen, vorverarbeiten, versenden und darstellen. Wenn dies bei einigen Bildern nicht gelingt, „ruckelt“ die Darstellung zwar etwas, es kann danach jedoch ohne negative Folgen weitergearbeitet werden. Das System muss also nur weiche Echtzeitanforderungen erfüllen.<br />
* Ein Programm, das (längere) Videosequenzen aufzeichnen soll, muss hingegen harte Echtzeitanforderungen erfüllen. Wenn es nicht gelingt, die Videodaten schnell genug auf den Datenträger zu speichern, gehen Bilder verloren und das Video ist für viele Anwendungen unbrauchbar.<br />
* Die elektronische [[Motorsteuerung]] in einem [[Automobil|Auto]] muss harte Echtzeitanforderungen erfüllen, sonst [[Stottern (Motor)|stottert]] der Motor oder das Auto bleibt stehen. Der Ausfall bzw. eine nicht korrekt eingehaltene harte Echtzeit kann einen mechanischen Schaden oder im schlimmsten Fall einen Unfall verursachen.<br />
<br />
== Umsetzung ==<br />
Echtzeit beschreibt das zeitliche Ein- bzw. Ausgangsverhalten eines Systems, sagt aber nichts über dessen Realisierung aus. Ein Echtzeitsystem kann ein Rechner mit einer geeigneten Software oder eine reine Hardware-Lösung sein. Für Anforderungen mit sogenannten weichen Grenzen werden häufig Standard-[[EDV]]-Systeme verwendet. Für Anforderungen mit harten Grenzen werden spezielle Architekturen (Hardware und Software) verwendet, z.&nbsp;B. [[Mikrocontroller]]-, [[Field Programmable Gate Array|FPGA]]- oder [[Digitaler Signalprozessor|DSP]]-basierte Lösungen.<br />
<br />
=== Feste periodische Triggerung ===<br />
Ein Ansatz, eine geforderte Reaktionszeit für spezifische Anwendungen zu erfüllen, ist der Einsatz einer eigenen Funktionseinheit, die nur diese Aufgabe mit einer fixen [[Frequenz]], gewonnen aus der Reaktionszeit <math>f=\frac{1}{\text{Reaktionszeit}}</math>, erfüllt. Ein Beispiel einer Hardwareumsetzung ist eine [[Digitalisierung]] mit einem [[Analog-Digital-Umsetzer|ADC]] als Funktionseinheit und einem [[Schwingquarz|Taktquarz]], z.&nbsp;B. zur Digitalisierung von Klängen für eine [[Audio-CD]] mit einer nötigen Frequenz von 44,1&nbsp;kHz (entspricht einer Reaktionszeit ≤&nbsp;22,7&nbsp;Mikrosekunden). Eine solche Lösung erfüllt zuverlässig das harte Echtzeitkriterium, da sie spezifisch zur Erfüllung einer einzigen Aufgabe designt wurde. Jedoch, eine komplexe Echtzeitaufgabe zerlegt nach diesem Prinzip (wie z.&nbsp;B. eine Regelung mit vielen Eingangsparametern mit großer Dynamik in den geforderten Reaktionszeiten), kann durch die zu lösende [[Asynchronität]] und redundante Systemteile teuer und komplex werden.<br />
<br />
=== Synchrone Ansätze ===<br />
Ein verallgemeinerter Ansatz für mehrere Aufgaben ist die Verwendung einer einzigen, gleichgetakteten (synchronen) Lösungsplattform, umgesetzt typischerweise mit [[Mikrocontroller]]n, [[Digitaler Signalprozessor|DSPs]], [[CPU]]s oder [[Field Programmable Gate Array|FPGAs]]. Die für die Echtzeitbedingung geforderten Reaktionszeiten werden in diesem Lösungskonzept dadurch zu erfüllen versucht, dass alle Aufgaben sequentiell so schnell wie möglich abgearbeitet werden. Die Echtzeitbedingung ist sicher erfüllt, wenn die kleinste geforderte Reaktionszeit unter den Aufgaben doppelt so groß ist wie die ''[[Maximale Laufzeit]]'' für einen Gesamtdurchlauf aller Aufgaben.<br />
<br />
Ein Beispiel wäre eine Echtzeit-[[Regelung (Natur und Technik)|Regelung]] mit einem Mikrocontroller, der mehrere Eingabeparameter entgegennimmt, eine Reaktion berechnet und diese zurückgibt. Angenommen, es soll auf das Überschreiten einer Temperatur <math>t</math> mit einer Reaktionszeit ≤&nbsp;1&nbsp;s und auf eine Drehzahl <math>d</math> unter ≤&nbsp;1&nbsp;ms mit dem Setzen eines Abschaltsignals <math>O=1</math> reagiert werden. Eine technisch einfache Lösung auf einem Mikroprozessor mit einer 2-MHz-Taktfrequenz wäre eine einfache [[Endlosschleife|Endlos-Programmschleife]] (Beispiel in Intel-Syntax [[Assemblersprache|Pseudoassemblercode]], Semikolon ist Kommentarzeichen):<br />
<br />
<syntaxhighlight lang="asm"><br />
mov a, 10000 ; Grenzwert der Drehzahl<br />
mov b, 30 ; Grenzwert der Temperatur<br />
mov O,1 ; Abschaltsignal<br />
<br />
:loop ; Markierung im Programmfluss (keine Instruktion, wird vom Assembler für Sprungadressen verwendet)<br />
in d,PORT1 ; einlesen der aktuellen drehzahl-Werte<br />
in t,PORT2 ; einlesen der aktuellen temp-Werte<br />
<br />
:drehcheck<br />
cmp d,a ; prüfe die Drehzahl<br />
jg tempcheck; wenn Grenzwert nicht erreicht, springe zu :tempcheck<br />
out PORT3,O ; Grenzwert erreicht! setze Abschaltsignal<br />
<br />
:tempcheck<br />
cmp t,b ; prüfe die Temperatur<br />
jg loop ; wenn Grenzwert nicht erreicht, springe zu :loop<br />
out PORT3,O ; Grenzwert erreicht! setze Abschaltsignal<br />
<br />
jmp loop ;unbedingter Sprung zur Marke :loop (Endlosschleife)<br />
</syntaxhighlight><br />
<br />
Unter der Annahme, dass jeder Befehl auf diesem Prozessor (jede Codezeile) einen [[Taktzyklus]] an Zeit kostet, wird ein Prüfdurchlauf <math>t_{\text{loop}}</math> in 6&nbsp;Taktzyklen durchgeführt, mit einer [[Worst case|Worst-case]]-Reaktionszeit von 12&nbsp;Taktzyklen für die Temperatur (<math>\frac{12}{2000000}=0{,}006\,\text{ms}</math>) und 11 für die Drehzahl (<math>\frac{11}{2000000}=0{,}0055\,\text{ms}</math>). Die harten Echtzeitanforderungen sind mit dieser Regelung erfüllt, jedoch um Größenordnungen schneller, als es eigentlich nötig wäre ([[Wirtschaftlichkeit|ineffizient]]). Eine Erweiterung der Echtzeitregelung z.&nbsp;B. um den Test eines Drucks <math>p</math> ist durch diese Überdimensionierung des Systems möglich. Jedoch, die erreichte Reaktionszeit für ''jede'' der Teilaufgaben wächst mit der Gesamtablaufzeit <math>t_{loop}</math> mit. Die Grenze dieses Designs ist also erreicht, wenn im Worst-case-Fall die doppelte Gesamtablaufzeit <math>t_{loop}</math> die Reaktionszeit für eine Teilaufgabe überschreitet.<br />
<br />
Dieses Konzept ist das übliche Paradigma auf dem Computer bei Multimediaanwendungen wie [[Mediaplayer|Video]], [[Demoszene|Demos]] und [[Computerspiele|Spielen]]. Typischerweise wird damit nur das ''weiche Echtzeitbedingungskriterium'' erfüllt, da eine ''Worst-case-Abarbeitungszeit/Reaktionszeit'' aufgrund der Komplexität des Systems nicht bestimmbar (oder wie im obigen Beispiel, nicht abzählbar) und/oder nicht [[deterministisch]] ist. Bei Multimediaanwendungen äußert sich dieser Nichtdeterminismus z.&nbsp;B. über variierende [[Bildwiederholfrequenz|FPS]] oder Reaktionszeiten bei Eingaben. Gründe für diesen Nichtdeterminismus sind das Vorhandensein mehrerer Codepfade mit unterschiedlichen Ausführungszeiten, das Warten der Ausführung auf Ein- oder Ausgaben oder einfach Aufgaben mit variabler Komplexität (z.&nbsp;B. variierende Szeneriekomplexität in [[Computerspiel]]en).<br />
<br />
=== Prozessbasierte Ansätze ===<br />
Auf komplexen Echtzeitsystemen (wie einer SPS oder einem als Echtzeitsystem agierenden Computer) laufen in der Regel verschiedene [[Prozess (Computer)|Prozesse]] gleichzeitig und mit unterschiedlicher Priorität ab, geregelt durch ein [[Echtzeitbetriebssystem]]. Die minimale Reaktionszeit wird durch die Zeitdauer für einen vollständigen Wechsel von einem Prozess niederer Priorität zu einem Prozess höherer Priorität definiert. Dieser Wechsel wird dann eingeleitet, wenn ein definiertes Ereignis eintritt, z.&nbsp;B. generiert durch einen externen Trigger (in der Computertechnik [[Interrupt]]) oder interne Timer. Die eigentliche Abarbeitung des aufgerufenen Prozesses beginnt erst nach dem ausgeführten Prozesswechsel. Hiermit wird die Erfüllung des ''harten'' Echtzeitkriteriums einer höherpriorisierten Aufgabe erzwungen, indem die Ausführung einer niedrigerpriorisierten Aufgabe unterbrochen wird ([[Präemptives Multitasking]]).<br />
<br />
Prinzipiell ist auch ein [[Personal Computer|PC]] echtzeitfähig, allerdings nicht oder nur sehr bedingt, wenn er mit klassischen [[Multitasking]]-Betriebssystemen betrieben wird, da dann viele [[asynchron]]e Prozesse nicht-deterministisch ablaufen. [[Echtzeitbetriebssystem]]e sind oftmals ebenfalls multitaskingfähig, verfügen jedoch über einen anderen [[Prozess-Scheduler|Scheduler]] als konventionelle Systeme. Es gibt auch Lösungen, bei denen ein bestehendes Standardbetriebssystem durch Hinzufügen spezieller Software echtzeitfähig gemacht wird. Dies hat den Vorteil, dass nur die wirklich zeitkritischen Vorgänge im Echtzeitsystem ablaufen müssen und für den Rest die normalen APIs (inkl. [[Compiler]] oder [[GUI]]s) des zugrundeliegenden Betriebssystems verwendet werden können.<br />
<br />
Auch in [[Speicherprogrammierbare Steuerung|speicherprogrammierbaren Steuerungen]] (SPS) und [[Prozessleitsystem]]en (PLS) werden Echtzeitbetriebssysteme eingesetzt, die aber dem Anwender nicht direkt zugänglich sind.<br />
<br />
Bei einer Software, die Echtzeitbedingungen erfüllen soll, muss die [[maximale Laufzeit]] bestimmbar sein und darf keinen nicht oder nur bedingt beeinflussbaren Faktoren unterliegen, muss also [[deterministisch]] sein. Dies wird u.&nbsp;a. durch folgende System- oder Softwareeigenschaften beeinflusst:<br />
* Ein Problem ist komplexe I/O, z.&nbsp;B. [[Festplatte]]n mit Cache und automatischem Ruhezustand oder Netzwerk-Kommunikation mit nicht-deterministischem Zeitverhalten (z.&nbsp;B. [[Internet Protocol|IP]]).<br />
* Die Laufzeit von Betriebssystem- und Bibliotheksaufrufen muss mit berücksichtigt werden.<br />
* Der Bedarf an Ressourcen, insbesondere der Bedarf an [[Dynamischer Speicher|Speicher]], muss bekannt sein. Die Laufzeitumgebung und die Hardware müssen den Ressourcenbedarf decken können.<br />
* Bei [[Rekursion]] muss die maximale Rekursionstiefe, bei [[Schleife (Programmierung)|Schleifen]] muss die maximale Anzahl an [[Iteration]]en feststehen.<br />
* Speicherverwaltung: Es muss daher dafür gesorgt werden, dass die Echtzeitmodule von der [[Virtuelle Speicherverwaltung|virtuellen Speicherverwaltung]] des Betriebssystems unbeeinflusst bleiben und niemals ausgelagert werden (typischerweise verwenden Echtzeitsysteme deshalb überhaupt keine virtuelle Speicherverwaltung).<br />
* Besonders problematisch ist auch zum Beispiel der Einsatz [[Automatische Speicherbereinigung|automatischer Speicherbereinigung]] (Garbage Collector), dessen Laufzeit sehr pessimistisch abgeschätzt werden muss.<br />
* Das Verhalten bei drohender Zeitüberschreitung muss definiert und vorhersehbar sein.<br />
<br />
== Beispiele für Echtzeitsysteme ==<br />
Rechner zur Steuerung von technischen Einrichtungen oder Prozessen wie Maschinen, verfahrenstechnischen Anlagen oder Verkehrsmitteln sind praktisch immer Echtzeitsysteme.<br />
Ein Echtzeitsystem reagiert also auf alle Ereignisse rechtzeitig und verarbeitet die Daten „schritthaltend“ mit dem technischen Prozess. Es wird sozusagen nicht vom technischen Prozess abgehängt – weder im Normalfall noch in kritischen Situationen.<br />
<br />
* Die Temperatur eines Apparates in einer [[Verfahrenstechnik|verfahrenstechnischen]] Anlage ändert sich meist nur innerhalb von Minuten. Eine Steuerung, die innerhalb von mehreren Sekunden auf Abweichungen reagiert, kann daher noch als echtzeitfähig gelten. Die Reaktionszeit liegt im Sekundenbereich.<br />
* Graphische Anwendungen auf dem [[Computer]] wie [[Computerspiel|Spiele]] oder [[Demoszene|Demos]]<ref name="CESCG-2002">{{cite web|author=Boris Burger, Ondrej Paulovic, Milos Hasan|url=http://www.cescg.org/CESCG-2002/BBurger |work=CESCG-2002|title=Realtime Visualization Methods in the Demoscene |publisher=[[Technische Universität Wien]] |language=en|date=2002-03-21|accessdate=2011-03-21}}</ref> erfordern bei der Aktualisierung der [[Bildschirmanzeige]] Reaktionszeiten von ≤&nbsp;63&nbsp;ms (≥&nbsp;14–16&nbsp;[[Frames per second|Bilder pro Sekunde]]), um als flüssiger Ablauf wahrgenommen zu werden.<br />
* Computer-Programme, deren Reaktionszeiten auf Anwender-Eingaben mit [[Eingabegerät]]en ([[Tastatur]], [[Maus (Computer)|Maus]] etc.) unter 10&nbsp;ms liegen, werden subjektiv als ''sofort'' wahrgenommen (siehe [[Usability]]).<br />
<br />
* Die [[Airbag]]-Steuerung im [[Automobil|Auto]] muss dauernd und innerhalb kürzester Zeit die Messwerte der Sensoren verarbeiten und entscheiden, ob und wie stark der Airbag ausgelöst wird; die Reaktionszeit liegt im Bereich von 1&nbsp;ms.<br />
* Ein [[Antiblockiersystem]] im [[Automobil|Auto]] hat typischerweise eine Regelfrequenz von ≥100 Hz, d.&nbsp;h. die Reaktionszeit liegt unter 10&nbsp;ms.<br />
* In [[Werkzeugmaschine]]n ändert sich die gegenseitige Lage von Werkstück und Werkzeug. Heutige [[Computerized Numerical Control|CNC-Steuerungen]] haben zeitliche Auflösungen der Bewegungsregelung von 125&nbsp;µs.<br />
* In einem Auto muss das elektronische [[Motormanagement]] zu bestimmten Zeitpunkten seine Ergebnisse (einzuspritzende Kraftstoffmenge, Zündzeitpunkt) liefern. Später eintreffende Ergebnisse sind wertlos. Die Reaktionszeit hängt direkt von der Drehzahl ab und geht für typische Motoren bei hohen Drehzahlen bei vielen Zylindern herunter bis auf 1&nbsp;ms.<br />
* Für die genaue Ablenkung von Elektronenstrahlen, z.&nbsp;B. beim [[Schweißen#Elektronenstrahlschweißen|Elektronenstrahlschweißen]], müssen Magnetfelder mit Frequenzen von 100&nbsp;kHz bis 1&nbsp;MHz geregelt werden. Die Reaktionszeit liegt zwischen 1&nbsp;µs und 10&nbsp;µs.<br />
<br />
== Gestaltungsparadigmen ==<br />
Bei der Realisierung gibt es zwei Gestaltungsparadigmen: ''ereignisgesteuert'' und ''zeitgesteuert''.<br />
<br />
Bei der Ereignissteuerung wird auf ein von außen kommendes Ereignis (meist mittels [[Interrupt]]) schnellstmöglich reagiert, d.&nbsp;h. eine Verarbeitung gestartet. Gegebenenfalls wird eine gerade laufende Verarbeitung dabei unterbrochen. Die Ereignissteuerung hat den Vorteil, dass sie mit sehr geringem Zeitverlust auf das Ereignis reagiert. Weil sie intuitiv ist, ist sie auch weit verbreitet. Der Hauptnachteil ist, dass es nicht verhinderbar ist, dass mehrere Ereignisse innerhalb kurzer Zeit auftreten können und es damit zu einer Überlastung des Echtzeitsystems (mit Verlust von Ereignissen und/oder Überschreitung von Zeitlimits) kommen kann. Um dieses Problem zu umgehen, muss klar definiert werden, welche Ereignisse mit welcher maximalen Häufigkeit auftreten können. Typischerweise wird mittels [[Priorität]]en bestimmt, in welcher Reihenfolge gleichzeitig auftretende Ereignisse abgearbeitet werden sollen. In einer harten Echtzeitumgebung muss sichergestellt werden, dass auch im ungünstigsten Fall (maximale Anzahl und Frequenz aller möglichen Ereignisse) selbst der Prozess mit der niedrigsten Priorität sein Ergebnis immer noch innerhalb der Zeitschranken abliefern kann, d.&nbsp;h. immer noch genügend Rechenzeit zugeteilt bekommt, um seine Aufgabe zu erfüllen.<br />
<br />
Bei der Zeitsteuerung werden Verarbeitungen aufgrund eines vorher festgelegten Zeitplans gestartet. Jedem Prozess wird also eine genau definierte Zeitscheibe im Scheduler zugeteilt (z.&nbsp;B. alle 100&nbsp;ms genau 10&nbsp;ms). Der Vorteil liegt darin, dass Überlastungen grundsätzlich ausgeschlossen werden können (sofern der Prozess niemals die zugeteilte Zeit überschreitet). Das Verhalten der Anwendung ist für alle Zeit vorhersagbar, was die Zeitsteuerung für sicherheitskritische Anwendungen geeignet macht. Der Nachteil der Zeitsteuerung ist der höhere Planungsaufwand (die Zeitzuteilung muss während der Implementation der Prozesse genau bekannt sein) und der damit verbundene notwendige Werkzeugeinsatz. Ein weiterer Vorteil ist, dass bei der Zeitsteuerung die vorhandenen Ressourcen (CPU-Zeit, Speicher) zu 100&nbsp;Prozent ausgelastet werden können, während das bei der Ereignissteuerung aufgrund ihrer [[Asynchron]]ität nicht möglich ist. Bei der Ereignissteuerung muss bei den Ressourcen immer etwas Reserve eingeplant werden, damit das System bei großer Last Zeit „aufholen“ kann.<br />
<br />
== Siehe auch ==<br />
* [[Simulation]]<br />
<br />
== Literatur ==<br />
* Dieter Zöbel: ''Echtzeitsysteme - Grundlagen der Planung''. Springer Verlag, 2020, ISBN 978-3-662-60421-2.<br />
* Sascha Roeck: ''Echtzeitsimulation von Produktionsanlagen mit realen Steuerungssystemen''. Jost-Jetter Verlag, 2007, ISBN 3-939890-24-3.<br />
* [[Hermann Kopetz]]: ''Real Time Systems. Design Principles for Distributed Embedded Applications'' (= ''The Kluwer International Series in Engineering and Computer Science.'' Vol. 395). Kluwer Academic Publishers, Boston MA u.&nbsp;a. 1997, ISBN 0-7923-9894-7.<br />
* H. Zedan (Hrsg.): ''Real-time Systems. Theory and Applications.'' Proceedings of the conference, organized by the British Computer Society, York, 28. – 29. September 1989. North-Holland u.&nbsp;a., Amsterdam u.&nbsp;a. 1990, ISBN 0-444-88625-7.<br />
<br />
== Weblinks ==<br />
* ''Comp.realtime: Frequently Asked Questions (FAQ)'':<br />
*: regelmäßig in der Newsgroup ''comp.realtime'' gepostet<br />
*:* [http://www.faqs.org/faqs/realtime-computing/faq/ im HTML-Format]<br />
*:* [ftp://rtfm.mit.edu/pub/usenet/comp.realtime/ über anonymous FTP]<br />
* [http://www.faqs.org/faqs/realtime-computing/ faqs.org]<br />
* [http://www.dedicated-systems.com/encyc/ dedicated-systems.com]<br />
* [http://www.dedicated-systems.com/magazine/magazine.htm dedicated-systems.com]<br />
* [https://rt.wiki.kernel.org/index.php/Frequently_Asked_Questions Linux Realtime FAQ]<br />
<br />
== Einzelnachweise ==<br />
<references /><br />
<br />
[[Kategorie:Echtzeitsystem| ]]<br />
<br />
[[nl:Realtime]]</div>Rob-kaiserhttps://de.wikipedia.org/w/index.php?title=Echtzeitsystem&diff=200650574Echtzeitsystem2020-06-05T10:26:58Z<p>Rob-kaiser: /* Beispiele */</p>
<hr />
<div>Als '''Echtzeitsysteme''' ({{enS|real-time systems}}) werden „Systeme zur ''unmittelbaren'' Steuerung und Abwicklung von Prozessen“<ref>''Informatik – Ein Fachlexikon für Studium und Praxis''. Dudenverlag, Mannheim 2003, ISBN 3-411-10023-0, S. 537</ref> bezeichnet, die dafür an sie gestellte quantitative '''Echtzeitanforderungen''' erfüllen müssen. Diese kommen in diversen Technikgebieten zur Anwendung, etwa in der [[Prozessleittechnik]], in [[Motorsteuerung]]en, in der Satellitensystemtechnik, in Signal- und Weichenstellanlagen, in der [[Robotik]] und in weiteren Bereichen.<br />
<br />
Oft besteht die Anforderung darin, dass ein Ergebnis innerhalb eines vorher fest definierten Zeitintervalls garantiert berechnet ist, also vor einer bestimmten Zeitschranke vorliegt. Die Größe des Zeitintervalls spielt dabei keine Rolle: Während bei einigen Aufgaben (z.&nbsp;B. in der Motorsteuerung) eine Sekunde bereits zu lang sein kann, reichen für andere Probleme Stunden oder sogar Tage. Ein Echtzeitsystem muss also nicht nur ein Mess- oder Berechnungsergebnis mit dem richtigen Wert, sondern dasselbe auch noch ''rechtzeitig'' liefern. Andernfalls hat das System versagt.<br />
<br />
In der Praxis lässt sich eine beliebig kleine Zeitschranke mangels genügend schneller Hardware nicht immer realisieren. Daher spricht man auch von „in [[Echtzeit]]“, wenn Programme ohne spürbare Verzögerung arbeiten. Diese Definition ist jedoch sehr unsauber. Grundsätzlich falsch ist es, „Echtzeitsystem“ als Synonym für „besonders schnell“ anzusehen. Im Gegenteil, Echtzeitsysteme müssen entsprechende Leerläufe einplanen, um auch in besonders fordernden Situationen ihren Echtzeitanforderungen gerecht zu werden.<br />
<br />
== Harte, weiche und feste Echtzeit ==<br />
=== Definition ===<br />
Abhängig von den Folgen wird manchmal zwischen harter Echtzeit (engl. {{lang|en|''hard real-time''}}), weicher Echtzeit (engl. {{lang|en|''soft real-time''}}) und fester Echtzeit (engl. {{lang|en|''firm real-time''}}) unterschieden. Hierfür gelten jeweils unterschiedliche Echtzeitanforderungen.<br />
<br />
* '''harte''' Echtzeitanforderungen: Eine Überschreitung der Antwortzeit wird als ein Versagen gewertet. Nach einer exakten Zeiterfassung der bereitzustellenden Anwendung sind Berechnungen gemäß der Theorie der Echtzeitsysteme notwendig. Echtzeitsysteme liefern das korrekte Ergebnis immer innerhalb der vorgegebenen Zeitschranken. Auf diese Eigenschaft kann man sich beim Einsatz eines harten Echtzeitsystems verlassen.<br />
<br />
* '''weiche''' Echtzeitanforderungen: Solche Systeme arbeiten ''typischerweise'' alle ankommenden Eingaben ''schnell genug'' ab. Die Antwortzeit erreicht beispielsweise einen akzeptablen [[Mittelwert]] oder ein anderes [[Statistik|statistisches]] Kriterium. Die Zeitanforderungen sind hier als Richtlinien zu sehen. Ein Überschreiten der Zeitanforderung muss nicht als Versagen gewertet werden. Zum einen kann die Zeit häufig überschritten werden, solange sie sich noch in einem Toleranzbereich befindet. Zum anderen kann sie selten stark überschritten werden.<ref name="Echtzeitsysteme-S321">{{Literatur |Autor=Heinz Wörn, Uwe Brinkschulte |Titel=Echtzeitsysteme. Grundlagen, Funktionsweisen, Anwendungen |Verlag=Springer |Ort=Berlin u.&nbsp;a. |Datum=2005 |ISBN=3-540-20588-8 |Seiten=321 |DOI=10.1007/b139050}}</ref><br />
<br />
* '''feste''' Echtzeitanforderungen: Bei festen Echtzeitanforderungen droht kein unmittelbarer Schaden.<ref name="Echtzeitsysteme-S321" /> Nach Ablauf der Zeitanforderungen ist das Ergebnis der Berechnung jedoch nutzlos und kann verworfen werden.<br />
<br />
Je nach Problemstellung und Blickwinkel wird auch folgende Definition verwendet:<br />
* weiche Echtzeitanforderungen: Das System muss in der angegebenen Zeitspanne reagieren, nicht jedoch das vollständige Ergebnis liefern. Tritt keine Reaktion ein, gilt der Vorgang als fehlgeschlagen und wird abgebrochen. Alternativ können weiche Echtzeitsysteme auch zeitweise das Ergebnis zwar korrekt, aber zu spät liefern.<br />
* harte Echtzeitanforderungen: Das System muss im definierten Zeitfenster das Ergebnis vollständig präsentieren.<br />
<br />
Innerhalb der weichen Echtzeitsysteme finden sich manchmal weitere Klassifikationen, die die Überschreitungen der Antwortzeiten feiner differenzieren. Häufige Kriterien sind:<br />
* Das Ergebnis hat keinen Wert mehr; die Berechnung wird abgebrochen und verworfen.<br />
* Der Nutzen des Ergebnisses sinkt ab Ende der Antwortzeit.<br />
* Eine Überschreitung der Antwortzeit wird hingenommen, und das Ergebnis wird angenommen, wenn es vorliegt.<br />
Bereits die Definition von weichen Echtzeitsystemen ist von eher umgangssprachlicher Natur, so dass eine feinere Unterteilung erst recht schwierig zu geben ist.<br />
<br />
Die [[DIN-Norm]] 44300 definiert unter Echtzeitbetrieb (dort Realzeitbetrieb genannt) den [[Betrieb]] eines Rechnersystems, bei dem Programme zur Verarbeitung anfallender Daten ständig betriebsbereit sind, derart, dass die Verarbeitungsergebnisse innerhalb einer vorgegebenen Zeitspanne verfügbar sind. Diese [[Normung|Begriffsnorm]] hat sich in der Praxis als alleinig akzeptierte Definition nicht durchsetzen können, es dominieren die Begriffe aus dem englischen Sprachraum.<br />
<br />
=== Beispiele ===<br />
* Systeme für [[Videokonferenz]]en müssen Bild und Ton innerhalb von Millisekunden aufnehmen, vorverarbeiten, versenden und darstellen. Wenn dies bei einigen Bildern nicht gelingt, „ruckelt“ die Darstellung zwar etwas, es kann danach jedoch ohne negative Folgen weitergearbeitet werden. Das System muss also nur weiche Echtzeitanforderungen erfüllen.<br />
* Ein Programm, das (längere) Videosequenzen aufzeichnen soll, muss hingegen harte Echtzeitanforderungen erfüllen. Wenn es nicht gelingt, die Videodaten schnell genug auf den Datenträger zu speichern, gehen Bilder verloren und das Video ist für viele Anwendungen unbrauchbar.<br />
* Die elektronische [[Motorsteuerung]] in einem [[Automobil|Auto]] muss harte Echtzeitanforderungen erfüllen, sonst [[Stottern (Motor)|stottert]] der Motor oder das Auto bleibt stehen. Der Ausfall bzw. eine nicht korrekt eingehaltene harte Echtzeit kann einen mechanischen Schaden oder im schlimmsten Fall einen Unfall verursachen.<br />
<br />
== Umsetzung ==<br />
Echtzeit beschreibt das zeitliche Ein- bzw. Ausgangsverhalten eines Systems, sagt aber nichts über dessen Realisierung aus. Ein Echtzeitsystem kann ein Rechner mit einer geeigneten Software oder eine reine Hardware-Lösung sein. Für Anforderungen mit sogenannten weichen Grenzen werden häufig Standard-[[EDV]]-Systeme verwendet. Für Anforderungen mit harten Grenzen werden spezielle Architekturen (Hardware und Software) verwendet, z.&nbsp;B. [[Mikrocontroller]]-, [[Field Programmable Gate Array|FPGA]]- oder [[Digitaler Signalprozessor|DSP]]-basierte Lösungen.<br />
<br />
=== Feste periodische Triggerung ===<br />
Ein Ansatz, eine geforderte Reaktionszeit für spezifische Anwendungen zu erfüllen, ist der Einsatz einer eigenen Funktionseinheit, die nur diese Aufgabe mit einer fixen [[Frequenz]], gewonnen aus der Reaktionszeit <math>f=\frac{1}{\text{Reaktionszeit}}</math>, erfüllt. Ein Beispiel einer Hardwareumsetzung ist eine [[Digitalisierung]] mit einem [[Analog-Digital-Umsetzer|ADC]] als Funktionseinheit und einem [[Schwingquarz|Taktquarz]], z.&nbsp;B. zur Digitalisierung von Klängen für eine [[Audio-CD]] mit einer nötigen Frequenz von 44,1&nbsp;kHz (entspricht einer Reaktionszeit ≤&nbsp;22,7&nbsp;Mikrosekunden). Eine solche Lösung erfüllt zuverlässig das harte Echtzeitkriterium, da sie spezifisch zur Erfüllung einer einzigen Aufgabe designt wurde. Jedoch, eine komplexe Echtzeitaufgabe zerlegt nach diesem Prinzip (wie z.&nbsp;B. eine Regelung mit vielen Eingangsparametern mit großer Dynamik in den geforderten Reaktionszeiten), kann durch die zu lösende [[Asynchronität]] und redundante Systemteile teuer und komplex werden.<br />
<br />
=== Synchrone Ansätze ===<br />
Ein verallgemeinerter Ansatz für mehrere Aufgaben ist die Verwendung einer einzigen, gleichgetakteten (synchronen) Lösungsplattform, umgesetzt typischerweise mit [[Mikrocontroller]]n, [[Digitaler Signalprozessor|DSPs]], [[CPU]]s oder [[Field Programmable Gate Array|FPGAs]]. Die für die Echtzeitbedingung geforderten Reaktionszeiten werden in diesem Lösungskonzept dadurch zu erfüllen versucht, dass alle Aufgaben sequentiell so schnell wie möglich abgearbeitet werden. Die Echtzeitbedingung ist sicher erfüllt, wenn die kleinste geforderte Reaktionszeit unter den Aufgaben doppelt so groß ist wie die ''[[Maximale Laufzeit]]'' für einen Gesamtdurchlauf aller Aufgaben.<br />
<br />
Ein Beispiel wäre eine Echtzeit-[[Regelung (Natur und Technik)|Regelung]] mit einem Mikrocontroller, der mehrere Eingabeparameter entgegennimmt, eine Reaktion berechnet und diese zurückgibt. Angenommen, es soll auf das Überschreiten einer Temperatur <math>t</math> mit einer Reaktionszeit ≤&nbsp;1&nbsp;s und auf eine Drehzahl <math>d</math> unter ≤&nbsp;1&nbsp;ms mit dem Setzen eines Abschaltsignals <math>O=1</math> reagiert werden. Eine technisch einfache Lösung auf einem Mikroprozessor mit einer 2-MHz-Taktfrequenz wäre eine einfache [[Endlosschleife|Endlos-Programmschleife]] (Beispiel in Intel-Syntax [[Assemblersprache|Pseudoassemblercode]], Semikolon ist Kommentarzeichen):<br />
<br />
<syntaxhighlight lang="asm"><br />
mov a, 10000 ; Grenzwert der Drehzahl<br />
mov b, 30 ; Grenzwert der Temperatur<br />
mov O,1 ; Abschaltsignal<br />
<br />
:loop ; Markierung im Programmfluss (keine Instruktion, wird vom Assembler für Sprungadressen verwendet)<br />
in d,PORT1 ; einlesen der aktuellen drehzahl-Werte<br />
in t,PORT2 ; einlesen der aktuellen temp-Werte<br />
<br />
:drehcheck<br />
cmp d,a ; prüfe die Drehzahl<br />
jg tempcheck; wenn Grenzwert nicht erreicht, springe zu :tempcheck<br />
out PORT3,O ; Grenzwert erreicht! setze Abschaltsignal<br />
<br />
:tempcheck<br />
cmp t,b ; prüfe die Temperatur<br />
jg loop ; wenn Grenzwert nicht erreicht, springe zu :loop<br />
out PORT3,O ; Grenzwert erreicht! setze Abschaltsignal<br />
<br />
jmp loop ;unbedingter Sprung zur Marke :loop (Endlosschleife)<br />
</syntaxhighlight><br />
<br />
Unter der Annahme, dass jeder Befehl auf diesem Prozessor (jede Codezeile) einen [[Taktzyklus]] an Zeit kostet, wird ein Prüfdurchlauf <math>t_{\text{loop}}</math> in 6&nbsp;Taktzyklen durchgeführt, mit einer [[Worst case|Worst-case]]-Reaktionszeit von 12&nbsp;Taktzyklen für die Temperatur (<math>\frac{12}{2000000}=0{,}006\,\text{ms}</math>) und 11 für die Drehzahl (<math>\frac{11}{2000000}=0{,}0055\,\text{ms}</math>). Die harten Echtzeitanforderungen sind mit dieser Regelung erfüllt, jedoch um Größenordnungen schneller, als es eigentlich nötig wäre ([[Wirtschaftlichkeit|ineffizient]]). Eine Erweiterung der Echtzeitregelung z.&nbsp;B. um den Test eines Drucks <math>p</math> ist durch diese Überdimensionierung des Systems möglich. Jedoch, die erreichte Reaktionszeit für ''jede'' der Teilaufgaben wächst mit der Gesamtablaufzeit <math>t_{loop}</math> mit. Die Grenze dieses Designs ist also erreicht, wenn im Worst-case-Fall die doppelte Gesamtablaufzeit <math>t_{loop}</math> die Reaktionszeit für eine Teilaufgabe überschreitet.<br />
<br />
Dieses Konzept ist das übliche Paradigma auf dem Computer bei Multimediaanwendungen wie [[Mediaplayer|Video]], [[Demoszene|Demos]] und [[Computerspiele|Spielen]]. Typischerweise wird damit nur das ''weiche Echtzeitbedingungskriterium'' erfüllt, da eine ''Worst-case-Abarbeitungszeit/Reaktionszeit'' aufgrund der Komplexität des Systems nicht bestimmbar (oder wie im obigen Beispiel, nicht abzählbar) und/oder nicht [[deterministisch]] ist. Bei Multimediaanwendungen äußert sich dieser Nichtdeterminismus z.&nbsp;B. über variierende [[Bildwiederholfrequenz|FPS]] oder Reaktionszeiten bei Eingaben. Gründe für diesen Nichtdeterminismus sind das Vorhandensein mehrerer Codepfade mit unterschiedlichen Ausführungszeiten, das Warten der Ausführung auf Ein- oder Ausgaben oder einfach Aufgaben mit variabler Komplexität (z.&nbsp;B. variierende Szeneriekomplexität in [[Computerspiel]]en).<br />
<br />
=== Prozessbasierte Ansätze ===<br />
Auf komplexen Echtzeitsystemen (wie einer SPS oder einem als Echtzeitsystem agierenden Computer) laufen in der Regel verschiedene [[Prozess (Computer)|Prozesse]] gleichzeitig und mit unterschiedlicher Priorität ab, geregelt durch ein [[Echtzeitbetriebssystem]]. Die minimale Reaktionszeit wird durch die Zeitdauer für einen vollständigen Wechsel von einem Prozess niederer Priorität zu einem Prozess höherer Priorität definiert. Dieser Wechsel wird dann eingeleitet, wenn ein definiertes Ereignis eintritt, z.&nbsp;B. generiert durch einen externen Trigger (in der Computertechnik [[Interrupt]]) oder interne Timer. Die eigentliche Abarbeitung des aufgerufenen Prozesses beginnt erst nach dem ausgeführten Prozesswechsel. Hiermit wird die Erfüllung des ''harten'' Echtzeitkriteriums einer höherpriorisierten Aufgabe erzwungen, indem die Ausführung einer niedrigerpriorisierten Aufgabe unterbrochen wird ([[Präemptives Multitasking]]).<br />
<br />
Prinzipiell ist auch ein [[Personal Computer|PC]] echtzeitfähig, allerdings nicht oder nur sehr bedingt, wenn er mit klassischen [[Multitasking]]-Betriebssystemen betrieben wird, da dann viele [[asynchron]]e Prozesse nicht-deterministisch ablaufen. [[Echtzeitbetriebssystem]]e sind oftmals ebenfalls multitaskingfähig, verfügen jedoch über einen anderen [[Prozess-Scheduler|Scheduler]] als konventionelle Systeme. Es gibt auch Lösungen, bei denen ein bestehendes Standardbetriebssystem durch Hinzufügen spezieller Software echtzeitfähig gemacht wird. Dies hat den Vorteil, dass nur die wirklich zeitkritischen Vorgänge im Echtzeitsystem ablaufen müssen und für den Rest die normalen APIs (inkl. [[Compiler]] oder [[GUI]]s) des zugrundeliegenden Betriebssystems verwendet werden können.<br />
<br />
Auch in [[Speicherprogrammierbare Steuerung|speicherprogrammierbaren Steuerungen]] (SPS) und [[Prozessleitsystem]]en (PLS) werden Echtzeitbetriebssysteme eingesetzt, die aber dem Anwender nicht direkt zugänglich sind.<br />
<br />
Bei einer Software, die Echtzeitbedingungen erfüllen soll, muss die [[maximale Laufzeit]] bestimmbar sein und darf keinen nicht oder nur bedingt beeinflussbaren Faktoren unterliegen, muss also [[deterministisch]] sein. Dies wird u.&nbsp;a. durch folgende System- oder Softwareeigenschaften beeinflusst:<br />
* Ein Problem ist komplexe I/O, z.&nbsp;B. [[Festplatte]]n mit Cache und automatischem Ruhezustand oder Netzwerk-Kommunikation mit nicht-deterministischem Zeitverhalten (z.&nbsp;B. [[Internet Protocol|IP]]).<br />
* Die Laufzeit von Betriebssystem- und Bibliotheksaufrufen muss mit berücksichtigt werden.<br />
* Der Bedarf an Ressourcen, insbesondere der Bedarf an [[Dynamischer Speicher|Speicher]], muss bekannt sein. Die Laufzeitumgebung und die Hardware müssen den Ressourcenbedarf decken können.<br />
* Bei [[Rekursion]] muss die maximale Rekursionstiefe, bei [[Schleife (Programmierung)|Schleifen]] muss die maximale Anzahl an [[Iteration]]en feststehen.<br />
* Speicherverwaltung: Es muss daher dafür gesorgt werden, dass die Echtzeitmodule von der [[Virtuelle Speicherverwaltung|virtuellen Speicherverwaltung]] des Betriebssystems unbeeinflusst bleiben und niemals ausgelagert werden (typischerweise verwenden Echtzeitsysteme deshalb überhaupt keine virtuelle Speicherverwaltung).<br />
* Besonders problematisch ist auch zum Beispiel der Einsatz [[Automatische Speicherbereinigung|automatischer Speicherbereinigung]] (Garbage Collector), dessen Laufzeit sehr pessimistisch abgeschätzt werden muss.<br />
* Das Verhalten bei drohender Zeitüberschreitung muss definiert und vorhersehbar sein.<br />
<br />
== Beispiele für Echtzeitsysteme ==<br />
Rechner zur Steuerung von technischen Einrichtungen oder Prozessen wie Maschinen, verfahrenstechnischen Anlagen oder Verkehrsmitteln sind praktisch immer Echtzeitsysteme.<br />
Ein Echtzeitsystem reagiert also auf alle Ereignisse rechtzeitig und verarbeitet die Daten „schritthaltend“ mit dem technischen Prozess. Es wird sozusagen nicht vom technischen Prozess abgehängt – weder im Normalfall noch in kritischen Situationen.<br />
<br />
* Die Temperatur eines Apparates in einer [[Verfahrenstechnik|verfahrenstechnischen]] Anlage ändert sich meist nur innerhalb von Minuten. Eine Steuerung, die innerhalb von mehreren Sekunden auf Abweichungen reagiert, kann daher noch als echtzeitfähig gelten. Die Reaktionszeit liegt im Sekundenbereich.<br />
* Graphische Anwendungen auf dem [[Computer]] wie [[Computerspiel|Spiele]] oder [[Demoszene|Demos]]<ref name="CESCG-2002">{{cite web|author=Boris Burger, Ondrej Paulovic, Milos Hasan|url=http://www.cescg.org/CESCG-2002/BBurger |work=CESCG-2002|title=Realtime Visualization Methods in the Demoscene |publisher=[[Technische Universität Wien]] |language=en|date=2002-03-21|accessdate=2011-03-21}}</ref> erfordern bei der Aktualisierung der [[Bildschirmanzeige]] Reaktionszeiten von ≤&nbsp;63&nbsp;ms (≥&nbsp;14–16&nbsp;[[Frames per second|Bilder pro Sekunde]]), um als flüssiger Ablauf wahrgenommen zu werden.<br />
* Computer-Programme, deren Reaktionszeiten auf Anwender-Eingaben mit [[Eingabegerät]]en ([[Tastatur]], [[Maus (Computer)|Maus]] etc.) unter 10&nbsp;ms liegen, werden subjektiv als ''sofort'' wahrgenommen (siehe [[Usability]]).<br />
<br />
* Die [[Airbag]]-Steuerung im [[Automobil|Auto]] muss dauernd und innerhalb kürzester Zeit die Messwerte der Sensoren verarbeiten und entscheiden, ob und wie stark der Airbag ausgelöst wird; die Reaktionszeit liegt im Bereich von 1&nbsp;ms.<br />
* Ein [[Antiblockiersystem]] im [[Automobil|Auto]] hat typischerweise eine Regelfrequenz von ≥100 Hz, d.&nbsp;h. die Reaktionszeit liegt unter 10&nbsp;ms.<br />
* In [[Werkzeugmaschine]]n ändert sich die gegenseitige Lage von Werkstück und Werkzeug. Heutige [[Computerized Numerical Control|CNC-Steuerungen]] haben zeitliche Auflösungen der Bewegungsregelung von 125&nbsp;µs.<br />
* In einem Auto muss das elektronische [[Motormanagement]] zu bestimmten Zeitpunkten seine Ergebnisse (einzuspritzende Kraftstoffmenge, Zündzeitpunkt) liefern. Später eintreffende Ergebnisse sind wertlos. Die Reaktionszeit hängt direkt von der Drehzahl ab und geht für typische Motoren bei hohen Drehzahlen bei vielen Zylindern herunter bis auf 1&nbsp;ms.<br />
* Für die genaue Ablenkung von Elektronenstrahlen, z.&nbsp;B. beim [[Schweißen#Elektronenstrahlschweißen|Elektronenstrahlschweißen]], müssen Magnetfelder mit Frequenzen von 100&nbsp;kHz bis 1&nbsp;MHz geregelt werden. Die Reaktionszeit liegt zwischen 1&nbsp;µs und 10&nbsp;µs.<br />
<br />
== Gestaltungsparadigmen ==<br />
Bei der Realisierung gibt es zwei Gestaltungsparadigmen: ''ereignisgesteuert'' und ''zeitgesteuert''.<br />
<br />
Bei der Ereignissteuerung wird auf ein von außen kommendes Ereignis (meist mittels [[Interrupt]]) schnellstmöglich reagiert, d.&nbsp;h. eine Verarbeitung gestartet. Gegebenenfalls wird eine gerade laufende Verarbeitung dabei unterbrochen. Die Ereignissteuerung hat den Vorteil, dass sie mit sehr geringem Zeitverlust auf das Ereignis reagiert. Weil sie intuitiv ist, ist sie auch weit verbreitet. Der Hauptnachteil ist, dass es nicht verhinderbar ist, dass mehrere Ereignisse innerhalb kurzer Zeit auftreten können und es damit zu einer Überlastung des Echtzeitsystems (mit Verlust von Ereignissen und/oder Überschreitung von Zeitlimits) kommen kann. Um dieses Problem zu umgehen, muss klar definiert werden, welche Ereignisse mit welcher maximalen Häufigkeit auftreten können. Typischerweise wird mittels [[Priorität]]en bestimmt, in welcher Reihenfolge gleichzeitig auftretende Ereignisse abgearbeitet werden sollen. In einer harten Echtzeitumgebung muss sichergestellt werden, dass auch im ungünstigsten Fall (maximale Anzahl und Frequenz aller möglichen Ereignisse) selbst der Prozess mit der niedrigsten Priorität sein Ergebnis immer noch innerhalb der Zeitschranken abliefern kann, d.&nbsp;h. immer noch genügend Rechenzeit zugeteilt bekommt, um seine Aufgabe zu erfüllen.<br />
<br />
Bei der Zeitsteuerung werden Verarbeitungen aufgrund eines vorher festgelegten Zeitplans gestartet. Jedem Prozess wird also eine genau definierte Zeitscheibe im Scheduler zugeteilt (z.&nbsp;B. alle 100&nbsp;ms genau 10&nbsp;ms). Der Vorteil liegt darin, dass Überlastungen grundsätzlich ausgeschlossen werden können (sofern der Prozess niemals die zugeteilte Zeit überschreitet). Das Verhalten der Anwendung ist für alle Zeit vorhersagbar, was die Zeitsteuerung für sicherheitskritische Anwendungen geeignet macht. Der Nachteil der Zeitsteuerung ist der höhere Planungsaufwand (die Zeitzuteilung muss während der Implementation der Prozesse genau bekannt sein) und der damit verbundene notwendige Werkzeugeinsatz. Ein weiterer Vorteil ist, dass bei der Zeitsteuerung die vorhandenen Ressourcen (CPU-Zeit, Speicher) zu 100&nbsp;Prozent ausgelastet werden können, während das bei der Ereignissteuerung aufgrund ihrer [[Asynchron]]ität nicht möglich ist. Bei der Ereignissteuerung muss bei den Ressourcen immer etwas Reserve eingeplant werden, damit das System bei großer Last Zeit „aufholen“ kann.<br />
<br />
== Siehe auch ==<br />
* [[Simulation]]<br />
<br />
== Literatur ==<br />
* Sascha Roeck: ''Echtzeitsimulation von Produktionsanlagen mit realen Steuerungssystemen''. Jost-Jetter Verlag, 2007, ISBN 3-939890-24-3.<br />
* [[Hermann Kopetz]]: ''Real Time Systems. Design Principles for Distributed Embedded Applications'' (= ''The Kluwer International Series in Engineering and Computer Science.'' Vol. 395). Kluwer Academic Publishers, Boston MA u.&nbsp;a. 1997, ISBN 0-7923-9894-7.<br />
* H. Zedan (Hrsg.): ''Real-time Systems. Theory and Applications.'' Proceedings of the conference, organized by the British Computer Society, York, 28. – 29. September 1989. North-Holland u.&nbsp;a., Amsterdam u.&nbsp;a. 1990, ISBN 0-444-88625-7.<br />
<br />
== Weblinks ==<br />
* ''Comp.realtime: Frequently Asked Questions (FAQ)'':<br />
*: regelmäßig in der Newsgroup ''comp.realtime'' gepostet<br />
*:* [http://www.faqs.org/faqs/realtime-computing/faq/ im HTML-Format]<br />
*:* [ftp://rtfm.mit.edu/pub/usenet/comp.realtime/ über anonymous FTP]<br />
* [http://www.faqs.org/faqs/realtime-computing/ faqs.org]<br />
* [http://www.dedicated-systems.com/encyc/ dedicated-systems.com]<br />
* [http://www.dedicated-systems.com/magazine/magazine.htm dedicated-systems.com]<br />
* [https://rt.wiki.kernel.org/index.php/Frequently_Asked_Questions Linux Realtime FAQ]<br />
<br />
== Einzelnachweise ==<br />
<references /><br />
<br />
[[Kategorie:Echtzeitsystem| ]]<br />
<br />
[[nl:Realtime]]</div>Rob-kaiserhttps://de.wikipedia.org/w/index.php?title=Charlie_Mariano&diff=31387106Charlie Mariano2007-05-05T10:42:09Z<p>Rob-kaiser: </p>
<hr />
<div>[[Bild:Charlie_Mariano_2003.JPG|thumb|240px|right|Charlie Mariano, Jazz an der Donau, Straubing 2003]]'''Charlie Mariano''' (* [[12. November]] [[1923]] in [[Boston]], [[USA]] als ''Carmine Ugo Mariano'') ist ein US-amerikanischer [[Jazz]]-Saxophonist und Flötist.<br />
<br />
Mariano, der als Kind Klavierunterricht bekam und erst mit 17 Jahren zum Saxophon wechselte, begann bereits [[1941]] in professionellen Showbands und spielte in der Folge mit zahlreichen Jazzgrößen (u. a. [[Charlie Parker]], [[Stan Kenton]], [[Dizzy Gillespie]], [[McCoy Tyner]], [[Charles Mingus]]). Bereits 1949 veröffentlichte er Schallplatten unter eigenem Namen. Insbesondere seine Solos auf der Plattenaufnahme der Ballettmusik "The Black Saint and the Sinner Lady" (1963) von Mingus zeigen, welche Ausdrucksstärke und Intensität Mariano auf dem [[Altsaxophon]], seinem Hauptinstrument, entwickeln kann.<br />
<br />
Ende der sechziger Jahre verbrachte er längere Zeit in Südindien, um die dortige Musik und insbesondere das Blasinstrument [[Nagaswaram]] zu studieren. Daraus resultieren bis heute andauernde Kooperationen mit südindischen Musikern wie denen des [[Karnataka|Karnataka College of Percussion]] (diverse Tourneen, zuletzt [[2005]]). <br />
<br />
Seit Anfang der [[1970er]] arbeitete Mariano vornehmlich in Europa. Dabei hat er sich einerseits dem [[Rockjazz]] zugewandt, in den er Elemente der südindischen Musik einfließen ließ (bei Embryo (München) und in [[Jasper van't Hof]]s "Pork Pie"). Andererseits betonte er - insbesondere in eigenen Gruppen, aber auch in der Gruppe von [[Eberhard Weber]] und im Zusammenspiel mit [[Zbigniew Seifert]] - das lyrische Spiel. Mariano gehört auch zu den Gründungsmitgliedern des [[United Jazz and Rock Ensemble]], der "Band der Bandleader". Neben vielen anderen Besetzungen, auch mit jüngeren Musikern, tritt er häufig im Trio mit [[Ali Haurand]] und [[Daniel Humair]] auf. Seit seiner Zusammenarbeit für das Album "Savannah Samurai" (1998) mit dem Freiburger Jazzbassisten [[Dieter Ilg]] unterhalten Mariano und Ilg ein kammermusikalisches Jazz-Duo.<br />
<br />
Nicht nur in der Pop-Musik hat er seine Spuren durch Mitwirkung auf zahlreichen Alben ( z. B. von [[Herbert Grönemeyer]], [[Konstantin Wecker]], [[Embryo (Band)|Embryo]] u. v. a) hinterlassen, sondern auch im Kontext der sog. [[Weltmusik]] bei [[Rabih Abou-Khalil]], mit [[Dino Saluzzi]] oder den [[Dissidenten (Band)|Dissidenten]].<br />
<br />
Von 1959 bis 1967 war er mit der Jazzpianistin und Bandleaderin [[Toshiko Akiyoshi]] verheiratet, mit der er auch zusammen musizierte. 1963 wurde eine gemeinsame Tochter, die Sängerin und Schauspielerin [[Monday Michiru]], geboren. Nachdem Mariano längere Zeit ein Nomadenleben zwischen den USA, Europa und Asien geführt hatte, lebte er seit [[1986]] ständig mit der Zeichnerin Dorothee Mariano in [[Köln]]. Im Jahr 2005 hat er sich von Dorothee getrennt.<br />
<br />
== Diskografie (Auswahl) ==<br />
* ''[[Ray Borden Orchestra]]'' 1947 <br />
* ''Charlie Mariano Octet'' 1949 <br />
* ''Charlie Mariano - Boston All Stars'' 1951 <br />
* ''Charlie Mariano Quartett'' 1955 <br />
* ''Toshiko - Mariano Quartett'' 1960 <br />
* ''Charles Mingus - The Black Saint and the Sinner Lady'' 1963<br />
* ''Charlie Mariano - Folk Soul'' 1967<br />
* ''[[Embryo]]'' - ''We keep on'' 1972 <br />
* ''Jazz - India'' 1972 <br />
* ''Charlie Mariano'' - Reflections 1974 <br />
* ''Pork Pie - Transitory'' 1974 <br />
* ''Eberhard Weber Colours'' 1975 <br />
* ''Pork Pie - The door is open'' 1975 <br />
* ''The United Jazz + Rock Ensemble - Live im Schützenhaus'' 1977 <br />
* ''Philip Cathrine - Charlie Mariano - Jasper Van´t Hof - Sleep My Love'' 1979 <br />
* ''Trio'' 1980 <br />
* ''Charlie Mariano & Karnataka College of Percussion: Jiyoth'' 1983 <br />
* ''Sangam'' 1983 <br />
* ''[[Herbert Grönemeyer]]'' - [[4630 Bochum]] 1984 <br />
* ''Shigihara - Mariano - Wells - Küttner - Tears of Sound'' 1984 <br />
* ''Charlie Mariano Group - Plum Island'' 1985 <br />
* ''Konstantin Wecker - Wieder Dahoam'' 1986 <br />
* ''André Jaume & Charlie Mariano - Abbaye de l´epau'' 1990 <br />
* ''Charlie Mariano - Jasper van't Hof - INNUENDO'' 1992<br />
* ''[[Rabih Abou Khalil]] '' - ''Blue Camel'' 1992<br />
* ''Birthday Presents for Charlie M.'' 1993<br />
* ''Charlie Mariano & Friends - Seventy'' 1994<br />
* ''Nassim'', 1998<br />
* ''Charlie Mariano: Bangalore'', 1998<br />
* ''Jasper van't Hof, Charlie Mariano, Steve Swallow - Brutto Tempo'' 2001<br />
* ''[[Theo Jörgensmann]]'' - ''Fellowship'', 2005<br />
* ''Charlie Mariano & Dieter Ilg:'' Due, 2005<br />
Mariano hat bis heute insgesamt an mehr als 200 Schallplatten und CDs mitgewirkt.<br />
<br />
== Weblinks ==<br />
* {{PND|119125099}}<br />
<br />
<br />
[[Kategorie:Mann|Mariano, Charlie]]<br />
[[Kategorie:US-Amerikaner|Mariano, Charlie]]<br />
[[Kategorie:Weltmusik-Künstler|Mariano, Charlie]]<br />
[[Kategorie:Fusion-Musiker|Mariano, Charlie]]<br />
[[Kategorie:Jazz-Saxophonist|Mariano, Charlie]]<br />
[[Kategorie:Geboren 1923|Mariano, Charlie]]<br />
<br />
{{Personendaten|<br />
NAME=Mariano, Charlie<br />
|ALTERNATIVNAMEN=<br />
|KURZBESCHREIBUNG=), amerikanischer Saxophonist<br />
|GEBURTSDATUM=[[12. November]] [[1923]]<br />
|GEBURTSORT=[[Boston]], [[USA]]<br />
|STERBEDATUM=<br />
|STERBEORT=<br />
}}<br />
<br />
[[en:Charlie Mariano]]</div>Rob-kaiserhttps://de.wikipedia.org/w/index.php?title=Benutzer:Rob-kaiser&diff=29894073Benutzer:Rob-kaiser2007-03-30T14:04:01Z<p>Rob-kaiser: AZ: Die Seite wurde neu angelegt.</p>
<hr />
<div>{{BenutzerMenüleiste}}<br />
[[Benutzer:Rob-kaiser|Rob-kaiser]] 16:04, 30. Mär. 2007 (CEST)</div>Rob-kaiser