1 为什么使用线程
早期的操作系统中都是以进程作为独⽴运⾏的基本单位,直到后⾯,计算机科学家们⼜提出了更⼩的能独⽴运⾏的基本单位,也就是线程。
线程(Thread)之间可以并发运⾏且共享相同的地址空间。
2 什么是线程
线程是进程当中的⼀条执⾏流程。
同⼀个进程内多个线程之间可以共享代码段、数据段、打开的⽂件等资源,但每个线程各⾃都有⼀套独⽴的寄存器和栈,这样可以确保线程的控制流是相对独⽴的。
register:n. 寄存器 v. 注册
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/62f2076ace1b24f918e26d6729263ddb.png)
3 线程的优缺点
4 进程和线程的比较
线程是调度的基本单位,而进程则是资源拥有的基本单位。
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/7cdea0c352cfb5e8ebd2200b9d9e0555.png)
5 线程的上下文切换
所谓操作系统的任务调度,实际上的调度对象是线程,⽽进程只是给线程提供了虚拟内存、全局变量等资源。
当进程只有⼀个线程时,可以认为进程就等于线程。
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/a23f321250e66e900216a329d169f831.png)
6 线程的实现
用户线程和内核线程的对应关系
TCB(线程控制块,Thread Control Block)
操作系统看不到TCB,只能看到PCB(Process Control Block,进程控制块)。
⽤户线程的整个线程管理和调度,操作系统是不直接参与的,⽽是由⽤户级线程库函数来完成线程的管理,包括线程的创建、终⽌、同步和调度等。
用户线程的优缺点
内核线程
内核线程是由操作系统管理的,线程对应的 TCB ⾃然是放在操作系统⾥的,这样线程的创建、终⽌和管理都是由操作系统负责。
⼀个⽤户线程对应⼀个内核线程。
内核线程的优缺点
轻量级线程
轻量级进程(Light-weight process, LWP)是内核⽀持的⽤户线程,⼀个进程可有⼀个或多个 LWP,每个 LWP 是跟内核线程⼀对⼀映射的,也就是 LWP 都是由⼀个内核线程⽀持。