2010-11-22 54 views
7

有线程调度实现中使用的线程模型,通常由OS内核完成。其中之一是混合(M:N)模型,其中一些N应用程序线程被映射到M内核线程,以便它们可以使用多达M处理器。这种模式有优点和缺点。其中一个优点是,基于此模型的语言将引入一个语言级调度程序实现,负责管理和调度应用程序级线程。混合线程模型(M:N)实现

  • 我想知道是否有人知道任何努力或已经完成了这项工作,以便语言或图书馆可以利用它吗?
  • 考虑到内核2.6.23+使用称为CFS的算法进行调度的事实,您是否认为这种混合模型完全是一种明智的投资方式?

回答

7

首先阅读:http://www.kegel.com/c10k.html#1:1

Linux使用1:1的线程模型从2.6内核(NPTL本地Posix线程库),并从今天开始,几乎所有的操作系​​统迁移到这个模型:

  • FreeBSD从7.0开始,如果我没有弄错的话。
  • Solaris启动的某些版本也移动到1:1 - 我不记得是哪一个。

一旦Linux有M:N模型(这是在2.4 NGPT),但1:1通常是优越的。

以M的最大问题:N模式是:

  1. 难以实现
  2. 在使用阻挡系统调用你的实际需要,通知莫名其妙内核封锁只有一个用户空间线程,而不是内核一个
  3. 在多核心时代,您希望拥有尽可能多的内核线程。

其中之一是混合(M:N),其中的应用程序的一些N个线程映射到几μm可用的处理器模型。

小幅盘整 - N的应用程序线程映射到M内核线程,以便他们可以使用高达到M处理器。

+0

感谢您的链接,良好的反应和更正。 – nobeh 2010-11-23 09:47:58