1. 课程导入
在嵌入式、车载、工业控制与云计算等场景中,一颗CPU上同时运行多个操作系统(Multi-OS)已不再罕见。典型形态包括:Linux与RTOS共存的双域架构、Hypervisor之上的多虚拟机、AMP(非对称多处理)下各核独立运行不同OS,以及安全域与通用域并行的混合关键系统。多OS资源规划,研究的正是在多个操作系统共享同一颗SoC或同一台物理机时,如何对CPU、内存与设备资源进行划分、隔离、调度与验证,使各OS既能满足各自的实时性、吞吐与安全要求,又不互相破坏。
它与单OS资源管理的根本差别在于:资源不再由单一内核统一仲裁,而是先经过一层“静态或半静态的划分”,再由各OS内部二次管理。因此规划的核心矛盾是隔离性与共享效率的平衡——划分过粗会导致资源浪费,划分过细又会引入通信开销与碎片化。
学习目标
- 理解多OS系统的资源视图:物理资源、虚拟资源与逻辑资源三层映射关系。
- 掌握CPU核分配、内存分区、设备直通与共享的规划方法。
- 能够根据实时性、安全等级与成本约束,选择合适的隔离方案(AMP、SMP+Hypervisor、混合)。
- 学会用参数与指标(延迟、抖动、带宽、占用率)评估规划结果。
- 具备排障意识:识别资源争用、缓存干扰、中断风暴等典型问题。
整体知识框架
本课程的知识框架可归纳为“一个目标、三条主线、四个阶段”。一个目标是让多OS在共享硬件上稳定共存;三条主线分别是CPU资源、内存资源、设备资源;四个阶段是需求分析、划分设计、配置实现、验证调优。下图展示了三线资源与四阶段流程的对应关系,以及各阶段的关键输出物。
核心原理:三层资源视图
多OS资源规划的本质,是建立“物理资源→虚拟资源→逻辑资源”的三层映射。物理层是真实的CPU核、内存条、外设控制器;虚拟层由Hypervisor或AMP框架提供,把物理资源切分成若干虚拟实例;逻辑层是各OS内核看到的CPU、内存与设备。规划工作就是设计这张映射表,并保证映射关系在运行时不被破坏。
方法流程:从需求到验证
- 需求分析:列出每个OS的实时性等级、峰值负载、安全等级、通信需求与成本预算。
- 划分设计:确定CPU核归属、内存分区大小与地址、设备直通或虚拟化方式,形成资源分配表。
- 配置实现:通过设备树、Hypervisor配置文件、内核启动参数等落地划分方案。
- 验证调优:测量延迟、抖动、带宽与CPU占用,排查资源争用与缓存干扰。
下面是一个典型的资源分配表片段,用于描述双域系统中Linux与RTOS的资源归属:
| 资源类型 | Linux 通用域 | RTOS 实时域 | 隔离方式 |
|---|---|---|---|
| CPU 核 | CPU0、CPU1 | CPU2、CPU3 | 核独占 + 亲和性绑定 |
| 内存 | 0x8000_0000–0xBFFF_FFFF | 0xC000_0000–0xCFFF_FFFF | 静态分区 + MMU 隔离 |
| 网卡 | 虚拟网卡 vNIC0 | 物理网卡直通 | VFIO 直通 / 虚拟化 |
| 串口 | 共享(分时) | 独占 UART1 | 设备树裁剪 |
| 中断 | GIC SPI 32–63 | GIC SPI 64–95 | 中断路由隔离 |
案例场景:车载座舱双域系统
某车载座舱采用一颗8核SoC,Linux负责仪表与娱乐,RTOS负责倒车影像与CAN通信。规划时把CPU4–CPU7划给RTOS并绑定中断,内存为RTOS预留512MB连续物理内存,CAN控制器直通RTOS,显示控制器由Linux管理并通过共享内存向RTOS传递图层。验证阶段重点测量倒车影像的端到端延迟,要求小于50ms,抖动小于5ms。若发现Linux侧大内存拷贝导致RTOS延迟抖动,则通过限制Linux的DMA带宽与缓存占用来消除干扰。
常见误区与复盘
误区二:设备全部共享,未做中断路由隔离,引发中断风暴拖垮关键域。
误区三:预留内存过大,通用域内存不足频繁换页,整体吞吐下降。
误区四:验证只测平均延迟,不测最坏情况,上线后偶发超时。
复盘时应回到资源分配表,逐项核对“谁在用、用多少、超了怎么办”。建议在项目早期就建立性能基线,把延迟、抖动、带宽、占用率作为持续跟踪指标,而不是等到集成阶段才补救。
# 示例:查看CPU核隔离与亲和性配置
cat /proc/cmdline
# isolcpus=2,3 nohz_full=2,3 rcu_nocbs=2,3
# 查看中断亲和性
cat /proc/irq/64/smp_affinity_list
# 查看内存分区预留
cat /proc/meminfo | grep -i reserved