为什么多对多线程模型中的每个并发系统调用都需要一个LWP(轻量级进程)?

为什么多对多线程模型中的每个并发系统调用都需要一个LWP(轻量级进程)?

A轻量级水压是放置在用户线程和内核线程之间的数据结构,对于用户线程库来说表现为虚拟处理器。因此,多对多线程模型中所需的最小 LWP 数量就是并发阻塞系统调用的数量。

请解释一下为什么会这样?

答案1

轻量级进程(在 Unix 和类 Unix 中)是在用户空间中通过单个内核线程运行的进程,并与同一用户进程的其他 LWP 共享其地址空间和资源。

系统调用是从用户空间调用内核功能。当用户进程执行系统调用时,该调用由与用户进程/线程关联的 LWP 处理并获取处理呼叫时被阻止在内核中(通过与 LWP 关联的内核线程),当调用解决时,内核线程和 LWP 再次空闲。

这就是为什么最低限度多对多线程模型中所需的 LWP 数量是并发量阻塞系统调用,因为阻塞系统调用和 LWP 是 1:1 相关的(当来自用户线程的阻塞系统调用参与时,LWP 无法执行任何其他任务)

相关内容