线程概念和多线程模型(操作系统11)

线程概念和多线程模型

视频链接地址:
https://www.bilibili.com/video/BV1YE411D7nH/?spm_id_from=333.788.videocard.2

操作系统 系列文章目录

  • 线程概念和多线程模型
  • 前言
  • 1 线程
    • 1.1 进程至线程
    • 1.2 引入线程
  • 2 线程的属性
  • 3 线程的实现方式
    • 3.1 用户级线程
    • 3.2 内核级线程
    • 3.3 用户级线程+内核级线程
  • 4 多线程模型
  • 5 小结

前言

在本篇中,你将掌握

  • 进程与线程
  • 引入线程后的变化
  • 线程的属性
  • 线程的三种实现方式
  • 三种多线程模型的定义与优缺点

线程概念和多线程模型(操作系统11)_第1张图片

1 线程

1.1 进程至线程

线程概念和多线程模型(操作系统11)_第2张图片
传统的进程是程序执行流的最小单位
在没有引入进程之前,系统中各个程序只能串行执行;但在引入进程后,就可以实现多个程序的并行执行(进程是程序的一次执行)

引入线程后,线程成为了程序执行流的最小单位
但是还存在这样的问题,比如对于几个程序,如QQ+QQ音乐,其中每一个程序还要做具体各式各样的事,如QQ聊天、QQ传送文件等,这样一个程序还是需要做多种“程序”的事。因此,在进程的基础上引入了线程,如上图每个进程内包含了多个线程,CPU便可以为同一进程内不同的线程并发处理。

1.2 引入线程

线程概念和多线程模型(操作系统11)_第3张图片
可以把线程理解为“轻量级进程”,线程是一个基本的CPU执行单元,也是程序执行流的最小单位
  引入线程后,不仅是进程之间可以并发,进程内的各线程之间也可以并发,从而进一步提升了系统的并发度,使得一个进程内也可以并发处理各种任务(如QQ视频、文字聊天、传文件等)
  引入线程后,进程不再是CPU调度的基本单位,进程只作为除CPU之外的系统资源的分配单元(如打印机、内存地址空间等都是分配给进程的)

引入线程后,具体变化总结如上图。

2 线程的属性

线程概念和多线程模型(操作系统11)_第4张图片

3 线程的实现方式

线程的实现方式有两种:

  1. 用户级线程
  2. 内核级线程

3.1 用户级线程

线程概念和多线程模型(操作系统11)_第5张图片
用户级线程由应用程序通过线程库实现。所有的线程管理工作都由应用程序负责(包括线程切换)。

用户级线程中,线程切换可以在用户态下完成,无需操作系统干预。且对用户来看,有多个线程(不透明);但对操作系统而言,意识不到线程的存在(透明

3.2 内核级线程

线程概念和多线程模型(操作系统11)_第6张图片
内核级线程,又称内核支持的线程。内核级线程的管理工作操作系统内核完成,因此内核级线程的切换需要在核心态下完成。对于用户、内核,内核级线程都是看得见的(不透明)

3.3 用户级线程+内核级线程

同时支持用户级线程和内核级线程的系统中,可采用两者组合的方式:将n个用户级线程映射到m个内核级线程上(n>=m)

重点重点重点!!!:操作系统只“看得见”内核级线程,因此只有内核级线程才是处理机分配的单位
  因此,对三个用户级线程+两个内核级线程的进程而言,即使该进程在4核处理机的计算机上运行,也最多只能分配到两个核,最多只有两个用户线程并行执行。

4 多线程模型

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

  1. 多对一模型个用户级线程映射到个内核级线程。每个用户进程只对应一个内核级线程
      优点:用户级线程的切换在用户空间即可完成,不需要切换到核心态,线程管理的系统开销小、效率高
      缺点:当一个用户级线程被阻塞后,整个进程都会被阻塞,并发度不高。多个线程不可在多核处理机上并发运行

  2. 一对一模型个用户级线程映射到个内核级线程。每个用户进程有与用户级线程同数量的内核级线程
      优点:当一个线程被阻塞后,别的线程还可以继续执行,并发能力强。多线程可以在多核处理机下并行执行
      缺点:一个用户进程会占用多个内核级线程,线程切换由操作系统内核完成,需要切换到核心态,因此线程管理的成本高,开销大

  3. 多对多模型n个用户级线程映射到m个内核级线程。每个用户进程对应m个内核级线程
      优点:克服了多对一模型并发度不高的缺点,又可服了一对一模型中一个用户进程占用太多内核级线程,开销太大的缺点

5 小结

线程概念和多线程模型(操作系统11)_第7张图片

本篇重点:
(1)有了进程后,为何还引入线程
(2)引入线程后,与传统进程机制有什么变化
(3)线程的属性,其中线程是处理机调度的单位,进程是资源分配的单位较重要
(4)线程的三种实现方式
(5)多线程模型的优缺点

你可能感兴趣的:(课程向,操作系统,内核,多线程,多进程)