Anbieter zum Thema
Schritt 4: Kommunikationsdesign
Nachdem eine Embedded-Applikation in Container partitioniert, die Container in Tasks zerlegt und alle Zeitanforderungen beachtet wurden, ist der nächste Schritt das Design der Kommunikation zwischen den verschiedenen Tasks. Dies umfasst die Kommunikation mit anderen Tasks innerhalb des selben Containers sowie mit Tasks anderer Container.
Da die Container für minimale Wechselwirkung partitioniert wurden, sollte kein großer Kommunikationsfluss zwischen ihnen stattfinden. Als beste Kommunikationsmethode hat sich das Message Passing bewährt. Es ist vom Konzept her einfach gehalten sowie intuitiv. Asynchrones Message Passing für die Kommunikation innerhalb der Tasks und der Container erlaubt ein locker gekoppeltes Design, das viele Fehler verhindert.
Andere Betriebssystemmechanismen für die Intertask-Kommunikation wie Semaphoren, Mutexes, Event Flags oder Signale im Unix-Stil sind fehleranfällig, werden unhandlich oder unausführbar, sobald sie in verteilten und Multicore-Embedded-Systemen arbeiten. Bei der späteren Zuteilung der Container und Tasks auf unterschiedliche Prozessoren nutzt man möglichst exakt das selbe asynchrone Message Passing für die Kommunikation zwischen den Tasks innerhalb des selben Prozessors und für die Kommunikation zwischen Tasks, die sich auf verschiedenen Prozessoren befinden.
Schritt 5: Prozessoren zuordnen
Die Zuordnung verschiedener Softwareteile zu den unterschiedlichen, oft ungleichen Prozessoren muss als nächstes erfolgen. Es ist zulässig,einem Prozessor mehrere Container zuzuordnen, aber ein Container sollte nie zwischen zwei Prozessoren aufgeteilt werden. In einem heterogenen Multiprozessorsystem, bei dem Linux auf einigen Prozessoren und ein Echtzeit-Betriebssystem auf anderen läuft, müssen bei der Zuordnung von Containern zu Prozessoren die Deadlines und die Echtzeitanforderungen eines jeden Prozessors beachtet werden.
Ein Linux-kompatibler Container lässt sich einem RTOS-basierten Prozessor zuordnen, wenn dieser über passende Fähigkeiten und Kapazitäten verfügt. Dagegen ist es nicht möglich, einen Container, der harte Echtzeitanforderungen einhalten muss, einem Linux-basierten Prozessor zuzuordnen.
Queuing – Warteschlangentheorie für Embedded-Software
Statische Analyse
Bugs und Defekte in Multitasking-Software eliminieren
Multicore-Programmierung
Ohne Locks für Multicore-Systeme programmieren
* * David Kalinsky ... ist Berater, Trainer und Dozent für Echtzeit- und Embedded-Programmierung in Sunnyvale/Kalifornien (USA)
(ID:44833911)