1.用户级线程在用户层通过线程库来实现。对它的创建,撤销和切换都不利用系统的调用。
2.核心级线程由操作系统直接支持,即无论是在用户进程中的线程,还是系统进程中的线程,它们的创建,撤销和切换都由核心实现。
3.硬件线程就是线程在硬件执行资源上的表现形式。单个线程一般都包括上述三个层次的表现:用户级线程通过操作系统被作为核心级线程实现,再通过硬件相应的接口作为硬件线程来执行。
对用户级线程来讲,内核也并不知道它的存在,所以所有对用户级线程的管理和调度都是在用户空间来进行的。用户级线程的切换通常是发生在一个应用进程的诸线程之间,这是,不仅无需通过中断进入操作系统的内核,而且切换的规程也远比进程调度和切换的规则来得简单。例如,当一个线程封锁后会自动切换到下一个具有相同功能的线程。因此,用户级线程的切换速度特别快。但是用户线程也有它自身的缺点,例如,如果内核是单线程的,那么任何一个用户级线程若执行了阻塞系统调用就会导致该线程所属的进程阻塞。此时如果采用的是内核级线程,则调度室以线程为单位。当一个线程调用一个系统调用时,内核把系统调用只看做是该线程的行为,因而封锁该线程,于是可以再调度该进程中的其他线程执行。