【问题标题】:Context Switches in Linux Kernel on Multicore多核 Linux 内核中的上下文切换
【发布时间】:2013-05-29 15:18:12
【问题描述】:

如果需要在多核处理器机器的多个内核上并行执行,Linux 内核是否会同时执行多个上下文切换?有参考吗?

【问题讨论】:

  • 不,上下文切换几乎同时发生。上下文切换需要锁定进程表,因此一次只能切换一个进程。第二个线程可能在第一个线程之后立即切换,在获得锁之后。 (IIRC 这种现象称为“漏斗”锁)

标签: linux multicore context-switch


【解决方案1】:

是的,你是对的。在 SMP 系统上,多个上下文切换同时发生。每个核心都可以独立进行上下文切换。当然,如果需要,还需要 spinlock_* 来保护临界区。

也许你想知道一个核心什么时候决定做上下文切换,有几种情况:

(1) 发生中断;

(2) 异常发生;

(3)用户进程系统调用;

(4)在内核空间(不是中断/异常上下文),也有调用schedule()放弃CPU的代码;

(5) ...;

【讨论】:

  • @tod 你在说什么体验?
  • @tod,是的,安德烈亚斯是对的。请描述你的经历。所以有人可以帮助分析。
猜你喜欢
  • 2019-03-17
  • 2016-01-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-02-20
  • 1970-01-01
  • 1970-01-01
  • 2019-05-09
相关资源
最近更新 更多