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

用户指南人工智能生成

为基于池的内存资源配置块与块组(chunk)边界。
AI 生成 未审核 模型: gemini-3.8-flash-medium · 推理强度: medium · 温度: 不可控 · 提示词: 79719d3800dc 来源 未决问题(3)
译自德文指南gemini-3.8-flash-low · 2026-10-13 · 德文原文

为基于池的内存资源配置块与块组(chunk)边界。

结构 ara::core::PoolOptions 用于根据 std::pmr::pool_options 配置基于池的内存资源。它允许通过 max_blocks_per_chunk [SWS_CORE_00027] 限制每个 chunk 的最大块数,并通过 largest_required_pool_block [SWS_CORE_00028] 指定最大池块大小。作为一个简单的数据聚合体,该结构在内存资源初始化之前被填充并传递给其构造函数。解释:由于不执行自身的校验,开发人员必须确保所配置的阈值不会超出物理内存的承受能力。 问题 (未决)

上下文

数据结构 ara::core::PoolOptions 为 AUTOSAR Adaptive Platform 的 core 模块中基于内存池的资源提供配置参数。它用于针对性地控制分配行为,并参考了 std::pmr::pool_options 的 C++ 标准功能。该结构通过头文件 <ara/core/memory_resource.h> 引入,并与池内存资源紧密交互,后者为重复的内存请求保留连续的 chunk 和块。

在安全关键和准实时系统中,动态内存操作的受限性与可预测性至关重要。在此上下文中,ara::core::PoolOptions 承担了在应用特定容量需求与内存池内部管理之间解耦的角色。开发人员可以通过该结构指定一个 chunk 内最多可以组合多少个块 [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 指定每个 chunk 的块数上限 [SWS_CORE_00027],而 largest_required_pool_block 则定义仍应由池覆盖的分配上限 [SWS_CORE_00028]。

随后,将填充后的结构传递给相应池内存资源的构造函数。内存资源读取配置的值并相应地设置其内部池。如果在运行期间收到内存请求,资源将根据预先配置的阈值决定该请求是从池中服务,还是必须转发给上游资源。解释:可以假定,超过 largest_required_pool_block 的请求通常会直接委托给上层内存管理器。 问题 (未决)

PoolOptions 的配置与使用应用PoolOptionsSpeicherressourceUse Case: KonfigurationParameter max_blocks_per_chunk并设置 largest_required_pool_blockUse Case: 内存资源初始化使用 PoolOptions 进行构造Optionen 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] 取值过大——可能导致下游内存资源在分配 chunk 时达到系统极限并引发内存不足(Out-of-Memory)状态。 问题 (未决)因此,稳定运行的前提是使这两个参数与物理可用内存以及应用程序的预期负载特性仔细匹配。如果值保持为 0,则由目标资源负责采用稳健的默认大小。

本指南基于 AUTOSAR Adaptive Platform Release R25-11 规范。所有技术表述均完全基于规范负载中包含的 Requirements。

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#152a9848
Content hash
152a9848
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#b0a449c2
Content hash
b0a449c2
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