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

标签 linux windows multithreading solaris

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

在介绍线程模型时,他们从:

多对一

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

enter image description here


接下来他们移动到:

一对一

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

enter image description here


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

多对多

这显然是两全其美。

enter image description here enter image description here


但是,如果您在一对一部分注意到,它声明 Linux 与 Windows 系列操作系统一起实现一对一模型。

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

enter image description here

如果多对多是最好的解决方案,为什么 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/

相关文章:

linux - 无法在另一台机器上使用 IP 打开 Web 应用程序?

c++ - 如何使用 Windows 程序在 C++ 中获取控制台输出?

java - 使用静默安装将 Java 安装到带空格的目录中

python - ArcGIS 中的多线程与 Python

c++ - 暂停 std::thread 直到函数完成

MySQL InnoDB Data_Length、Data_free 和 ibd 文件的物理大小

linux - 克隆 : operation not permitted

linux - CentOS 7 无法解析 Zabbix 触发器

windows - 安装后, `docker info`无法正常工作

java - 在 Java 的多线程应用程序中移动图像/形状