Konfiguriert Block- und Chunk-Grenzen für poolbasierte Speicherressourcen.
KI-GENERIERTungeprüftModell: gemini-3.8-flash-medium · Aufwand: medium · Temperatur: nicht steuerbar · Prompt: 79719d3800dcHerkunftOffene Fragen (3)
KI-generiertgemini-3.8-flash-medium · 2026-10-13
Konfiguriert Block- und Chunk-Grenzen für poolbasierte Speicherressourcen.
Die Struktur ara::core::PoolOptions dient der Konfiguration von poolbasierten Speicherressourcen gemäß std::pmr::pool_options. Sie ermöglicht die Begrenzung der maximalen Blockanzahl pro Chunk über max_blocks_per_chunk[SWS_CORE_00027] sowie die Festlegung der maximalen Pool-Blockgröße über largest_required_pool_block[SWS_CORE_00028]. Als einfaches Datenaggregat wird die Struktur vor der Initialisierung der Speicherressource belegt und an deren Konstruktor übergeben. Interpretation: Da keine eigene Validierung stattfindet, müssen Entwickler sicherstellen, dass die konfigurierten Schwellenwerte den physischen Arbeitsspeicher nicht überfordern. Frage (offen)
Kontext
Die Datenstruktur ara::core::PoolOptions stellt Konfigurationsparameter für speicherpoolbasierte Ressourcen im Modul core der AUTOSAR Adaptive Platform bereit. Sie dient der gezielten Steuerung des Allokationsverhaltens und orientiert sich an der C++-Standardfunktionalität von std::pmr::pool_options. Die Struktur wird über den Header <ara/core/memory_resource.h> eingebunden und interagiert eng mit Pool-Speicherressourcen, welche zusammenhängende Chunks und Blöcke für wiederkehrende Speicheranforderungen vorhalten.
In sicherheitskritischen und echtzeitnahen Systemen ist die Begrenzung und Vorhersehbarkeit von dynamischen Speicheroperationen essenziell. ara::core::PoolOptions übernimmt in diesem Kontext die Rolle eines Entkopplers zwischen anwendungsspezifischen Kapazitätsanforderungen und der internen Verwaltung der Speicherpools. Über die Struktur können Entwickler festlegen, wie viele Blöcke maximal innerhalb eines Chunks zusammengefasst werden dürfen [SWS_CORE_00027] und welche maximale Blockgröße noch über die spezialisierten Pools bedient werden muss [SWS_CORE_00028]. Anwendungssoftware, die Speicherressourcen instanziiert, nutzt diese Optionen, um eine übermäßige Fragmentierung zu vermeiden und Allokationsgrenzen deterministisch zu steuern.
Lebenszyklus
Als einfacher Konfigurationstyp (struct) besitzt ara::core::PoolOptions einen leichtgewichtigen Lebenszyklus ohne komplexe interne Zustandsübergänge. Die Erzeugung erfolgt typischerweise als lokales Stack-Objekt oder als statische Konfigurationskonstante vor der Instanziierung der zugehörigen Speicherressource. Bei der Instanziierung werden die beiden Attribute max_blocks_per_chunk[SWS_CORE_00027] und largest_required_pool_block[SWS_CORE_00028] standardmäßig mit dem Wert 0 initialisiert.
Interpretation: Ein Wert von 0 dürfte der empfangenden Speicherressource signalisieren, dass plattformspezifische Standardgrenzen greifen sollen. Frage (offen) Da es sich um ein reines Wertobjekt handelt, besitzt ara::core::PoolOptions keine Ressourcen im Sinne von RAII und führt bei Zerstörung keine Bereinigungsaktionen aus. Der Lebenszyklus der Struktur ist üblicherweise an die Erzeugungsphase der Speicherressource gekoppelt: Sobald die Optionen an die Pool-Ressource übergeben wurden, behält die Ressource die Parameter intern bei, sodass das PoolOptions-Objekt selbst gefahrlos zerstört oder wiederverwendet werden kann.
Hinsichtlich der Nebenläufigkeit bietet die Struktur selbst keinen inhärenten Synchronisationsmechanismus. Parallele Lesezugriffe auf ein unverändertes PoolOptions-Objekt sind thread-sicher, während gleichzeitige Modifikationen extern synchronisiert werden müssen. Da das Objekt jedoch primär vor der Übergabe konfiguriert wird, findet nach der Initialisierung in der Regel kein schreibender Zugriff mehr statt.
Nutzungspfad
Der primäre Anwendungsfall umfasst die Definition der Allokationsgrenzen und die Weitergabe an eine speicherverwaltende Komponente. Zunächst erzeugt der Aufrufer eine Instanz von ara::core::PoolOptions und belegt die gewünschten Parameter. Über max_blocks_per_chunk wird die obere Schranke für Blöcke pro Chunk festgelegt [SWS_CORE_00027], während largest_required_pool_block die Obergrenze für Allokationen definiert, die noch durch den Pool abgedeckt werden sollen [SWS_CORE_00028].
Anschließend wird die belegte Struktur an den Konstruktor einer entsprechenden Pool-Speicherressource übergeben. Die Speicherressource liest die konfigurierten Werte aus und richtet ihre internen Pools entsprechend ein. Treffen im laufenden Betrieb Speicheranforderungen ein, entscheidet die Ressource anhand der zuvor konfigurierten Schwellenwerte, ob die Anforderung aus einem Pool bedient werden kann oder an eine übergeordnete Upstream-Ressource weitergeleitet werden muss. Interpretation: Es ist davon auszugehen, dass Anforderungen, die largest_required_pool_block überschreiten, typischerweise direkt an den übergeordneten Speicherverwalter delegiert werden. Frage (offen)
Sequenzdiagramm: Typischer Ablauf der Konfiguration einer Pool-Speicherressource über PoolOptions. Quellen: [SWS_CORE_00027], [SWS_CORE_00028].
Fehlerszenarien
Da ara::core::PoolOptions als einfaches Datenaggregat (struct) definiert ist, wirft die Erzeugung oder Belegung der Felder keine C++-Ausnahmen und liefert keine Fehlercodes zurück. Potenzielle Fehlerbedingungen entstehen erst bei der Interpretation der Werte durch die aufnehmende Speicherressource.
Interpretation: Werden unrealistische Werte konfiguriert — beispielsweise ein extrem großer Wert für max_blocks_per_chunk[SWS_CORE_00027] oder für largest_required_pool_block[SWS_CORE_00028] —, kann dies dazu führen, dass die nachgelagerte Speicherressource bei der Allokation von Chunks an Systemgrenzen stößt und Out-of-Memory-Zustände auslöst. Frage (offen) Vorbedingung für einen stabilen Betrieb ist daher eine sorgfältige Abstimmung der beiden Parameter auf den physisch verfügbaren Arbeitsspeicher und das erwartete Lastprofil der Anwendung. Bleiben die Werte auf 0, obliegt es der Zielressource, robuste Default-Größen einzusetzen.
Dieser Leitfaden basiert auf der Spezifikation AUTOSAR Adaptive Platform Release R25-11. Alle fachlichen Aussagen stützen sich ausschließlich auf die im Spezifikations-Payload enthaltenen Requirements.
UML-Klassendiagramm
Hohle Dreieckspfeile = Vererbung (zeigt zur Basisklasse); Klicken öffnet die jeweilige Klassenseite.
gemini-3.8-flash-medium· 2026-10-13