多对一
LWP 全称 Light Weight Process(轻量级进程)
在多线程模型里,LWP 是内核中可调度的实体,它是用户线程和内核线程之间的桥梁:
用户线程(User Thread):运行在用户空间,由线程库管理。切换和调度速度快,但如果不借助内核,无法利用多核 CPU 的优势。
内核线程(Kernel Thread):运行在内核空间,由操作系统内核直接管理,能被 CPU 调度,但创建和切换的开销大。
LWP(轻量级进程):是一种映射机制。它像是“用户线程的代理”,把用户线程映射到内核线程上,让用户线程能被内核调度执行
1. 阻塞问题导致整个进程停摆
在 Many-to-One 模型中,多个用户级线程(user-level threads)映射到同一个内核线程(kernel thread)上。
当某一个用户线程进行阻塞操作(例如执行阻塞型 I/O 系统调用)时,唯一的那个内核线程也会被阻塞,于是所有用户线程都无法继续执行。
你所说的“内核线程无法感知多个用户线程,一旦一个阻塞,整个进程挂起”正是这种情况。