操作系统中线程的三种实现方式
操作系统中线程的三种实现方式
内核线程实现
用户线程实现
用户线程+轻量级线程混合实现
内核线程实现(Kernel-Level Thread,KLT):
内核线程由操作系统内核直接负责,负责线程切换和调度。
应用程序通常使用轻量级进程(LWP),即通常所说的线程,它们由内核线程支持。
轻量级进程成为独立的调度单元,即是一个阻塞也不会影响整个进程。
缺点包括线程操作需要系统调用,导致高成本的用户态和内核态切换,以及消耗内核资源,限制了系统支持的轻量级进程数量。
用户线程实现:
在用户空间通过运行时系统建立线程库来管理线程。
操作系统内核不感知线程存在,管理的是进程。
优点是线程切换快速,可在任何操作系统上运行,只需实现线程库。
缺点是所有线程操作需要用户程序处理,系统调用阻塞会导致所有线程阻塞。
用户线程+轻量级线程混合实现:
线程创建在用户空间完成,通过线程库。
线程调度由内核完成,多个用户线程复用多个内核线程。
