根据我从理解Linux内核中得到的理解,是否正确:
task_struct结构来表示。那么,为什么下面引用的操作系统概念意味着,轻量级进程被附加到内核线程?(请注意,这本书是为一般OS概念编写的,引文中并没有说它适用于Linux,但本书的大部分内容都适用于Linux)
多线程程序要考虑的一个final问题涉及内核和线程库之间的通信,这可能是4.3.3节中讨论的多到多和两级模型所需要的。这种协调允许动态地调整内核线程的数量,以帮助确保最佳性能。许多实现多到多或两级模型的系统在用户线程和内核线程之间放置了中间数据结构。图4.13显示了这种数据结构--通常称为轻量级流程(LWP)。对于用户线程库,LWP似乎是一个虚拟处理器,应用程序可以在其上调度用户线程来运行。每个LWP都附加到一个内核线程上,操作系统计划在物理处理器上运行的是内核线程。如果内核线程阻塞(例如在等待I/O操作完成时),LWP也会阻塞。在链上,连接到LWP的用户级线程也会阻塞。

在本书中定义了以下几个概念的地方,尤其是内核线程和用户线程的定义可能与我在本文开头提到的问题中提到的定义不同:
可以在用户级别、用户线程或内核为内核线程提供对线程的支持。在内核之上支持用户线程,并且在没有内核支持的情况下管理用户线程,而操作系统直接支持和管理内核线程。多对一模型(图4.5)将多个用户级线程映射到一个内核线程。线程管理是由用户空间中的线程库来完成的,因此它是一种实用的fi。

多对多模型(图4.7)将许多用户级线程复用到较小或相同数量的内核线程。内核线程的数量可以是特定应用程序或特定机器的fic++(一个应用程序在多处理器上分配的内核线程可能比在单个处理器上分配的内核线程多)。

谢谢。
发布于 2018-09-29 17:16:12
内核线程总是在内核空间中运行。用户线程在用户空间中运行,即它们有一个用户模式地址空间。用户线程可以在内核的支持下调度,也可以不受内核的支持。这就是你问题的后半部分“内核线程”的意思。简而言之,相同的名称用于两件事。
https://unix.stackexchange.com/questions/472300
复制相似问题