内核线程
内核线程需要系统内核支持,只有系统内核支持这种线程才能谈内核线程,内核线程只运行在内核态,不受用户态上下文的拖累,内核线程只能由系统内核管理,像普通进程一样被调度。支持多线程的内核称为多线程内核。
内核线程可以在系统范围内竞争处理器资源,唯一使用的资源是内核栈和上下文切换时保持寄存器的空间。
轻量级进程
轻量级进程(LWP, Light-Weight Process)也是一种用户线程,运行在用户态,是建立在系统内核上的,由系统内核支持的用户线程。它是内核线程的高度抽象,所以轻量级进程需要系统内核支持,同时系统内核支持内核线程。每个轻量级进程都与一个内核线程关联,轻量级进程与内核线程一对一关联。
用户线程
用户线程是完全建立在用户态空间的线程,用户线程的创建、调度、同步和销毁全部在用户态空间中完成,不需要系统内核支持,也不需要系统内核支持内核线程。
基于轻量级进程的用户线程
这种线程也运行在用户态空间,轻量级进程作为用户线程与内核线程之间的桥梁,既然这种用户线程是基于轻量级进程的,所以也需要系统内核支持,同时需要系统内核支持内核线程。用户线程跟轻量级进程建立关联,是一种多对多的关联,这种关联是动态的,从用户线程角度看,多个用户线程对应关联一个轻量级进程。
Linux的线程支持采用的就是这种线程。采用的是一对一关联,一个用户线程对应一个轻量级进程,一个轻量级进程对应一个内核线程。