2010-11-22 80 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