Solaris 中的 lwp 和线程到底是什么?

Solaris 中的 lwp 和线程到底是什么?

《Solaris Internals》一书说

Solaris 执行内核线程来执行与内核相关的任务,例如中断处理、内存页管理、设备驱动程序等。对于用户进程执行,内核线程有相应的 LWP;这些内核线程被调度为由内核代表用户进程执行

我对这些词有点困惑,以下是我的理解

在Solaris 中,“真实线程“ 是个 ”内核线程”。内核线程可以执行内核相关的任务和用户相关的任务。在执行用户相关的任务时,内核线程需要一个称为LWP的数据结构来提供环境。所以,用户线程轻量级工作计划根本不是执行单元或线程。它们只是系统中的数据结构。这用户线程只是需要执行的用户任务,其中包括用户数据和代码。 LWP 是提供内核信息的内核数据结构。真正的执行单元或流程是内核线程

如果我的理解是正确的,在早期存在两级线程模型的solaris中,许多用户线程可以绑定到一个lwp,这意味着在solaris的底层实现中“许多用户线程对于内核或CPU而言,实际上是一个线程(内核线程),唯一的内核线程轮流执行每个用户线程中的任务。如果用户线程未绑定,则无法执行。

我对吗?

答案1

内核线程是系统CPU上调度的基本实体,非常轻量。

内核线程与 LWP 具有一对一的映射。线程库将用户线程调度到 LWP 上。来源:

相关内容