混合线程模型 (M:N) 实现

发布于 2024-10-03 16:07:53 字数 406 浏览 4 评论 0原文

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

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

There are three thread models that are used in thread scheduling implementations usually done by OS Kernels. One of them is the hybrid (M:N) model in which some N application threads are mapped to M kernel threads so that they can use up to M processors. There are pros and cons to this model. One of the advantages is that the languages that are based on this model will introduce a language level scheduler implementation that is responsible for management and scheduling the application-level threads.

  • I was wondering if anyone knows any effort or a work that already has done this so that a language or library could take advantage of it?
  • Considering for instance the fact that Kernel 2.6.23+ uses an algorithm called CFS for scheduling, do you think that this hybrid model would at all be a wise approach to invest on?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

摘星┃星的人 2024-10-10 16:07:53

首先阅读以下内容: 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 模型的最大问题是:

  1. 难以实现
  2. 当使用阻塞系统调用时,您实际上需要以某种方式通知内核仅阻塞一个用户空间线程而不是内核线程
  3. 在多核时代,您希望拥有尽可能多的内核线程你可以。

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

小修正 - N 个应用程序线程映射到 M 个内核线程,以便它们可以使用最多 M 个处理器。

First of all read this: http://www.kegel.com/c10k.html#1:1

Linux uses 1:1 threading model starting from kernel 2.6 (NPTL Native Posix threading library) and today almost all OSes move to this model:

  • FreeBSD starting from 7.0 if I'm not mistaken.
  • Solaris starting for some version also moved to 1:1 - I don't remember which one.

Once Linux had M:N model (this was in 2.4 NGPT) but 1:1 is generally superior.

The biggest problem with M:N model is:

  1. Hard to implement
  2. When using blocking system calls you actually need to notify somehow kernel to block only one user space thread and not kernel one
  3. In age of multi cores you want to have as much kernel threads as you can.

One of them is the hybrid (M:N) model in which some N threads of an application are mapped to some M available processors.

Small correction - N application threads mapped to M kernel threads so they can use up to M processors.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文