书中的操作系统概念谈到了各种多线程模块(4.3节),它提到了一对一的模式是使用在大多数操作系统;然而,Linux、Windows等等,它随后谈到了多对多模型,它修复了一对一模型所看到的一些问题,但后来提到,它的唯一主要使用的实现是使用两级模型,这只是许多到多个模型的扩展,该模型在较旧的Solaris (9)版本中使用,但现在已不再使用,而是被一到一种模型所取代。我的问题是,如果多到多的模式更好,那么为什么不更普遍地使用呢?是因为复杂吗?我可以想象,如果用户和内核级线程之间没有某种“粘性”映射,那么上下文切换就会出现问题吗?
谢谢你在这方面的帮助。
发布于 2020-04-21 03:12:48
它被使用;go中的Go例程正是这样,由Go运行时管理。随着内核内存变得更便宜(因为内存变得更便宜)和线程使用变得无处不在,管理两级模型的运行时成本以及支持它的人工时间成本就说明了它的消亡。
Go例程是一种编程模式,而且非常便宜,以至于Go程序不应该因为有成千上万的程序而感到羞愧。Go运行时非常小心地保留一个虚拟cpu池(由真正的线程构建),该池可以非常快地采用go例程。
https://stackoverflow.com/questions/61322174
复制相似问题