多进程时,CPU时要进程频繁切换,当cpu切换进程时,要将运算器,程序计数器等都要被写上新进程的数据,且原进程的数据要提前保存到高速缓存区。这样cpu就会在各个进程之间进行频繁的切换,包括对高速缓存区的读取与写入,浪费了cpu相当多的资源,降低了cpu的效率。
所以我们想用一种机制能进程切换能不替换部分资源或减少替换-->线程
线程:
轻量级的进程,多个线程共享进程的空间,线程之间的切换,不用进行上下文之间的切换,降低系统开销。
线程同样在task_struct 结构体中,也会当做一个进程来调度,调度方式一样(内部调度算法相同)
线程共享创建进程的地址空间。
NPTL线程库是linux内核中的一个线程库的升级
1:1的线程模型:对于用户来说,创建一个线程,那么在内核中也唯一对应一个线程。在 早期的linux中线程是一对多的,用户创建一个线程,内核中可能创建了多个线程。
线程共享了哪些资源??