线程概念和多线程模型

前言

此篇文章是我在B站学习时所做的笔记,大部分图片都是课件老师的PPT,方便复习用。此篇文章仅供学习参考。


提示:以下是本篇文章正文内容

知识总览

在这里插入图片描述

一、什么是线程,为什么要引入线程?

在这里插入图片描述

一个进程可以有多个线程

在这里插入图片描述
在传统的进程机制当中,CPU会轮流地为个个进程进行服务,那么这些进程就可以并发的执行,并且每个进程会有他自己相应的一系列程序代码,然后被CPU服务时,这些代码就可以一句一句往下执行,所以在传统的进程机制当中,进程是程序执行流的最小单位。为了满足像咱刚才咱们说的一个进程当中,宏观上同时做很多事情,人们引入了线程机制,用来增加系统的并发度。引入了线程之后,系统的CPU的这个调度服务对象就不再是进程,而是进程当中的线程,每一个进程当中可能会包含多个线程,然后CPU会轮流备用一定的算法,轮流地为这些线程进行服务。同一个进程当中被分为了多个线程,刚才说的qq视频聊天和传送文件这些这两件事情,如果想要并发的执行的话,那我们就可以把这两件事情对你的处理程序放到两个不同的线程下,那么这两个线程可以并发的执行,自然这两件事就可以并发的完成,所以在引入了线程机制之后,线程就成了程序执行流的最小单位。在没有引入线程之前,一个进程其实就对应一份代码,这些代码只能顺序的依次往下执行,但是在引入了线程之后,每个进程可以有多个线程,并且这些线程它可以有各自不同的代码,也可以是不同的线程运行同一份代码,但是这些代码都会并发地被CPU处理,然后并发地依次执行下去,所以这就是所谓程序执行流的最小单位的意思。


在这里插入图片描述

可以把线程理解为“轻量级进程”。

线程是一个基本的CPU执行单元,也是程序执行流的最小单位

  • 引入线程之后,不仅是进程之间可以并发,进程内的各线程之间也可以并发,从而进一步提升了系统的并发度,使得一个进程内也可以并发处理各种任务(如QQ视频、文字聊天、传文件)
  • 引入线程后,进程只作为除CPU之外的系统资源的分配单元(如打印机、内存地址空间等都是分配给进程的)。

二、引入线程机制后,有什么变化?

在这里插入图片描述

三、线程的属性

  • 线程控制块也是用于管理线程所创建的数据结构
  • 线程只是处理机调度的单位,所以系统的资源分配是分配给进程的,线程几乎不拥有系统资源
  • 共享系统资源像I/O设备、内存地址空间等等
    在这里插入图片描述

四、线程的实现方式

1、用户级线程

  • 用户级线程由应用程序通过线程库实现。所有的线程管理工作都由应用程序负责(包括线程切换)
  • 用户级线程中,线程切换可以在用户态下即可完成,无需操作系统干预。
  • 在用户看来,是有多个线程。但是在操作系统内核看来,并意识不到线程的存在。(用户级线程对用户不透明,对操作系统透明)
  • 可以这样理解,“用户级线程”就是“从用户视角看能看到的线程”
    在这里插入图片描述

2、内核级线程( Kernel-Level Thread, KLT,又称“内核支持的线程”)

  • 内核级线程的管理工作操作系统内核完成。线程调度、切换等工作都由内核负责,因此内核级线程的切换必然需要在核心态下才能完成。
  • 可以这样理解,“内核级线程”就是“从操作系统内核视角看能看到的线程”

对于用户来说,这个进程有三个线程,对于操作系统来说,这个进程同样拥有三个线程
在这里插入图片描述
在这里插入图片描述

五、多线程模型

1、多对一模型

在这里插入图片描述

2、一对一模型

在这里插入图片描述

3、多对多模型

在这里插入图片描述

知识回顾与重要考点

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

蜗牛_Chenpangzi

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

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

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

打赏作者

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

抵扣说明:

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

余额充值