对称多处理器
在多处理器架构上,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()原语来使用中断屏蔽来实现细粒度的关键部分。这些api继续工作通过一个仿真层(见下文),但屏蔽技术不:你的CPU不会中断当你在关键部分说是否一个不同的CPU将同时运行和检查或修改相同的数据!
自旋锁
SMP系统
本文介绍了Zephyr内核在对称多处理器(SMP)环境下的支持,包括SMP配置、同步原语如自旋锁的使用,以及CPU掩码、SMP引导进程和多处理器中断的处理。Zephyr在SMP下的行为和单处理器系统有所不同,特别是在中断和锁的管理上,强调了自旋锁在SMP中的重要性以及其与传统IRQ锁的区别。
订阅专栏 解锁全文
582

被折叠的 条评论
为什么被折叠?



