DEENESPTFRRUARHIKOZHNL

структура ara::core::PoolOptions

[SWS_CORE_00026] Upstream: RS_AP_00130

struct PoolOptions {...};

Implementation of std::pmr::pool_options from [mem.poly.pool_options.class]

Header-Datei#include "ara/core/memory_resource.h"
Forwarding-Header#include "ara/core/core_fwd.h"
Scopenamespace ara::core

Руководство пользователяСОЗДАНО ИИ

Конфигурирует границы блоков и чанков для пуловых ресурсов памяти.
СОЗДАНО ИИ не проверено Модель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: 79719d3800dc Происхождение Открытые вопросы (3)
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал

Конфигурирует границы блоков и чанков для пуловых ресурсов памяти.

Структура ara::core::PoolOptions служит для конфигурирования пуловых ресурсов памяти в соответствии с std::pmr::pool_options. Она позволяет ограничивать максимальное количество блоков на чанк с помощью max_blocks_per_chunk [SWS_CORE_00027], а также определять максимальный размер блока пула с помощью largest_required_pool_block [SWS_CORE_00028]. Будучи простым агрегатом данных, структура заполняется перед инициализацией ресурса памяти и передается в его конструктор. Интерпретация: поскольку внутренняя валидация не выполняется, разработчики должны убедиться, что сконфигурированные пороговые значения не превышают возможности физической оперативной памяти. Вопрос (открытый)

Контекст

Структура данных ara::core::PoolOptions предоставляет параметры конфигурации для ресурсов на основе пулов памяти в модуле core платформы AUTOSAR Adaptive Platform. Она служит для целенаправленного управления поведением выделения памяти и ориентируется на стандартную функциональность C++ из std::pmr::pool_options. Структура подключается через заголовочный файл <ara/core/memory_resource.h> и тесно взаимодействует с пуловыми ресурсами памяти, которые резервируют непрерывные чанки и блоки для повторяющихся запросов памяти.

В критически важных для безопасности системах реального времени ограничение и предсказуемость операций динамической памяти имеют ключевое значение. В этом контексте ara::core::PoolOptions берет на себя роль разделителя между специфичными для приложения требованиями к емкости и внутренним управлением пулами памяти. С помощью данной структуры разработчики могут определить, какое максимальное количество блоков может быть объединено внутри одного чанка [SWS_CORE_00027] и какой максимальный размер блока должен обслуживаться специализированными пулами [SWS_CORE_00028]. Прикладное программное обеспечение, инстанцирующее ресурсы памяти, использует эти опции для предотвращения чрезмерной фрагментации и детерминированного контроля границ выделения памяти.

Жизненный цикл

Являясь простым типом конфигурации (struct), ara::core::PoolOptions обладает легковесным жизненным циклом без сложных внутренних переходов состояний. Создание обычно происходит в виде локального объекта на стеке или статической конфигурационной константы перед инстанцированием соответствующего ресурса памяти. При инстанцировании оба атрибута max_blocks_per_chunk [SWS_CORE_00027] и largest_required_pool_block [SWS_CORE_00028] по умолчанию инициализируются значением 0.

Интерпретация: значение 0, вероятно, сигнализирует принимающему ресурсу памяти о том, что должны действовать зависящие от платформы границы по умолчанию. Вопрос (открытый) Поскольку это чистый объект-значение, ara::core::PoolOptions не владеет ресурсами в смысле RAII и не выполняет действий по очистке при уничтожении. Жизненный цикл структуры обычно привязан к фазе создания ресурса памяти: как только параметры переданы ресурсу пула, ресурс сохраняет параметры внутри себя, поэтому сам объект PoolOptions можно безопасно уничтожить или использовать повторно.

Что касается параллелизма, сама структура не предоставляет внутреннего механизма синхронизации. Параллельный доступ на чтение к неизмененному объекту PoolOptions является потокобезопасным, тогда как одновременные модификации должны синхронизироваться извне. Однако, поскольку объект в основном конфигурируется перед передачей, доступ на запись после инициализации, как правило, больше не происходит.

Путь использования

Основной вариант использования включает определение границ выделения памяти и их передачу компоненту управления памятью. Сначала вызывающая сторона создает экземпляр ara::core::PoolOptions и заполняет нужные параметры. С помощью max_blocks_per_chunk задается верхняя граница количества блоков на чанк [SWS_CORE_00027], тогда как largest_required_pool_block определяет верхний предел для операций выделения памяти, которые еще должны покрываться пулом [SWS_CORE_00028].

Затем заполненная структура передается в конструктор соответствующего пулового ресурса памяти. Ресурс памяти считывает сконфигурированные значения и настраивает свои внутренние пулы должным образом. Если во время работы поступают запросы на память, ресурс на основе ранее сконфигурированных пороговых значений принимает решение, может ли запрос быть обслужен из пула или должен быть перенаправлен в вышестоящий восходящий (upstream) ресурс. Интерпретация: следует исходить из того, что запросы, превышающие largest_required_pool_block, обычно делегируются непосредственно вышестоящему диспетчеру памяти. Вопрос (открытый)

Конфигурация и использование PoolOptionsПриложениеPoolOptionsSpeicherressourceUse Case: KonfigurationParameter max_blocks_per_chunkи установить largest_required_pool_blockUse Case: Инициализация ресурса памятиКонструирование с PoolOptionsOptionen auslesenВернуть значения параметровUse Case: Laufzeit-AllokationSpeicher anfordernSpeicherblock bereitstellen

Диаграмма последовательности: типичный процесс конфигурации пулового ресурса памяти с помощью PoolOptions. Источники: [SWS_CORE_00027], [SWS_CORE_00028].

Сценарии ошибок

Поскольку ara::core::PoolOptions определена как простой агрегат данных (struct), создание или заполнение полей не генерирует C++-исключений и не возвращает кодов ошибок. Потенциальные ошибочные состояния возникают только при интерпретации значений принимающим ресурсом памяти.

Интерпретация: если сконфигурированы нереалистичные значения — например, чрезвычайно большое значение для max_blocks_per_chunk [SWS_CORE_00027] или для largest_required_pool_block [SWS_CORE_00028], — это может привести к тому, что нижестоящий ресурс памяти при выделении чанков достигнет системных пределов и вызовет состояние нехватки памяти (Out-of-Memory). Вопрос (открытый) Поэтому предусловием стабильной работы является тщательное согласование обоих параметров с физически доступной оперативной памятью и ожидаемым профилем нагрузки приложения. Если значения остаются равными 0, целевой ресурс обязан применить надежные размеры по умолчанию.

Настоящее руководство основано на спецификации AUTOSAR Adaptive Platform Release R25-11. Все технические утверждения опираются исключительно на требования, содержащиеся в полезной нагрузке спецификации.

UML-диаграмма классов

Hohle Dreieckspfeile = Vererbung (zeigt zur Basisklasse); Klicken öffnet die jeweilige Klassenseite.

G nara__core__PoolOptions463 «struct» PoolOptions + largest_ + max_

Константы

largest_ переменная

≙ [mem.res.pool]

std::size_t largest_required_pool_block = 0;
max_ переменная

≙ [mem.res.pool]

std::size_t max_blocks_per_chunk = 0;

Документация констант / переменных

переменная largest_ [SWS_CORE_00028]

std::size_t largest_required_pool_block = 0;

As per corresponding usage in [mem.res.pool]

Header-Datei#include "ara/core/memory_resource.h"
Scopestruct ara::core::PoolOptions
Symbollargest_required_pool_block
Typstd::size_t

Request a governed re-review of this record. The record is not changed immediately.

Record
AUTOSAR/AP/record/SWS_CORE_00028
Status
valid/unmigrated
Version
AUTOSAR/AP/record/SWS_CORE_00028@rel:R25-11#43b319b0
Content hash
43b319b0
Source
https://www.autosar.org/fileadmin/standards/R25-11/AP/AUTOSAR_AP_SWS_Core.pdf#nameddest=SWS_CORE_00028
Status: valid/unmigrated Version: rel:R25-11#a3bf6d56 Versionshistorie & Revisions (1 transition, 3 revision)
Current State
valid/unmigrated
Reason
mechanically backfilled by migriere_status_backfill.py -- no per-field curation history exists yet for this record
Campaign
2026-08-13-status-backfill
Active Version
AUTOSAR/AP/record/SWS_CORE_00028@rel:R25-11#a3bf6d56
Point-in-Time History:
Recorded Revisions (3):
  • R25-11rel:R25-11#09a93b7f2026-09-30
  • R24-11rel:R24-11#0f29769e2026-10-14
  • R25-11rel:R25-11#a3bf6d562026-10-14 active
DateActorTransitionReason / RationaleCampaign
2026-08-13toolnone → valid/unmigratedmechanically backfilled by migriere_status_backfill.py -- no per-field curation history exists yet for this record2026-08-13-status-backfill

переменная max_ [SWS_CORE_00027]

std::size_t max_blocks_per_chunk = 0;

As per corresponding usage in [mem.res.pool]

Header-Datei#include "ara/core/memory_resource.h"
Scopestruct ara::core::PoolOptions
Symbolmax_blocks_per_chunk
Typstd::size_t

Request a governed re-review of this record. The record is not changed immediately.

Record
AUTOSAR/AP/record/SWS_CORE_00027
Status
valid/unmigrated
Version
AUTOSAR/AP/record/SWS_CORE_00027@rel:R25-11#9290c83a
Content hash
9290c83a
Source
https://www.autosar.org/fileadmin/standards/R25-11/AP/AUTOSAR_AP_SWS_Core.pdf#nameddest=SWS_CORE_00027
Status: valid/unmigrated Version: rel:R25-11#fc3e04ef Versionshistorie & Revisions (1 transition, 3 revision)
Current State
valid/unmigrated
Reason
mechanically backfilled by migriere_status_backfill.py -- no per-field curation history exists yet for this record
Campaign
2026-08-13-status-backfill
Active Version
AUTOSAR/AP/record/SWS_CORE_00027@rel:R25-11#fc3e04ef
Point-in-Time History:
Recorded Revisions (3):
  • R25-11rel:R25-11#3e26306e2026-09-30
  • R24-11rel:R24-11#cd619fd92026-10-14
  • R25-11rel:R25-11#fc3e04ef2026-10-14 active
DateActorTransitionReason / RationaleCampaign
2026-08-13toolnone → valid/unmigratedmechanically backfilled by migriere_status_backfill.py -- no per-field curation history exists yet for this record2026-08-13-status-backfill