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的过程中直接跳入事先创建好的空闲进程,进入空闲状态,等待以后的系统调度
浙公网安备 33010602011771号