|
1,SMP的对称是指硬件架构而定的,但作业调度没有强制要求一定在多个核心中分担,这是操作系统根据需要来实现的.
2,目前绝大部分应用的现代操作系统,调度和执行的单元都是线程(thread),而不是进程.当然会出现单线程设计的进程,对于此类程序,无法通过SMP带来性能提升,有时因为在多个CPU核心中迁移导致的时间浪费,甚至可能降低性能.
3,关于处理器黏着,目前的操作系统大部分都已经加入了这方面的考虑.大体思路是尽量保证某个线程始终在某一特定处理器核心上执行.这样做的意义有:1)避免线程在处理器之间迁移导致的cache miss;2)避免核心间迁移线程带来的额外处理时间;3)对于全抢占式设计的内核,避免某些高优先级内核线程被迁移导致的死锁问题,例如IRQ处理等。
4,处理器黏着也不是绝对的,只是“尽可能”保证。具体算法是在调度某一thread运行时先判断其上次运行的那个核心是否空闲,再判断是否有其余空闲核心。对于某些特殊的高优先级内核thread,可能出现如果判断上次运行的核心非空闲则将thread继续放入就绪队列中等待下一次调度。 |
|