linux SMP启动
SMP简介
- 硬件上,CPU没有主次之分
- 软件上,每个CPU平等动态地从进程就绪队列中调度进程加以执行,中断请求也是等概率动态的分布给某个CPU
SMP启动
- SMP结构中的CPU都是平等的,没有主次之分.
- 在同一时间,一个进程只能由一个CPU执行
- 系统启动时永远都是只有一个先启动,boot一般都是单核运行,这个CPU称为BP(引导处理器),其他处于暂停状态的称为AP(应用处理器)
- BP运行到某个阶段后通过硬件的一些机制让AP运行,此后多个CPU同时运行
- 一但各个AP都已投入运行
SMP总结
在SMP中,首先要对各个处理器进行初始化。然后BP工作,而其它的CPU(AP)则停留在一个初始化好的中断屏蔽状态休眠。BSP继续进行启动过程,在执行到操作系统的start_kernel之前,BSP所进行的工作与单处理器系统所做的工作是相同的。在start_kernel中,BSP通过smp_init对每个AP进行初始化。初始化的方式是通过APIC发送IPI。当BSP初始化完毕所有的AP之后,就继续执行start_kernel中的其余部分代码。而AP在接收到IPI之后,跳转到事先设置好的地址处执行trampoline.S和head.S。在执行head.S的过程中直接跳入事先创建好的空闲进程,进入空闲状态,等待以后的系统调度
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律