对称多处理器
在多处理器架构上,Zephyr支持使用运行Zephyr应用程序代码的多个物理cpu。这种支持是“对称的”,因为默认情况下没有专门处理特定的CPU。任何处理器都能够运行任何Zephyr线程,并支持访问所有标准的Zephyr api。
不需要编写特殊的应用程序代码来利用此特性。如果在受支持的双处理器设备上有两个可运行的Zephyr应用程序线程,它们将同时运行。
SMP配置由CONFIG_SMP k
配置变量控制。必须将其设置为“y”才能启用SMP特性,否则将构建一个单处理器内核。一般来说,平台默认值将在任何受支持的地方启用它。当启用时,可用的物理cpu的数量在构建时作为CONFIG_MP_NUM_CPUS
可见。同样地,默认的这将是平台上可用的cpu的数量,预计典型的应用程序不会改变它。但是,出于特殊目的(例如,用于测试,或保留一个物理CPU来运行非zephyr代码),将其设置为更小(但显然不是更大)号是合法的和支持的。
同步
在应用程序级别上,核心ZephyrIPC和同步原语在SMP内核下的行为都相同的。例如,用于实现阻塞互斥的符号仍然是一个适当的应用程序选择。
然而,在最低级别上,Zephyr代码经常使用irq_lock()/irq_unlock()
原语来使用