AP中的Execution Manager“非报告进程”和“伴随进程”概念解析
在《AUTOSAR_AP_SWS_ExecutionManagement.pdf》中,对“非报告进程(Non-reporting Process)”和“伴随进程(Companion Process)”的定义、作用及机制有明确说明,其核心目的是支持集成未修改的第三方二进制文件(如无法适配AUTOSAR Adaptive Platform的现有软件)。以下是详细介绍:
一、非报告进程(Non-reporting Process)
1. 定义与核心特征
非报告进程是一种特殊的Modelled Process(建模进程),其reportingBehavior
属性被配置为doesNotReportExecutionState
。
- 它不使用AUTOSAR Adaptive Platform的
ara::exec::ExecutionClient
API,因此无法主动向Execution Management(EM)报告自身的执行状态(如kRunning
)。 - 其设计初衷是允许集成“无法修改的第三方软件”,例如仅提供二进制文件、无法适配AUTOSAR接口的 legacy 软件。
2. 行为与限制
- 状态转换特性:非报告进程启动后,EM会隐式将其进程状态从“Starting”转换为“Running”(无需等待其报告
kRunning
),即认为其资源分配完成后即处于运行状态。 - 安全风险:在安全相关系统中需谨慎使用,因为这类进程通常不提供安全关键功能,且可能不被Platform Health Management(平台健康管理)监控,但可能影响其他安全相关进程,建议通过
ResourceGroup
(资源组)隔离。 - 报告限制:若非报告进程尝试调用
ara::exec::ExecutionClient::ReportExecutionState
接口报告状态,EM会将其视为“违规(Violation)”。
二、伴随进程(Companion Process)
1. 定义与核心作用
伴随进程是一种Reporting Process(报告进程),与非报告进程关联,用于代理非报告进程的状态监控,解决非报告进程无法主动报告状态导致的依赖管理问题。
- 它的核心功能是:等待非报告进程提供的服务可用后,向EM报告自身的
kRunning
状态,从而触发依赖该服务的其他进程启动。
2. 工作机制
当系统中存在对非报告进程的功能依赖时,集成者可通过以下方式配置:
- 将依赖关系“转移”到伴随进程:为依赖非报告进程的其他进程配置对伴随进程的执行依赖(如依赖伴随进程的
kRunning
状态)。 - 伴随进程通过项目特定的方式(如监控非报告进程的端口、日志或心跳)判断非报告进程的服务是否可用。
- 当非报告进程的服务可用时,伴随进程向EM报告
kRunning
,此时依赖它的进程会被EM启动(。
例如:若非报告进程A提供文件系统服务,伴随进程B会监控A的服务可用性,当A就绪后,B报告kRunning
,依赖文件系统的进程C会被EM启动。
三、二者的协同价值
- 兼容性扩展:非报告进程允许直接集成未修改的第三方二进制文件,无需为适配AUTOSAR接口而修改源码。
- 依赖管理补全:伴随进程解决了非报告进程无法报告状态的问题,确保依赖其功能的其他进程能按预期启动,维持系统执行依赖的完整性。
- 灵活性平衡:在不破坏AUTOSAR架构规范的前提下,为 legacy 软件或第三方组件提供了集成路径,降低了迁移成本。
综上,非报告进程与伴随进程的组合设计,是AUTOSAR Adaptive Platform为平衡“标准化架构”与“兼容性需求”而提出的关键机制,尤其适用于需要集成第三方闭源软件或 legacy 系统的场景。