Anbieter zum Thema
2. Time-Sharing. Der häufigste Time-Sharing-Algorithmus ist der sogenannte Round-Robin-Scheduler (Bild 2), der über eine Liste von Threads verfügt, aus der das System den nächsten zur Ausführung bereiten Thread auswählt. Ist ein Thread „Ready“, so wird er ausgeführt. Verbunden mit jedem Thread ist ein Time-Slice, der die maximale Ausführungszeit für jeden Thread in jeder Runde, die der Scheduler macht, definiert.
Ein typischer prioritätsbasierter, präemptiver Scheduler unterstützt sowohl präemptives als auch nicht-präemptives Scheduling. In einer präemptiven Situation unterbricht ein höher priorisierter Thread sofort die Ausführung eines niedriger priorisierten Threads. Threads mit gleicher Priorität werden in einem nicht präemptiven Modus getimed, in der ein gerade laufender Thread seine Ausführung beendet, bevor ein anderer Thread mit gleicher oder niedrigerer Priorisierung startet.
Thread-Kommunikation
Die Kommunikation zwischen Threads kann in Form von Events, Semaphoren oder Messages stattfinden. Am einfachsten ist es, wenn ein einzelner Thread über einen Event mit einem oder mehreren anderen Threads kommuniziert. Aber auch jede andere Funktion, wie zum Beispiel ein Interrupt-Handler, kann ein Event an einen Thread senden.
Semaphore werden in der Regel dazu verwendet, gemeinsame Ressourcen zu schützen, z.B. wenn mehr als ein Thread Lese- oder Schreibzugriff auf den gleichen Speicher oder die gleiche Variable haben muss. Prinzipiell muss ein Semaphor, der mit einer Variablen verbunden ist, vor einem Lese- oder Schreibzugriff auf diese Variable gesichert werden. Sobald der Semaphor gesichert ist, kann auf diese Variable oder diesen Speicher erst wieder zugegriffen werden, wenn er wieder freigegeben wird.
Messages erlauben den Versand an Daten an einen oder mehrere Threads und werden in der Regel in Mailboxes oder Queues implementiert. Das Verhalten von Mailboxen und Message Queues variiert bei den verschiedenen Anbietern von Echtzeitbetriebssystemen.
Threads, Scheduler, Events, Semaphore, Mailboxes, Queues etc. Weitere RTOS-Grundlagen sowie ein Anwendungsbeispiel (Motorsteuerung) finden sich in der ausführlichen englischen Fassung dieses Artikels „Basic Concepts for Real-Time Operating Systems“.
* * Mats Pettersson ist Senior Field Applications Engineer bei IAR Systems.
Artikelfiles und Artikellinks
(ID:35359430)