【发布时间】:2013-05-29 15:18:12
【问题描述】:
如果需要在多核处理器机器的多个内核上并行执行,Linux 内核是否会同时执行多个上下文切换?有参考吗?
【问题讨论】:
-
不,上下文切换几乎同时发生。上下文切换需要锁定进程表,因此一次只能切换一个进程。第二个线程可能在第一个线程之后立即切换,在获得锁之后。 (IIRC 这种现象称为“漏斗”锁)
标签: linux multicore context-switch
如果需要在多核处理器机器的多个内核上并行执行,Linux 内核是否会同时执行多个上下文切换?有参考吗?
【问题讨论】:
标签: linux multicore context-switch
是的,你是对的。在 SMP 系统上,多个上下文切换同时发生。每个核心都可以独立进行上下文切换。当然,如果需要,还需要 spinlock_* 来保护临界区。
也许你想知道一个核心什么时候决定做上下文切换,有几种情况:
(1) 发生中断;
(2) 异常发生;
(3)用户进程系统调用;
(4)在内核空间(不是中断/异常上下文),也有调用schedule()放弃CPU的代码;
(5) ...;
【讨论】: