AUTOSAR_SWS_ExecutionManagement
FIG-729fbdfbafa9bce4
841 × 717 px
1 Release(s)
Figure 7.14: Deterministic Execution Interface
SHA-256 Inhalts-Fingerabdruck:
729fbdfbafa9bce404f5f4d8a66c3a9abdf1ac87554a955af7802da5e09f9a43
✦
KI-generierte Bildanalyse & technische Beschreibung
Modell: gemini-3.8-flash (via agy) · Rezept figure-description@2 · erstellt am 2026-10-07
1. Diagrammtyp & Architektur-Kontext
- Diagrammtyp: UML-Komponentendiagramm (
cmp ArchitectureView-DeterministicClient) zur Darstellung der Schnittstellenarchitektur auf System- und Prozessebene. - Technischer Zweck: Spezifiziert die Interaktion zwischen einer deterministischen Adaptive Application und dem funktionalen Cluster Execution Management (
ara::exec) der AUTOSAR Adaptive Platform (Release R18-03 / R1.4.0). - Funktionale Einordnung: Definiert die Abstraktion des Prozesslebenszyklus sowie die Entkopplung von nicht-deterministischen Plattform- und OS-Ressourcen (Systemuhr, Host-Threading, OS-Zufallsgeneratoren), um reproduzierbare Berechnungen (z. B. für automatisierte Fahrfunktionen, Replay-Simulationen und SIL/HIL-Validierung) zu garantieren.
2. Komponenten, Entitäten & Schnittstellen
Komponenten (UML Components)
Application: POSIX-basierter Prozess der Adaptive Application, welcher Algorithmen mit deterministischer Ausführungscharakteristik kapselt. Fungiert als Client gegenüber beiden Schnittstellen.Execution Management: Zentraler Plattform-Daemon der Adaptive Platform (ara::exec), zuständig für Prozessüberwachung, deterministisches Scheduling und Lifecycle-Management. Stellt die korrespondierenden Ports bereit.
Schnittstellen & Klassen (Namespace «ara::exec»)
DeterministicClient(«ara::exec»):- Zugriffspunkt für deterministische Ausführungsmodelle.
- Methoden:
+ GetActivationTime(): Liefert den deterministischen Zeitstempel des aktuellen Ausführungszyklus (unabhängig von der realen Host-Laufzeit).+ GetNextActivationTime(): Liefert den geplanten deterministischen Startzeitpunkt des Folgezyklus.+ GetRandom(): Liefert pseudo-zufällige Werte aus einem reproduzierbaren, durch das Execution Management synchronisierten PRNG-Zustand.+ RunWorkerPool(): Triggert die parallele Abarbeitung deterministischer Teilaufgaben über einen verwalteten Worker-Pool unter Vermeidung von Race Conditions.+ WaitForNextActivation(): Blockierender Synchronisationspunkt, der den Prozess bis zur nächsten deterministischen Zyklus-Freigabe suspendiert.
ApplicationClient(«ara::exec»):- Standard-Schnittstelle zur Lebenszyklus-Rückmeldung an das Execution Management.
- Methoden:
+ ReportApplicationState(): Meldet interne Prozesszustände (z. B.kRunning,kTerminating).
Beziehungen & Pfade
- Provided / Required Ports:
Applicationnutzt (Required Interface / Socket) die SchnittstellenDeterministicClientundApplicationClient.Execution Managementimplementiert und exponiert (Provided Interface / Ball) beide Ports via IPC.
- Kontrollpfad
Start / Terminate:- Gerichtete Kontrollbeziehung (gestrichelte Linie) vom
Execution ManagementzurApplication. Signalisiert die Erzeugung (POSIXfork/exec) und Terminierung (SIGTERM/SIGKILL) des Prozesses.
- Gerichtete Kontrollbeziehung (gestrichelte Linie) vom
3. Dynamisches Verhalten & Sequenzablauf
- Prozessinitialisierung:
Execution Managementstartet dieApplication(Start).- Die Applikation initialisiert ihre Ressourcen und meldet über
ApplicationClient::ReportApplicationState(kRunning)ihre Betriebsbereitschaft.
- Deterministische Regelschleife (Zyklische Abarbeitung):
- Die Applikation ruft blockierend
DeterministicClient::WaitForNextActivation()auf. - Nach Trigger durch das
Execution Managementerwacht die Applikation im definierten Zyklus. - Abfrage der logischen Zykluszeit über
GetActivationTime()und optionalGetNextActivationTime(). - Bei Randomisierung Nutzung von
GetRandom(); bei Datenparallelismus Ausführung überRunWorkerPool(). - Abschluss der Zyklusberechnung; Rücksprung zu
WaitForNextActivation().
- Die Applikation ruft blockierend
- Prozessterminierung:
Execution Managementinitiiert den Shutdown (Terminate).- Die Applikation verlässt die Regelschleife, meldet
ReportApplicationState(kTerminating)und gibt Ressourcen frei.
4. Normative Relevanz & Entwickler-Hinweise
- Verbot direkter POSIX-Aufrufe: Entwickler deterministischer Applikationen dürfen keine nicht-deterministischen OS-Primitives verwenden (
clock_gettime(),std::chrono::system_clock,std::thread,pthread_create,/dev/urandom,rand()). Zeit, Threading und Zufall müssen ausnahmslos über denDeterministicClientbezogen werden. - Run-to-Completion & Barrieren: Berechnungen innerhalb eines Aktivierungszyklus müssen vor dem nächsten
WaitForNextActivation()vollständig terminieren. - Worker-Pool-Restriktionen: Parallelverarbeitung via
RunWorkerPool()erfordert seiteneffektfreie Tasks, da das Framework die Reproduzierbarkeit der Abarbeitungsreihenfolge und Speicherzugriffe sicherstellt. - Koexistenz: Die Implementierung von
DeterministicCliententbindet nicht von der Pflicht, die Standard-Zustandsmeldungen über denApplicationClientabzusetzen, um Watchdog-Timeouts und Alive-Supervision-Fehler durch das Execution Management zu verhindern.
Zugeordnete Anforderungen
Diese Angaben zeigt der Versions-Explorer.