linux SMP启动

SMP简介

  1. 硬件上,CPU没有主次之分
  2. 软件上,每个CPU平等动态地从进程就绪队列中调度进程加以执行,中断请求也是等概率动态的分布给某个CPU

SMP启动

  1. SMP结构中的CPU都是平等的,没有主次之分.
  2. 在同一时间,一个进程只能由一个CPU执行
  3. 系统启动时永远都是只有一个先启动,boot一般都是单核运行,这个CPU称为BP(引导处理器),其他处于暂停状态的称为AP(应用处理器)
  4. BP运行到某个阶段后通过硬件的一些机制让AP运行,此后多个CPU同时运行
  5. 一但各个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的过程中直接跳入事先创建好的空闲进程,进入空闲状态,等待以后的系统调度

posted on 2016-10-10 13:48  sudochen  阅读(1182)  评论(0)    收藏  举报

导航