有three通常由操作系统内核完成的线程调度实现中使用的线程模型。其中之一是混合动力(M:N
)模型,其中一些N
应用程序线程映射到M
内核线程,以便它们可以使用最多M
处理器。这种模式有优点也有缺点。优点之一是基于此模型的语言将引入语言级调度程序实现,负责管理和调度应用程序级线程。
- 我想知道是否有人知道任何已经完成此工作的努力或工作,以便语言或图书馆可以利用它?
- 例如,考虑到内核 2.6.23+ 使用名为 CFS 的算法进行调度,您认为这种混合模型是否是明智的投资方法?
首先请阅读以下内容:http://www.kegel.com/c10k.html#1:1
Linux 从内核 2.6(NPTL Native Posix 线程库)开始使用 1:1 线程模型,如今几乎所有操作系统都转向此模型:
- 如果我没记错的话,FreeBSD 从 7.0 开始。
- 某些版本的 Solaris 开始也改为 1:1 - 我不记得是哪一个了。
Linux 曾经有 M:N 模型(这是在 2.4 NGPT 中),但 1:1 通常更优越。
M:N模型最大的问题是:
- 实施起来困难
- 当使用阻塞系统调用时,您实际上需要以某种方式通知内核仅阻塞一个用户空间线程而不是内核线程
- 在多核时代,您希望拥有尽可能多的内核线程。
其中之一是混合 (M:N) 模型,其中应用程序的 N 个线程映射到 M 个可用处理器。
小修正 - N 个应用程序线程映射到 M 个内核线程,以便它们可以使用up到 M 个处理器。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)