【操作系统】——线程(5)


Tips

【操作系统】——进程的控制及通信(4)
【操作系统】——处理机的调度(6)

一、线程的引入

在这里插入图片描述

在没引进进程概念的时候,程序只能顺序执行,我们不能一边登qq,一边听音乐,而进程引入之后使得每个应用程序(系列程序)间可以并发执行,所以进程是使得多个程序可并发执行的,也就实现了多应用同时运行。

现在单纯地在qq当中,我们可以做的事情也很多,而如果只有进程的话,还不足以实现,因为进程只实现了应用程序间的并发,而应用程序内部程序模块的并发没有实现,而本小节要介绍的线程就是为了解决这个问题的。

线程实现了应用程序内部模块的并发执行!

在这里插入图片描述

1、引入线程后带来的变化

在这里插入图片描述

2、线程的相关属性

在这里插入图片描述

二、线程的实现方式

Q: 在早期只支持进程的系统中,如何实现线程呢?
A: 因为早期的系统只支持进程,而我们又要实现线程,所以自然而然的,我们就会想到既然系统只支持进程,那我们是否可以做出一种“线程形式”的进程呢??
其实是可以的。

1、用户级线程

其实这是一种在操作系统不支持的情况下,用户自己通过灵活变通实现的线程。
在这里插入图片描述

在这里插入图片描述
while循环是最弱智的线程库,线程库完成对线程的管理工作(如调度)

在这里插入图片描述
用户级线程,顾名思义是早期人们为实现线程而用代码实现的线程,即“线程形式”的进程,上述while循环就表示一个线程库,线程库完成了对线程的管理,包括线程切换等,也正因为线程库已经完成了对线程的管理,不需要请求操作系统,所以用户级线程是对操作系统不可见的,但是对用户可见,毕竟是用户自己代码实现的。

2、内核级线程

此时的操作系统已经可以支持线程了,即线程对操作系统可见
在这里插入图片描述

3、多线程模型

(1)一对一模型

在这里插入图片描述

(2)多对一模型

在这里插入图片描述

(3)多对多模型

在这里插入图片描述
在用户态下由线程库统一对用户级线程的请求向内核反映,减少状态转换的开销,内核级线程具有多个,防止单一内核级线程阻塞,在多对多模型中,只有所有内核级线程阻塞才会阻塞。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱上bug的小姐姐

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值