Hallo Leute :)
Ich beschäftige mich derzeit mit Echtzeitbetriebssystemen und da
schwirren paar Fragen in meinem Kopf, wo ich keine Antwort darauf
gefunden habe und hoffe, dass Ihr mir da eventuell weiterhelfen könntet.
Meine Fragen wären:
1) Ich habe gelesen, dass Echtzeitbetriebssysteme zuverlässig und
vorhersehbar sind. Die Zuverlässigkeit des Betriebssystems verstehe ich,
jedoch kann ich mir unter Vorhersehbarkeit nichts vorstellen. Kann es
sein, dass es irgendwas mit dem System Tick zu tun hat?
2) Lieg ich richtig wenn ich sage, dass ein Context Switch auch dann
zwischen Tasks stattfindet, wenn der Sytem Tick erkennt, dass ein vorher
suspendierter Task (z.B: die Delay Funktion des suspendierten Tasks ist
zu ende gegangen) nun Anspruch auf die CPU hat? In dem Fall muss
vorausgesetzt sein, dass der suspendierte Task eine höhere Priorität hat
als der Task, der gerade läuft, oder? Und wenn der System Tick auf z.B
5ms eingestellt ist, passiert bei so einem Fall der Context Switch erst
nach verstreichen der 5ms Sekunden, oder?
Tut mir leid, es sind wahrscheinlich ziemlich peinliche Fragen aber die
Antworten würden mir zum Verständnis von Echtzeitbetriebssystemen
wirklich viel helfen.
Mit freundlichen Grüßen
"vorhersehbar" bedeutet in diesem Context, du kannst sicher sein, das
das system innert .. auf ein Ereignis reagiert. diese Zeit muss nicht
maximal kurz sein, nur eben "sicher".
In diesem Zusammenhang definiert man hard-realtime mit "ganz sicher",
und soft-realtime mit "meistens"
Es gibt preemtive BS, die Schalten die Task neben den meldungsbasierten
Kontextwechseln auch mit einem Timer.
Die anderen BS, die keinen timerbasierten Kontextwechsel haben, nennen
sich kooperative Systeme. Bei denen muss der Programmierer in der
Software sicherstellen, dass der Kontextwechsel haeufig genug geschehen
kann.
Johannes H. schrieb:> jedoch kann ich mir unter Vorhersehbarkeit nichts vorstellen.
Ein Kennzeichen von Echtzeitbetriebssystemen ist, dass für die
Reaktionszeit auf Ereignisse ein klare Obergrenze existiert. Man muss
sich darauf verlassen können, dass innerhalb von einer Zeit T reagiert
werden kann.
> 2) Lieg ich richtig wenn ich sage, dass ein Context Switch auch dann> zwischen Tasks stattfindet, wenn der Sytem Tick erkennt, dass ein vorher> suspendierter Task (z.B: die Delay Funktion des suspendierten Tasks ist> zu ende gegangen) nun Anspruch auf die CPU hat?
Ja.
Am besten du vergisst die Taskprioritaeten. Da kann man sich vertun, und
auch vieles falsch machen. Denn es kann auch ein tiefpriorisierter Task
einen Hoeherpriorisierten blockieren.
Am wenigsten Aerger macht round-robin, dh gleichpriorisiert, der Reihe
nach.
Und Reaktionszeit ist nicht Taskwechselzeit, sondern wie lange es
dauert, bis das System auf das Ereignis reagiert, dh etwas Passendes
rauskommt. Dh ueblicherweise muss der Taskwechsel schneller sein.
Sinnvollerweise arbeitet man mit einem kooperativen system, bis sich die
Probleme davon manifestieren, resp, man die nicht mehr beseitigen kann.
Vorhersehbarkeit im Kontext von RT-Systemen bedeutet, dass das System
garantiert alle Tasks innerhalb der vorgesehenen Deadlines abarbeitet,
sofern das auf diesem System möglich ist. "Normale" Systeme ohne
Echtzeitfähigkeit garantieren das nicht. Windows und Linux z.B.
verschwinden manchmal für Millisekunden im Nirvana und sind dann mit
sich selbst beschäftigt. Kann sein, dass sie alles rechtzeitig fertig
haben, muss aber nicht.
> ... es sind wahrscheinlich ziemlich peinliche Fragen ...
Keineswegs. Viele reden über Echtzeit ohne sich um diese Dinge Gedanken
zu machen. Echtzeit bedeutet nicht so schnell wie möglich, sondern
garantiert immer schnell genug.
Vancouver schrieb:> Vorhersehbarkeit im Kontext von RT-Systemen bedeutet, dass das> System> garantiert alle Tasks innerhalb der vorgesehenen Deadlines abarbeitet,> sofern das auf diesem System möglich ist. "Normale" Systeme ohne> Echtzeitfähigkeit garantieren das nicht. Windows und Linux z.B.> verschwinden manchmal für Millisekunden im Nirvana und sind dann mit> sich selbst beschäftigt. Kann sein, dass sie alles rechtzeitig fertig> haben, muss aber nicht.>
Naja, spätestens seit Xenomai und Linux Preempt von Molnar sind das
keine Millisekunden mehr, die Antwortzeiten gehen schon mal Richtung
100ns.
Wie's bei Windows aussieht, weiss ich nicht. Soll aber auch gehen.
Nachteil ist, dass man sich relativ detailliert mit dem RT-spezifischen
Treibermodell beschäftigen muss.
Strubi schrieb:> Naja, spätestens seit Xenomai und Linux Preempt von Molnar sind das> keine Millisekunden mehr, die Antwortzeiten gehen schon mal Richtung> 100ns.
das muss die Hardware auch wollen. Normaler IntelPC könnte man seiner
IME schon verhindern.