据操作系统内核是否对线程可感知,可以把线程分为内核线程和用户线程。用户级线程由应用程序所支持的线程实现, 内核意识不到用户级线程的实现。内核级线程又称为内核支持的线程。
用户级线程仅存在于用户空间中,对于操作系统是不可见的。此类线程的创建、撤销、线程之间的同步与通信功能,都无须利用系统调用来实现。每个线程并不具有自身的线程上下文(线程上下文保存的是线程用到的寄存器、内存中的数据等)。
内核级线程的管理(建立和销毁等)是由操作系统通过系统调用完成的。内核为进程及其内部的每个线程维护上下文信息,调度也是在内核基于线程架构的基础上完成。
内核线程驻留在内核空间,它们是内核对象。有了内核线程,每个用户线程被映射或绑定到一个内核线程。用户线程在其生命期内都会绑定到该内核线程。一旦用户线程终止,两个线程都将离开系统。这被称作”一对一”线程映射,除此之外,还有多对一,多对多的线程映射。