轻量级进程 (LWP)
许多系统实现多对多或两级模型,在用户和内核线程之间放置一个中间数据结构。此数据结构通常称为**轻量级进程**或 LWP,如下面的图所示。对于用户线程库,LWP 似乎是一个虚拟处理器,应用程序可以在其上调度用户线程运行。每个轻量级进程都附加到一个内核线程,并且操作系统将内核线程调度到物理处理器上运行。如果内核线程阻塞(例如,在等待 I/O 操作完成时),则 LWP 也会阻塞。附加到 LWP 的用户级线程也会向上阻塞。
要有效地运行任意数量的 LWP,可能需要一个应用程序。让我们考虑一个在单个处理器上运行的 CPU 密集型应用程序。在这种情况下,一次只能运行一个线程,因此一个 LWP 就足够了。但是,I/O 密集型应用程序可能需要多个 LWP 来执行。通常,每个并发阻塞系统调用都需要一个 LWP。例如,同时发生四个不同的文件读取请求。需要四个 LWP,因为所有这些都可能在内核中等待 I/O 完成。如果一个进程只有三个 LWP,则第四个请求必须等待其中一个 LWP 从内核返回。
广告