线程
一、产生原因
最开始的并发,只能更具切换进程的方式去交替执行进程来宏观上并发,但是切换进程需要切换执行进程的环境,有很大的系统开销,所以产生了线程,让其可以不用频繁的切换进程,使得线程成为CPU执行的基本的单位
二、线程的属性
线程是处理机调度的基本单位
多CPU计算机中,各个线程可占用不同的CPU
每个线程都有一个线程ID、线程控制块(TCB)
线程也有就绪、阻塞、运行三种基本状态
线程几乎不拥有系统资源
同一进程的不同线程间共享进程的资源
由于共享内存地址空间,统一进程中的线程间通信甚至无需系统干预
同一进程中的线程切换,不会引起进程切换
不同进程中的线程切换,会引起进程切换
切换同进程内的线程,系统开销很小
切换进程,系统开销较大
三、实现方式
1、线程的分类
线程分为用户级线程(UTL)和内核级线程(KTL),用户级线程就是用户视角能看到的线程,内核级线程就是操作系统视角能看到的线程;内核级线程是处理机分配的单位;
四、多线程模型
多对一模型
n个ULT映射到1个KLT
优点:开销小,效率高
缺点:容易阻塞,并发度不高
一对一模型
n个ULT映射到n个KLT
优点:并发能力很强
缺点:占用成本高,开销大
多对多模型
n个ULT映射到m个KLT上(n>=m)
中和以上两种优缺点
五、线程的状态与转换
类似于进程的状态与转换间,这里就不描述了