In kleinen Schritten – Software für Multiprozessorsysteme partitionieren

Seite: 2/3

Anbieter zum Thema

Schritt 2: Zerlegung in Tasks

Sobald eine grundlegende Partitionierung einer Applikation in Container auf höherer Ebene erfolgt ist, sollten diese intern weiter in einzelne Tasks zerlegt werden. Jede Task ist sequenziell und kann sowohl parallel mit anderen Tasks in ihrem Container ablaufen, als auch parallel mit Tasks in weiteren Containern. Dabei ist zu beachten, dass jede einzelne Task Dutzende oder Hunderte von Software-funktionen umfassen kann.

Ein Task ist nicht die kleinste Einheit eines Softwarearchitektur-Designs. Er besteht meist aus mehreren Funktionen, die innerhalb des Tasks sequenziell ausgeführt werden.Um bei dem Beispiel aus der Medizin zu bleiben: Der Container zur Erfassung der Daten der vitalen Funktionen könnte mehrere Tasks enthalten, die mit Sensoren kommunizieren, die Patientendaten erfassen und medizinische Messdaten zur Verfügung stellen. Tasks der Gerätesteuerung könnten zum Beispiel die Erfassung der Körpertemperatur, die Erfassung des Blutdrucks und dergleichen sein.

Der Task für die Erfassung des Blutdrucks könnte seine Werte einer weiteren Task zur Datenanalyse zur Verfügung stellen. Diese würde Datenfilterungen, Wellenformanalysen und eventuell Musterkennungen an ihren Eingängen durchführen. Der Container zur Datenerfassung kann also eine Pipeline verschiedener Tasks jedes Sensors enthalten, von denen er Daten bezieht.

Schritt 3: Zeitgrenzen beachten

Die meisten komplexen Systeme beinhalten eine Kombination aus harten und weichen Zeitgrenzen sowie zeitunabhängiger Software. Deshalb kann es sinnvoll sein, Prozessoren zu haben, die Linux ausführen, während andere mit einem Echtzeit-Betriebssystem laufen.

Die Zuordnung von Containern für Applikationssoftware zu Linux- oder RTOS-Prozessoren hängt neben anderen Faktoren von den Zeitanforderungen ab. Aus diesem Grund muss jeder Container entsprechend seiner Deadlines und harten und weichen Echtzeitanforderungen geprüft werden. Soll er Software verarbeiten, die harte Echtzeit einhalten muss, kann er ausschließlich auf einem RTOS-basierten Prozessor laufen.

Hat er nur weiche Deadlines mit mehreren Millisekunden oder länger, kann er auch unter Linux laufen. Einige Container beinhalten eventuell Applikationssoftware, die unterschiedliche Zeitanforderungen erfüllen muss, und sowohl auf eine RTOS-basierte Laufzeitumgebung weisen als auch auf eine Linux-Umgebung. Sobald ein Teil des Containers harte Deadlines einhalten muss, kann er aber nur auf einem RTOS-basierten Prozessor laufen.

Eine Alternative wäre dann die Aufteilung des Containers in zwei Container. Der erste würde die Software mit harten Deadlines beinhalten, der zweite neue Container mit der restlichen Software könnte auf Linux laufen.

(ID:44833911)