DEENESPTFRRUARHIKOZHNL
AUTOSAR_SWS_ExecutionManagement FIG-3285ca432e119821 900 × 614 px 1 Release(s)

Figure 7.14: Cyclic Deterministic Execution

SHA-256 Inhalts-Fingerabdruck: 3285ca432e119821ab6880011d89cd1e4084cedfcf5893b1bd2eb92f00a6c287
✦ 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:
      • WaitForNextActivation(): 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 WaitForNextActivation() 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 (WaitForNextActivation()).

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)

R20-11 → R21-11 keine inhaltliche Änderung Vorgänger: FIG-54c612e307216ed3

Keine inhaltlichen Änderungen erkennbar.

R21-11 → R22-11 normative Änderung Nachfolger: FIG-df77b653573b5825
  • Schnittstelle DeterministicClient: Die Methode WaitForNextActivation() wurde in WaitForActivation() umbenannt.

Zugeordnete Anforderungen

Diese Angaben zeigt der Versions-Explorer.

Erkannte Spezifikationsbelege & Anforderungen auf dieser Seite

Aus dem Dokument extrahierter Text & Kontext

Beschriftungen im Schaubild:

user process | worker | RunWorkerPool() | GetActivationTime() GetNextActivationTime() GetRandom() | WaitForNextActivation() | 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 R21-11 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. Details of the software lockstep framework are out of scope of the Adaptive Platform specification. 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.14 considers how DeterministicClient can be used in one of the redundantly executed processes. user process worker RunWorkerPool() GetActivationTime() GetNextActivationTime() GetRandom() WaitForNextActivation() 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 Figure 7.14: Cyclic Deterministic Execution Cyclic process behavior is controlled by a wait point API. The API returns a code to control the process mode (register services/ service discovery/ init/ run/ terminate). The execution is triggered by

Vorkommen in AUTOSAR-Releases (2)

Release Dokument Seite Nr. Bildunterschrift im Dokument
R21-11 AUTOSAR_SWS_ExecutionManagement S. 66 7.14 Figure 7.14: Cyclic Deterministic Execution
R21-11 AUTOSAR_SWS_ExecutionManagement S. 66 7.14 Figure 7.14: Cyclic Deterministic Execution