AUTOSAR_AP_SWS_ExecutionManagement
FIG-5ebda63875330476
887 × 693 px
3 Release(s)
Figure 7.8: State Change Sequence - Success
SHA-256 Inhalts-Fingerabdruck:
5ebda638753304767296009f1f429c4ead0d54a205040319a62ebaf6ac9cc73f
✦
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
- Klassifikation: UML-Sequenzdiagramm (Interaktionsdiagramm mit kombinierten Fragmenten vom Typ
loopund parallelen Ausführungsannotationen). - Technischer Zweck: Spezifikation des erfolgreichen, asynchronen Zustandswechsels einer Funktionsgruppe (Function Group State Transition) innerhalb der AUTOSAR Adaptive Platform. Es definiert das Zusammenspiel zwischen Zustandssteuerung (State Management), Prozess-Lebenszyklusverwaltung (Execution Management) und den POSIX-basierten Betriebssystemprozessen.
2. Komponenten, Entitäten & Schnittstellen
- Akteure / Lebenslinien:
SM(State Management): Applikativer oder plattformseitiger Manager, der funktionale Systemzustände koordiniert und Zustandswechsel anfordert.EM(Execution Management): Kernkomponente der Adaptive Platform Runtime zur Prozessinstanziierung, -überwachung und Zustandsdurchsetzung gemäß Manifest-Konfiguration.Process A: Laufende Prozessinstanz, derenStartupConfigden Zielzustand der Funktionsgruppe (target FG state) nicht enthält.Process B: Neu zu startende Prozessinstanz, derenStartupConfigdem Zielzustand der Funktionsgruppe zugeordnet ist.
- Schnittstellen & Interprozesskommunikation (IPC):
StateClient::SetState(): C++-API (ara::exec::StateClient), über die das SM den Zustandswechsel einer Funktionsgruppe asynchron initiiert.:Future: Rückgabetypara::core::Future<void>zur asynchronen Synchronisation und Fehlerbehandlung.SIGTERM(): Standard-POSIX-Signal zur Anforderung einer geordneten Prozessbeendigung (Graceful Termination).EXIT_SUCCESS(): POSIX-Prozessrückgabewert (exit(0)/ Terminierung) signalisiert an EM via OS-Event/waitpid().create(): Betriebssystemaufruf (z. B.fork()/execve(),posix_spawn()) zur Instanziierung des neuen Prozesses.ExecutionClient::ReportExecutionState(kRunning): C++-API (ara::exec::ExecutionClient), mit der sich ein neu gestarteter Prozess nach Abschluss seiner Initialisierung beim EM meldet.
3. Dynamisches Verhalten & Sequenzablauf
- Trigger & Asynchroner Start:
SMruftStateClient::SetState()auf.EMquittiert den Aufruf unmittelbar mit einem unaufgelöstenara::core::Future-Objekt; die Zustandsänderung läuft im Hintergrund an.
- Phase 1: Prozessbeendigung (
loop [Process termination]):- Für alle Prozesse (
Process A), die im Zielzustand der Funktionsgruppe nicht mehr aktiv sein dürfen: EMsendetSIGTERMan den Prozess.Process Afährt geordnet herunter und terminiert mitEXIT_SUCCESS.
- Für alle Prozesse (
- Phase 2: Prozessstart (
loop [Process Start]):- Für alle Prozesse (
Process B), die für den Zielzustand konfiguriert sind: EMerzeugt den Prozesskontext (create()).Process Binitialisiert sich und meldetkRunningviaExecutionClient::ReportExecutionState().
- Für alle Prozesse (
- Nebenläufigkeit (
Can happen in parallel):- Die Terminierung von Altprozessen und der Start von Neuprozessen können abhängig von Prozessabhängigkeiten und Plattform-Ressourcen parallel ausgeführt werden.
- Abschluss:
- Sobald alle Prozesse erfolgreich beendet bzw. im Zustand
kRunningbestätigt wurden, setztEMdas Ergebnis imPromiseund derFuturedesSMwird mit:Successaufgelöst.
- Sobald alle Prozesse erfolgreich beendet bzw. im Zustand
4. Normative Relevanz & Entwickler-Hinweise
- API-Vertrag für Adaptive Applications:
- Signal-Handling: Jeder Adaptive Prozess muss einen Signal-Handler für
SIGTERMregistrieren und innerhalb des konfiguriertenenterTimeoutValuegeordnet terminieren. Andernfalls greift die Eskalation überSIGKILL(nicht im Gut-Pfad dargestellt). - Start-Up-Synchronisation: Jeder gestartete Prozess muss zwingend
ReportExecutionState(ara::exec::ExecutionState::kRunning)absetzen. Unterbleibt dieser Aufruf innerhalb des konfigurierten Startup-Timeouts, schlägt der gesamte Funktionsgruppen-Zustandswechsel fehl.
- Signal-Handling: Jeder Adaptive Prozess muss einen Signal-Handler für
- State-Management-Implementierung:
- Da
SetState()non-blocking ist, muss dasSMblockierend viaFuture::wait()/Future::get()synchronisieren oder Callback-Mechanismen (Future::then()) verwenden, bevor Folgeaktionen (z. B. Netzwerkfreigaben) ausgeführt werden.
- Da
- Manifest-Konfiguration (
ExecutionManifest):- Zuordnung von
ProcesszuFunctionGroupStatesteuert die Zuordnung zu den beiden Schleifenblöcken. - Ressourcen-/Startreihenfolgen (
StartupConfig.startupOptions, Resource-Limits) müssen so definiert sein, dass parallele Prozessstarts nicht zu Deadlocks oder Ressourcen-Engpässen auf OS-Ebene führen.
- Zuordnung von
Zugeordnete Anforderungen
Diese Angaben zeigt der Versions-Explorer.