1、内核支持性线程
对于通常的进程,无论是系统进程还是用户进程,进程的创建、撤销,以及要求由系统设备完成的i/o操作,都是利用系统调用而进入内核,再由内核中的相应处理程予以完成的。进程的切换同样是在内核的支持下实现的。因此我们说,不论什么进程,它们都是在操作系统内核的支持下运次的,是与内核紧密相关的。
这种线程实现方式主要有四个优点:
1)、在多处理器系统中,内核能够同时调度同一进程中多个线程并行执行;
2)、如果进程中的一个线程被阻塞了,内核可以调度该进程中的其他线程占用处理器运行,也可以运行其他进程中的线程;
3)、内核支持线程具有很小的数据结构和堆栈,线程的切换比较快,切换开销小;
4)、内核本身也可以采用多线程技术,可以提高系统的执行速度和效率。
缺点:
内核支持线程的主要缺点是:对于用户的线程切换而言,其模式切换开销大,在同一个进程中,从一个线程切换到另一个线程时,需要从用户态转到内核态进行,这是因为用户进程在用户态运行,而线程调度和管理是在内核实现的,系统开销大。
2、用户级线程
用户级线程仅存于用户空间中。对于这种线程的创建、撤销、线程之间的同步与通信等功能,都无须利用系统调用来实现。对于用户级线程的切换,通常发生在一个应用程序的诸多线程之间。由于切换的规则远比进程的调度和切换的规则简单,因此使线程线程的切换速度特备快。可见,这种线程是与内核无关的。
使用用户级线程方式的优点:
1)、线程的切换不需要装换到内