阅读我的操作系统课教科书,即操作系统概念,第 8 版,作者是 Silberschatz、Galvin 和 Gagne,我在有关线程的章节中发现了一些有趣的东西。
在介绍线程模型时,他们从:
多对一
-声明本质上这并不能提供真正的并发
接下来他们移动到:
一对一
-声明这提供了真正的并发性,但由于创建过多线程的开销而受到线程数量限制。
最后,他们转向看似显而易见的解决方案:
多对多
这显然是两全其美。
但是,如果您在一对一部分注意到,它声明 Linux 与 Windows 系列操作系统一起实现一对一模型。
在最后一张图片之后的书中...
如果多对多是最好的解决方案,为什么 Linux、Windows 和 Solaris(可能还有其他)实现一对一?
...如果这应该在程序员 SE 中进行,我们深表歉意。
最佳答案
Solaris 将模型从 MxN 更改为 1:1 因为在两个不同级别管理线程的复杂性没有产生预期的好处,缺乏直接映射导致在信号处理等领域满足 POSIX 线程要求的问题,以及为每个用户空间线程创建新内核线程的成本并不太高。 Sun 在切换时发布了一份白皮书,其中提供了更多详细信息:Multithreading in the Solaris™ Operating Environment .
关于linux - 为什么现代操作系统(Linux、Windows、Solaris)要实现一对一线程模型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29122619/