线程概念和多线程模型

1. 知识总览

在这里插入图片描述

2. 什么是线程 为什么要引入线程

进程是伴随着多道程序技术而引入的

考虑QQ,可以同时聊天和视频和传送文件,这些功能显然不可能是程序按顺序执行能实现的
在这里插入图片描述
进程可能要同时做很多事,因此将进程分解为多个线程。现在,线程成为了程序执行流的最小单位,可进行线程调度。
在这里插入图片描述
在这里插入图片描述
通过引入线程,可以进一步提高并发度。进程只作为资源分配的最小单元,调度的最小单位是线程。
同一进程的线程,由于不需要切换进程环境,切换起来开销比进程间开销小的多。即并发带来的系统开销小
在这里插入图片描述
同一个进程的各线程可能在多个cpu核中运行

和进程一样,线程有它的TCB和ID,也有就绪,阻塞,运行三种状态

线程几乎不拥有系统资源,系统资源是分配给进程的,同一进程内的线程共享进程的资源

同一进程内的线程间切换,不用切换进程环境。

3. 线程的属性

在这里插入图片描述

4. 线程的实现方式

线程分为 用户级线程 和 内核级线程(即守护线程)

用户级线程 由 应用程序 通过 线程库 创建和管理

用户级线程间的切换 也由 应用程序 负责管理(在用户态下就可以完成)

事实上,对用户来说,是有多个线程,但是对操作系统内核来说,并看不见线程的存在。

用户级线程只有用户能看到,操作系统根本看不到!!!
在这里插入图片描述
内核级线程 由操作系统负责管理

内核级线程的切换 需要在核心态下完成

内核级线程 就是 操作系统能看到的
在这里插入图片描述
注意: 内核级线程 才是 处理机分配的 单位

下图中的这个进程有三个用户级进程,两个内核级线程。但即使在一个四核CPU上,最多只能占用两个核,只能有两个用户线程并行执行。

在这里插入图片描述

5. 多线程模型

多线程模型问题:

所谓多线程模型就是指 几个用户级线程映射到几个内核级线程的问题

多对一模式:多个用户线程映射到一个内核线程

优点:用户级线程 在 用户态 即可完成切换,开销小

缺点:并发度低,一个用户线程阻塞将导致整个进程阻塞。多个线程也不能在多处理机上运行
在这里插入图片描述
一对一模式:一个用户线程对应一个内核级线程

优点:并发度高,一个线程阻塞后其它线程可以继续执行

缺点:线程切换要在核心态下完成,开销大
在这里插入图片描述
多对多模式:

n个用户线程映射到m个内核线程(n>=m)

既克服了 多对一模型中并发度低的缺点,又克服了一对一模型中占用太多内核级线程的缺点
在这里插入图片描述

6. 总结

在这里插入图片描述
回顾:

线程是处理机调度的单位

内核级线程才是操作系统进行处理机分配的单位

多对一模型中,一个用户级线程阻塞将导致整个进程的阻塞

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值