4. 多核任务模型
在 AURIX 多核实时系统中,软件并不是“一大段顺序执行的代码”,而是被拆分为若干可独立调度、可并发推进的执行单元。理解这些执行单元的类型、状态与调度规则,是后续进行多核任务划分、实时性分析和资源保护设计的基础。本节从任务模型的基本概念出发,建立一套贯穿全课程的术语体系。
一、核心执行单元:进程、线程、任务与 ISR
在通用操作系统中,进程是资源分配的基本单位,拥有独立的地址空间;线程是调度的基本单位,共享所属进程的资源。而在 AURIX 这类深度嵌入式实时系统中,通常不引入完整的 MMU 隔离进程,而是以任务(Task)和中断服务例程(ISR)作为主要执行单元。
- 任务(Task):一段具有明确入口、可被调度器激活和挂起的函数,通常对应一个功能闭环,如“电机电流环控制”“CAN 报文解析”。任务共享同一地址空间,通过优先级和状态参与调度。
- 线程(Thread):在 AUTOSAR OS 或 RTOS 语境下,常与任务同义;严格来说线程强调共享地址空间下的并发执行流,任务更强调功能语义。
- 进程(Process):在 AURIX 裸机或轻量 RTOS 中较少使用;若使用,多指带独立保护域(MPU)的隔离单元,用于安全相关功能隔离。
- 中断服务例程(ISR):由硬件事件(定时器、CAN 接收、ADC 完成)触发,优先级通常高于所有任务,执行时间必须极短,只做“搬运”和“置位”,把重活交给任务。
关键区分:任务由调度器“主动”选择执行,ISR 由硬件“强制”打断当前执行流。ISR 的优先级概念与任务优先级属于两套体系,但会相互影响。
二、任务状态与状态迁移
一个任务在其生命周期内会经历多种状态。AURIX 上常见的 RTOS(如 AUTOSAR OS、FreeRTOS)状态模型基本一致:
- 就绪(Ready):任务已具备运行条件,等待调度器分配 CPU。
- 运行(Running):任务正在某个核上执行。
- 等待/阻塞(Waiting/Blocked):任务在等待事件,如信号量、消息、延时到期。
- 挂起(Suspended):任务被显式停止,不参与调度,直到被激活。
状态迁移由调度器、事件和系统服务共同驱动。下图展示了任务状态与 ISR 触发之间的典型关系:
三、优先级与调度基本概念
优先级是实时系统表达“谁更重要”的核心手段。AURIX 多核环境下,优先级体系分为两层:
- 中断优先级:由中断控制器(如 IR)配置,数值越小通常优先级越高,决定 ISR 之间以及 ISR 对任务的抢占关系。
- 任务优先级:由 RTOS 调度器管理,决定就绪任务之间的执行顺序。
常见调度策略包括:
| 调度策略 | 选择依据 | 特点 | AURIX 典型场景 |
|---|---|---|---|
| 抢占式优先级调度 | 最高优先级就绪任务 | 实时性强,响应快 | 电机控制、安全监控 |
| 时间片轮转 | 同优先级轮流执行 | 公平,但抖动较大 | 通信协议栈后台任务 |
| 协作式调度 | 任务主动让出 CPU | 实现简单,实时性差 | 简单裸机循环 |
| 静态表驱动调度 | 预定义时间表 | 可预测性最高 | 时间触发安全系统 |
在 AURIX 多核系统中,每个核可以运行独立的调度器实例,也可以采用全局调度器。跨核任务优先级需要统一编号,否则会出现“同优先级任务在不同核上行为不一致”的问题。
四、案例场景:电流环控制中的任务与 ISR 协作
以电机 FOC 电流环为例,典型执行链如下:
ADC 转换完成中断 (ISR, 最高优先级)
└─ 读取电流采样值,置位事件标志
└─ 唤醒电流环任务 (Task, 高优先级)
├─ Clarke/Park 变换
├─ PI 调节
├─ SVPWM 计算
└─ 更新 PWM 占空比
└─ 等待下一次 ADC 中断
这里 ISR 只做最紧急的数据搬运,电流环任务承担计算密集工作。若把 PI 计算放进 ISR,会阻塞其他中断,导致系统实时性崩溃。这就是“ISR 短小、任务承担重活”的经典分工。
五、常见误区与复盘
- 误区一:任务越多越好。任务数量增加会带来上下文切换开销和栈内存消耗,AURIX 每个核的 RAM 有限,需权衡。
- 误区二:优先级越高越安全。高优先级任务若长时间占用 CPU,会饿死低优先级任务,必须配合时间片或让出机制。
- 误区三:ISR 里可以随意调用 RTOS API。只有带
FromISR后缀的 API 才允许在中断上下文调用,否则会破坏调度器内部状态。 - 误区四:忽略优先级反转。当低优先级任务持有互斥量、高优先级任务等待时,中等优先级任务可能长期抢占,需使用优先级继承或天花板协议。
在多核 AURIX 上,跨核共享资源的互斥比单核更复杂。自旋锁会浪费 CPU 周期,建议优先使用核间中断 + 消息传递,或由 AUTOSAR OS 提供的跨核互斥机制。
掌握任务、线程、进程、ISR、优先级、状态与调度这些基本概念后,才能进一步讨论多核任务划分、负载均衡与实时性分析。这些术语将贯穿后续所有章节,是构建可靠 AURIX 多核系统的共同语言。