一文讲解linux SMP Boot

说明:

  1. Kernel版本:4.14
  2. ARM64处理器,Contex-A53,双核
  3. 使用工具:Source Insight 3.5, Visio

1. 介绍

SMP, Symmetric Multi-Processor,相对于单核处理器来说,SMP实现了真正严格意义上的并发。通常SMP的启动,会先让Boot Core启动,Secondary Cores会等待Boot Core来唤醒。

顺带参考下Arm Cortex-A53 MPCore Processor, Revision:r0p4文档中的图片,描述一下SMP中CPU Core的配置接口及功能模块:

  • 配置接口

  • 功能框图

  资料直通车:Linux内核源码技术学习路线+视频教程内核源码

学习直通车:Linux内核源码内存调优文件系统进程管理设备驱动/网络协议栈

2. 流程

当然,这篇文章的核心,当然是下边这张图片了:

图中从Uboot到内核分析了流程:

SMP启动的时候,Secondary CPU是可能处在WFI或者WFE状态,以前的内核中会进入WFI状态,然后可以通过arch_send_call_function_ipi_mask接口去boot Secondary CPU。而我分析的这个版本中,处理器会在Uboot中进入WFE状态,后续在启动过程中,会有两次进入WFE状态的情况,Boot CPU需要两次通过SEV指令才能真正把CPU1启动起来。

在Kernel启动的过程中,涉及到smp操作的时,最终会调用到底层的CPU操作函数集cpu_ops,而cpu_ops是可以选择smp_spin_table的形式,或者psci的形式,如果选择psci的形式,那么就涉及到底层的Arm Trusted Firmware。整体的流程比较复杂,后续有机会接触再深入分析。

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Linux SMP(Symmetric Multi-Processing)是一种在多处理器系统中运行的操作系统。该操作系统支持多个处理器核心之间的并行处理,能够更高效地利用系统资源,提升整体性能。 Linux SMP源码分析是对Linux SMP操作系统的内部实现进行深入研究和解析。其目的是理解和掌握Linux SMP操作系统的工作原理与核心机制,以便于进行系统调优和性能优化。 进行Linux SMP源码分析的过程中,首先要了解Linux SMP操作系统的基本结构和组成部分。这包括内核、进程调度器、内存管理器、文件系统等模块。然后,通过阅读和分析内核源代码,深入了解每个模块的实现细节和相互之间的关联关系。 在分析Linux SMP源代码的过程中,需要关注以下几个关键点: 1. 处理器调度:了解Linux SMP是如何进行多个处理器核心之间的任务调度和负载均衡的。需要分析调度算法和策略,以及与进程管理器的交互过程。 2. 内存管理:分析内核是如何进行多核心的内存管理和共享内存的管理。需要了解页面置换算法、缓存一致性和锁机制等相关知识。 3. 进程间通信:探究Linux SMP是如何实现多核心之间的进程间通信。需要研究信号量、互斥锁、条件变量等IPC机制的实现细节。 4. 文件系统:深入研究Linux SMP对文件系统的支持。了解多核心环境下的文件并发访问和文件系统缓存等相关内容。 通过对Linux SMP源码的详细分析,可以更好地理解和掌握操作系统的工作原理和机制,提高系统的性能和稳定性。此外,深入研究Linux SMP源码还可以为开发者提供更大的灵活性和自定义能力,实现定制化的功能和优化。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值