AUTOSAR_EXP_AdaptivePlatformInterfacesGuidelines
FIG-592b330554218de5
944 × 213 px
4 Release(s)
Figure 3: 1 Execution States
SHA-256 Inhalts-Fingerabdruck:
592b330554218de5676cbc746fc3ce2af016a82d11e94f5be1dc98b8e002125e
✦
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: Phasen- und Lebenszyklusmodell (Zustandsdiagramm eines POSIX-Prozesses auf Abstraktionsebene).
- Architektur-Kontext: AUTOSAR Adaptive Platform (AP), Subsystem Execution Management (EM; SWS Execution Management, EXP Adaptive Platform Interfaces Guidelines).
- Funktionale Einordnung: Definiert den standardisierten Lebenszyklus eines Adaptive Application Process von der Instanziierung durch den Execution Manager über die anwendungsseitigen Ausführungszustände (
Initializing,Running,Terminating) bis zum Prozessende. Dient als Referenz für das Zustands-Reporting anara::execsowie die deterministische Prozess-Orchestrierung über Function Group States.
2. Komponenten, Entitäten & Schnittstellen
- Externe Plattform-Entität:
create process allocate resources(Elliptischer Eingangsknoten): Repräsentiert die POSIX-Betriebssystem- und EM-Ebene. Beinhaltetfork()/execve(), Adressraum-Isolation, Zuordnung von OS-Ressourcen (POSIX Threads, cgroups, Memory Locks/Limits, CPU-Affinities, Scheduling-Attribute gemäß Execution Manifest).
- Adaptive Application Boundary (Umschließender Block):
- Isolierter User-Space-Prozesskontext (
ProcessExecution), innerhalb dessen die C++-Applikationslogik abläuft.
- Isolierter User-Space-Prozesskontext (
- Ausführungszustände (Interne Prozesszustände):
Initializing: Vorbereitungsphase vor der funktionalen Dienstbereitstellung (Instanziierung von AUTOSAR-Laufzeitmodulen, Binding von Proxies/Skeletons inara::com, Laden von Konfigurationsdaten).Running: Operativer Produktivzustand (Abarbeitung zyklischer Tasks, Event-Loops, Bereitstellung von Diensten viaOfferService()).Terminating: Kontrollierte Deinitialisierungsphase (Zustandssicherung viaara::per, Rücknahme von Service-Angeboten, Thread-Join, Freigabe von OS-Ressourcen, geordneter Exit).
- Schnittstellen & Transitionen:
- Initialer Zustandsübergang (Blockpfeil
Initializing→Running): Anwendungsinterne Transition, gekoppelt an die Meldung viaara::exec::ExecutionClient. - Terminierungsübergang (Blockpfeil
Terminate→Terminating): Extern über POSIX-Signale (SIGTERM) durch den EM oder intern durch Anwendungsbeschluss ausgelöst.
- Initialer Zustandsübergang (Blockpfeil
3. Dynamisches Verhalten & Sequenzablauf
- Prozessstart (EM → OS):
- Execution Management evaluiert einen Function-Group-Zustandswechsel und instanziiert den Prozess anhand des Modells (
ProcessExecution).
- Execution Management evaluiert einen Function-Group-Zustandswechsel und instanziiert den Prozess anhand des Modells (
- Phase
Initializing:- Eintritt in die
main()-Funktion. Initialisierung statischer Variablen, IPC-Kanäle und Plattform-Komponenten.
- Eintritt in die
- Zustandsmeldung
kRunning(SWS_EM_01053):- Sobald die Applikation vollständig betriebsbereit ist, meldet sie ihren Zustand aktiv an den EM:
ara::exec::ExecutionClient executionClient; executionClient.ReportExecutionState(ara::exec::ExecutionState::kRunning); - Der EM überwacht diese Transition gegen das im Manifest hinterlegte
startupTimeout.
- Sobald die Applikation vollständig betriebsbereit ist, meldet sie ihren Zustand aktiv an den EM:
- Phase
Running:- Normale Ausführung der Kernfunktionalität und Event-getriebene Kommunikation über
ara::com.
- Normale Ausführung der Kernfunktionalität und Event-getriebene Kommunikation über
- Signal
Terminate& PhaseTerminating(SWS_EM_01070, SWS_EM_01071):- Der EM sendet typischerweise
SIGTERMan den Prozess (z. B. infolge eines Function Group State-Wechsels initiiert durch State Management). - Der Signal-Handler fängt
SIGTERMab und triggert die Termination-Routine:- Deregistrierung von Diensten (
StopOfferService()). - Persistierung flüchtiger Zustände über
ara::per. - Beendigung und Join aller Worker-Threads.
- Geordneter Prozess-Exit (
exit(0)bzw. Rücksprung ausmain()).
- Deregistrierung von Diensten (
- Erfolgt der Exit nicht innerhalb des im Manifest konfigurierten
terminationTimeout, erzwingt der EM die Beendigung hart viaSIGKILL(SWS_EM_01071).
- Der EM sendet typischerweise
4. Normative Relevanz & Entwickler-Hinweise
- API-Vertrag & Meldezeitpunkt:
ReportExecutionState(kRunning)darf erst aufgerufen werden, wenn alle Ressourcen allokiert und konsumierende/anbietende Schnittstellen voll funktionsfähig sind. Ein zu früher Report führt zu Folgefehlern abhängiger Prozesse; ein verspäteter Aufruf führt zum Timeout-Kill durch den EM.
- Deterministisches Timing (Manifest-Konfiguration):
startupTimeout: Muss so dimensioniert sein, dass ungünstigste Initialisierungsdauern (Worst-Case Execution Time / Kaltstart) abgedeckt sind.terminationTimeout: Begrenzt die Zeitspanne fürTerminating. Aufwändige Aufräumarbeiten (z. B. Deallokation jedes einzelnen Heap-Objekts) sollten zugunsten des OS-Cleanups übersprungen werden; kritisch sind ausschließlich persistente Datenkonsistenz (ara::per::UpdateTopLevelRootKeys) und saubere Service-Abmeldungen.
- Signal-Sicherheit:
SIGTERMdarf die Applikation nicht abrupt terminieren. Entwickler müssen POSIX-Signalmasken (pthread_sigmask) konfigurieren und Signale synchron über dedizierte Signal-Threads (sigwait/sigwaitinfo) oder Signal-sichere Event-Pipes verarbeiten, um Deadlocks in Non-reentrant-Funktionen zu verhindern.
Zugeordnete Anforderungen
Diese Angaben zeigt der Versions-Explorer.