DEENESPTFRRUARHIKOZHNL
AUTOSAR_AP_SWS_ExecutionManagement FIG-df77b653573b5825 932 × 663 px 2 Release(s)

Figure 7.16: Cyclic Deterministic Execution

SHA-256 Inhalts-Fingerabdruck: df77b653573b582519e4c46bc554078e51988d23f8b476dc3244ac5e65e5ee30
✦ KI-generierte Bildanalyse & technische Beschreibung Modell: gemini-3.8-flash (via agy) · Rezept figure-series@1 · erstellt am 2026-10-08

1. Diagrammtyp & Architektur-Kontext

  • Klassifikation: Mischform aus architekturellem Kontrollfluss-, Prozess- und Interaktionsdiagramm (Daten-/Kontrollflussschema mit Fork-Join-Parallelitätsmodell).
  • Architektonischer Zweck: Spezifikation des Ausführungsmodells für zyklisch-deterministische Prozesse (Deterministic Execution) innerhalb der AUTOSAR Adaptive Platform (ARA) gemäß AUTOSAR_SWS_ExecutionManagement.
  • Funktionale Einordnung: Gewährleistet softwareseitige Reproduzierbarkeit (zeitlicher und datenbezogener Determinismus). Ein Benutzerprozess (user process) wird in feste Aktivierungszyklen segmentiert, isoliert Eingangs- und Ausgangsdaten von der Umwelt und steuert nebenläufige Berechnungsstränge deterministisch über einen synchronisierten Worker-Pool.

2. Komponenten, Entitäten & Schnittstellen

  • user process (OS-Prozessgrenze): Kapselt den Anwendungs-Haupt-Thread sowie verwaltete Worker-Threads.
  • DeterministicClient (Klasse / Laufzeit-Bibliothek):
    • Schnittstelle des Execution Management zur Anwendung.
    • Verantwortlichkeiten: Zyklussteuerung, Worker-Pool-Management, Bereitstellung deterministischer Pseudozufallszahlen und logischer Zeitstempel.
    • APIs:
      • WaitForActivation(): Blockiert bis zum Start des nächsten logischen Zyklus.
      • RunWorkerPool(): Triggert die parallele Ausführung vordefinierter Runnable-Tasks auf dem Worker-Pool.
      • GetRandom(): Liefert deterministische Pseudozufallszahlen (reproduzierbare Seed-Sequenz je Zyklus).
      • GetActivationTime(), GetNextActivationTime(): Liefert feste, an den Zyklus gebundene Zeitreferenzen (keine unkoordinierte Abfrage einer unsynchronisierten Systemzeit).
  • Worker-Threads (worker):
    • Zustandslose oder strikt isolierte Ausführungseinheiten innerhalb des Worker-Pools.
    • Entkopplung: Explizit annotiert mit „no interaction“ (rote Sperrbalken). Keine Inter-Thread-Kommunikation, keine Mutexe/Shared-Memory-Races zwischen parallelen Workern.
  • Lebenszyklus-Zustände / Phasen:
    • Register Services, Service Discovery, Init, Run, Terminate: Explizite Phasensteuerung, wobei Run den zyklischen Berechnungszweig darstellt.
  • Communication Management (ara::com):
    • Serviceorientierte Kommunikationsschicht für I/O.
    • Interaktion: Synchronisation mit dem Aktivierungszyklus („synchronization with activation cycle – details not yet specified“ in R18-03).
    • Datentransfer: access input data (lesend zu Zyklusbeginn) und publish output data (schreibend zu Zyklusende).

3. Dynamisches Verhalten & Sequenzablauf

  1. Zyklus-Initialisierung & Trigger:
    • Der Hauptkontrollknoten ruft synchron WaitForActivation() am DeterministicClient auf.
    • Der Thread blockiert, bis der nächste deterministische Rechenzyklus freigegeben wird.
  2. Eingangsdaten-Snapshot:
    • Vor Beginn der eigentlichen Berechnungen holt der Prozess atomar konsistente Eingangsdaten über ara::com ab (access input data). Während des Berechnungszyklus bleiben diese Eingangsdaten unveränderlich (Double-Buffering / Snapshot-Semantik).
  3. Phasen-/Zustandsauswahl:
    • Verzweigung in Steuerphasen (Register Services, Service Discovery, Init, Run, Terminate).
  4. Parallele Rechenphase (Run via Fork-Join):
    • Fork 1: Haupt-Thread ruft RunWorkerPool() auf. Verteilung auf N parallele Worker-Instanzen.
    • Ausführung 1: Worker führen deterministische Berechnungen isoliert aus (optional Aufruf von GetRandom()).
    • Barrier/Join 1: Synchronisation im Join-Knoten; Haupt-Thread übernimmt wieder sequentiell.
    • Fork 2: Erneuter Aufruf von RunWorkerPool() für nachgelagerte Worker-Kaskade.
    • Barrier/Join 2: workers joining – Zusammenführen aller Rechenstränge an der finalen Barriere.
  5. Zeitabfrage & Publikation:
    • Abfrage der logischen Aktivierungszeiten (GetActivationTime(), GetNextActivationTime()).
    • Konsistente Veröffentlichung aller Zyklus-Ergebnisse via ara::com (publish output data).
  6. Rückkopplung:
    • Rücksprung zum Hauptkontrollknoten zur Vorbereitung des nächsten Zyklus (WaitForActivation()).

4. Normative Relevanz & Entwickler-Hinweise

  • Restriktionen für Anwendungsentwickler:
    • Verbot asynchroner OS-Primitive: Kein freies Erzeugen von POSIX-Threads (pthread_create), keine freien Locks (std::mutex) und keine asynchronen Sleeps (sleep, usleep). Alle Nebenläufigkeiten müssen zwingend über DeterministicClient::RunWorkerPool() abgewickelt werden.
    • Verbot nicht-deterministischer Quellen: Direkte Zugriffe auf POSIX-Uhren (clock_gettime) oder hardwarebasierte Zufallsgeneratoren (/dev/random) führen zum Verlust des Determinismus. Es dürfen ausschließlich die Schnittstellen GetActivationTime() und GetRandom() verwendet werden.
    • Keine Worker-Interaktion: Worker dürfen keine gemeinsamen Variablen mutieren; Datenfluss zwischen Workern ist rein über Eingangs-/Ausgangspuffer sequentieller Stufen (über Barrier/Join) abzubilden.
  • Integrations- & I/O-Vertrag (ara::com):
    • I/O-Aktivitäten sind strikt phasenbasiert: Samples dürfen nur am Anfang des Zyklus gelesen und am Ende veröffentlicht werden. Das Kommunikations-Subsystem muss sicherstellen, dass Datenkonsistenz über den gesamten Rechenzyklus hinweg garantiert ist.
  • Plattform-Status (R18-03):
    • Die Kopplung zwischen Zyklus-Trigger und ara::com-Synchronisation ist im Standard R18-03 als konzeptionell offengelegt („details not yet specified“), was herstellerspezifische Adaptionen (z. B. synchrone Event-Queues oder deterministische Pufferung) im Stack-Design erfordert.

Versionsvergleich KI-generiert · gemini-3.8-flash (via agy)

R21-11 → R22-11 normative Änderung Vorgänger: FIG-3285ca432e119821
  • Schnittstelle DeterministicClient: Die Methode WaitForNextActivation() wurde in WaitForActivation() umbenannt.

Zugeordnete Anforderungen

Diese Angaben zeigt der Versions-Explorer.

Aus dem Dokument extrahierter Text & Kontext

Beschriftungen im Schaubild:

user process | worker | RunWorkerPool() | GetActivationTime() GetNextActivationTime() GetRandom() | WaitForActivation() | DeterministicClient | provide activation cycle control, worker pool, random numbers, activation time | Service Discovery | Init | Terminate | Run | worker | worker | worker | worker Register Services | no interaction | Communication Management service registration and discovery, provide stable input data, receive output data | ara::com ara::com | access input data publish output data synchronization with | activation cycle | RunWorkerPool() | details not yet specified | workers | joining

Begleitender Spezifikationstext:

Specification of Execution Management AUTOSAR AP R23-11 and the calculated cycle information for next execution to all the connected DeterministicClient. The calculated data of the application processes is published through Communication Management. For each execution cycle, the DeterministicSyncMaster synchronizes the DeterministicClients. It makes sure that random numbers and activation time stamps that are sent to DeterministicClients are identical for the redundantly execution. The DeterministicClients then synchronize the triggering of execution based on the received activation time stamps. An optional software lockstep framework may subscribe to the output of the redundant processes and compare the output to detect failures (e.g. transient processor core or memory errors due to radiation) in one of the redundant processes. This infrastructure layer can span over multiple hardware instances and is implementation specific. The AUTOSAR Adaptive Platform needs to provide some library functions to support redundant deterministic execution with sufficient isolation. The library functions (DeterministicClient) run in the context of the user process. Figure 7.16 considers how DeterministicClient can be used in one of the redundantly executed processes. user process worker RunWorkerPool() GetActivationTime() GetNextActivationTime() GetRandom() WaitForActivation() DeterministicClient provide activation cycle control, worker pool, random numbers, activation time Service Discovery

Vorkommen in AUTOSAR-Releases (3)

Release Dokument Seite Nr. Bildunterschrift im Dokument
R22-11 AUTOSAR_SWS_ExecutionManagement S. 69 7.14 Figure 7.14: Cyclic Deterministic Execution
R23-11 AUTOSAR_AP_SWS_ExecutionManagement S. 79 7.16 Figure 7.16: Cyclic Deterministic Execution
R23-11 AUTOSAR_AP_SWS_ExecutionManagement S. 79 7.16 Figure 7.16: Cyclic Deterministic Execution