SMP--对称多处理器
SMP的结构中,在CPU运行时都是“对称”的,没有主次之分。所有的CPU通过同一条总线共享同一个内存以及外设。为了减少内存访问的冲突,SMP结构中的各干CPU通常都有自己的高速缓存。
程序的运行:
各个CPU动态的从系统的
就绪队列
中调度进程加以执行,一个进程在不同的时间可以在不同的CPU上运行,中断请求则动态的分配给其中的一个CPU,由这个CPU提供中断服务。除一般的内存共享外,处理器间的通信手段还有进程间通信和处理器间的中断请求。
SMP中的主要问题:
- 同步
- cache一致性
- 中断
同步
进程间的同步实际是对临界资源的互斥操作
在单处理器结构中,只要能保证在对临界资源的操作中途不发生进程调度,并且不会发生中断,或者即使发生中断也与操作的对象无关,就保证了操作的互斥性。
1 | spin_lock |
一般而言,只要能保证对临界资源操作的“原子性”,互斥性就保证了,在单处理器结构中,能够在单条指令完成的操作就认为是“原子操作”。在CPU的设计中为保证原子操作,设计一些原子指令,“测试并设置”, “测试并清除”。
在SMP结构中,对指令间的执行顺序的依赖会存在很大的风险。必须使用锁使其在一个CPU上执行完毕,不能中断,否则可能导致指令顺序错乱。
Cache一致性
1 | +----+ +----+ +----+ +----+ |
中断
Q&A
Cache line
参考
- [Linux内核源代码情景分析]
- 基于多核处理器的RTOS多核扩展分析与研究 一