成都网站建设设计

将想法与焦点和您一起共享

2.5、线程概念和多线程模型-创新互联

整体框架

创新互联公司成立于2013年,先为普陀等服务建站,普陀等地企业,进行企业商务咨询服务。为普陀企业网站制作PC+手机+微官网三网同步一站式服务解决您的所有建站问题。

image-20230119002426983

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

还没有引入进程之前,各个程序只能串行执行

image-20230118222749992

进程是程序的一次执行过程,但这些功能显然不可能是由一个程序顺序处理就能实现的


有的进程可能需要 “同时” 做很多事,而传统的进程只能串行地执行一系列程序。

image-20230118223919994

为此,引入了 “线程”,来增加并发度。

image-20230118224436180

引入线程后,线程成为了程序执行流的最小单位


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

线程 \color{red}线程 线程是一个 基本的 CPU 执行单元 \color{red}基本的\texttt{CPU}执行单元 基本的CPU执行单元,

  • 也是 程序执行流的最小单位 \color{red}程序执行流的最小单位 程序执行流的最小单位。

引入线程之后,不仅是进程之间可以并发,

  • 进程内的 各线程之间 \color{red}各线程之间 各线程之间也可以 并发 \color{red}并发 并发,

    从而进一步 提升了系统的并发度 \color{red}提升了系统的并发度 提升了系统的并发度,

    使得一个进程内也可以并发处理各种任务(如QQ视频、文字聊天、传文件)


引入线程后, 进程 \color{red}进程 进程只作为 除 CPU 之外的系统资源的分配单元 \color{red}除\texttt{CPU}之外的系统资源的分配单元 除CPU之外的系统资源的分配单元

  • (如打印机、内存地址空间等都是分配给进程的)。

即:进程只作为分配资源的基本单位,而将线程作为调度的基本单位

image-20230118225004543


2、引入线程带来的变化

image-20230118231907308

3、线程的属性

image-20230118232159853

例如:从 QQ 聊天窗口跳到 b 站视频就是不同进程之间线程的切换

4、线程的实现方式 4.1、用户级线程(User-Level Thread,ULT)

用户级线程由应用程序通过线程库实现。

所有的 线程管理工作 \color{red}线程管理工作 线程管理工作都由 应用程序负责 \color{red}应用程序负责 应用程序负责(包括线程切换)

用户级线程中,

  • 线程切换 \color{red}线程切换 线程切换可以在 用户态下即可完成 \color{red}用户态下即可完成 用户态下即可完成,

    无需操作系统干预。

在用户看来,是有多个线程。但是在操作系统内核看来,并意识不到线程的存在。

  • (用户级线程对用户不透明,对操作系统透明)

image-20230118233615063

可以这样理解,“ 用户级线程 \color{red}用户级线程 用户级线程” 就是 “ 从用户视角看能看到的线程 \color{red}从用户视角看能看到的线程 从用户视角看能看到的线程”

4.2、内核级线程(Kernel-Level Thread, KLT)

又称 “内核支持的线程”

image-20230118233911343

内核级 线程的管理工作 \color{red}线程的管理工作 线程的管理工作由 操作系统内核 \color{red}操作系统内核 操作系统内核完成。

线程调度、切换等工作都由内核负责,

  • 因此 内核级线程的切换 \color{red}内核级线程的切换 内核级线程的切换必然需要在 核心态 \color{red}核心态 核心态下才能完成。

可以这样理解,“ 内核级线程 \color{red}内核级线程 内核级线程”就是 “ 从操作系统内核视角看能看到的线程 \color{red}从操作系统内核视角看能看到的线程 从操作系统内核视角看能看到的线程”

4.3、二者组合

在同时支持用户级线程和内核级线程的系统中,可采用二者组合的方式:

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

重点重点重点 \color{red}重点重点重点 重点重点重点:

操作系统只 “看得见” 内核级线程,

  • 因此只有 内核级线程才是处理机分配的单位 \color{red}内核级线程才是处理机分配的单位 内核级线程才是处理机分配的单位。

image-20230118234210320

例如:

上述这个模型中,该进程由两个内核级线程,三个用户级线程,在用户看来,这个进程中有三个线程。

  • 但即使该进程在一个 4 核处理机的计算机上运行,也最多只能被分配到两个核,最多只能有两个用户线程并行执行。
5、多线程模型

在同时支持用户级线程和内核级线程的系统中,由几个用户级线程映射到几个内核级线程的问题引出了 “多线程模型” 问题。

5.1、多对一模型

多对一 \color{red}多对一 多对一模型:

  • 多个用户及线程映射到一个内核级线程。每个用户进程只对应一个内核级线程。

优点:

  • 用户级线程的切换在用户空间即可完成,不需要切换到核心态,
  • 线程管理的系统开销小,效率高

缺点:

  • 当一个用户级线程被阻塞后,整个进程都会被阻塞,并发度不高。
  • 多个线程不可在多核处理机上并行运行

因为线程是处理机调度的基本单位,而不是资源分配的基本单位。多个用户级映射在一个内核级线程,内核认为仅有一个线程,当一个用户级线程被阻塞,内核认为所映射的内核级线程也被阻塞,故所有映射到该内核级的用户级线程都被阻塞

image-20230118235614879

5.2、一对一模型

image-20230119000642332

一对一 \color{red}一对一 一对一模型:

  • 一个用户及线程映射到一个内核级线程。
  • 每个用户进程有与用户级线程同数量的内核级线程。

优点:

  • 当一个线程被阻塞后,别的线程还可以继续执行,并发能力强
  • 多线程可在多核处理机上并行执行。

缺点:

  • 一个用户进程会占用多个内核级线程,线程切换由操作系统内核完成,需要切换到核心态,
  • 因此线程管理的成本高,开销大。
5.3、多对多模型

image-20230118234210320

多对多模型:n用户及线程映射到m个内核级线程(n >= m)。

  • 每个用户进程对应m个内核级线程。

克服了多对一模型并发度不高的缺点,

  • 又克服了一对一模型中一个用户进程占用太多内核级线程,开销太大的缺点。
6、整体框架

image-20230119002416974

你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧


分享标题:2.5、线程概念和多线程模型-创新互联
文章转载:http://chengdu.cdxwcx.cn/article/hjpdp.html