线程模型的介绍
线程有三种模型:N:1用户线程模型,1:1核心线程模式,N:M混合线程模型
POSIX: Portable Operating System Interface(可移值操作系统接口)
N:1用户线程模型
线程的实现建立在进程控制的机制之上,有用户空间的程序库来管理。Os是完全不知道线程信息的。这些线程称之为用户空间线程。这些线程都工作在“进程竞争范围“”各个线程在同一个进程中竞争“CPU的调度时间”,不和其他进程中的线程竞争,
在N:1线程模型中,内核不干涉线程的任何生命活动。也不干涩同一个进程中线程环境切换。
在N:1线程模型中一个进程多个线程只能调度一个cpu,那么如果进程中的某一个线程执行了阻塞式的操作,这个进程中的其他线程也会被阻塞。
1:1核心线程模型pthread库(NPTL:Native POSIX Threads Library)
在1:1核心线程模型中,进程创建的每一个线程都有一个核心线程直接管理,os内核将每一个核心线程都调度到系统的CPU上。
因此,所有线程都工作在“系统竞争范围”:线程直接和“系统范围”内的其他线程竞争。
这中线程的创建与调度都由内核完成,所以这种线程的系统开销比较大。
N:M混合线程模型 NGPT(Next Generation POSIX Threads)
N:M混合线程模型提过了两级控制,将用户线程映射为可调度的尸体以实现并行,这个可调度的实体称为轻量级进程,LWP,再一一映射到核心线程,如下图所示。OS内核将每一个核心线程都调到系统CPU上,因此,所有线程都工作在“系统竞争范围”