为什么现代操作系统(Linux、Windows、Solaris)要实现一对一线程模型?

Why do modern OSses (Linux, Windows, Solaris) implement a one - one thread model?

正在阅读我的 OS class 教科书,即 操作系统概念,第 8 版,作者是 Silberschatz、Galvin 和 Gagne,我来了在关于线程的章节中发现了一些有趣的东西。

在介绍线程模型时,他们开始于:

多对一

-声明本质上这不提供真正的并发性


接下来他们搬到:

一对一

-声明这提供了真正的并发性,但由于创建过多线程的开销而受到线程数量限制。


最后,他们转向看似显而易见的解决方案:

多对多

这显然是两全其美。


然而,如果您注意到一对一部分,它指出 Linux,以及 Windows 系列操作系统,实现一对一模型.

在最后一张图片之后的书中更进一步...

那么,如果多对多是最佳解决方案,为什么 Linux、Windows 和 Solaris(可能还有其他)实施一对一?

...如果这应该出现在程序员 SE 中,我们深表歉意。

Solaris 将模型从 MxN 更改为 1:1 因为在两个不同级别管理线程的复杂性没有产生预期的好处,缺少直接映射导致在信号处理等方面满足 POSIX 线程要求的问题,并且为每个用户 space 线程创建新内核线程的成本不是太高。 Sun 在切换时发布了一份白皮书,其中提供了更多详细信息:Multithreading in the Solaris™ Operating Environment.