操作系统之线程 (九) 您所在的位置:网站首页 多线程有哪些语言 操作系统之线程 (九)

操作系统之线程 (九)

2024-07-04 08:00| 来源: 网络整理| 查看: 265

文章目录 线程进程与线程的联系进程与线程的并发对比线程的出现意义线程的属性线程的实现方式多线程模型总结感谢

线程 进程与线程的联系

在说线程之前,我们先说说进程,顺便引出线程。下面开始说了!

在还没引入进程之前,计算机只能串行执行程序,即 你不能同时用QQ聊天和用网易云听音乐,你只能选择一个执行顺序,先听音乐还是先聊QQ,或者先聊QQ再听音乐呢?显然,我们不能接受这种情况。 在这里插入图片描述

随着计算机的发展,进程被引入了,那此时我们就能边聊QQ聊听音乐了。 在这里插入图片描述 但是,新的问题出现了。你想一边用QQ视频聊天,一边用QQ传输一些文件。在之前提过,进程是程序的执行过程,但是显然两个功能不可能由一个程序顺序处理就能实现。 所以,由于有的进程内部需要"同时"做很多事情,我们就引入了线程。线程可以在进程中并发运行,每个线程可以对应相应的功能。 可以这样理解,线程是轻量级的进程。

进程与线程的并发对比

在这里插入图片描述

线程的出现意义

从上图中可见,由于线程的引入,现在不仅进程之间可以并发,进程的各个线程之间也可以并发执行。而线程的出现也使得一个进程内可以并发的处理各种任务(如 QQ视频、传文件…)。 当然,由于线程的出现,进程也减轻了工作,传统的进程是系统调度的基本单位,而引入线程后,线程成为了系统调度的基本单位。所以现在进程只作为除CPU之外的系统资源的分配单元 (如打印机、内存地址空间等都是分配给进程的)。

这里举个例子类比一下进程和线程: 假如你是一个杀手,别人给你钱,再给你任务,你就去取受害者的狗命。此时,收钱的是你,做事的也是你。在这里,你就是传统的进程,既要收钱(系统资源),又要办事(执行指令)。 由于你的勤奋,你成立了一个杀手集团,成为了集团的BOSS。所以现在别人只需要给你钱和任务,然后你再分配任务给集团中的成员,让他们去做。在这里,你就是进程,集团中的成员就是线程,别人给你钱(系统资源)后,你再让集团成员(线程)去做。

下面用思维导图的形式看看线程出现带来的变化。 在这里插入图片描述 这里再举个例子类比一下进程切换和线程切换: 故事背景: 你去图书馆看书。你吹着38.2度的空调,在桌子前安静的看书。这时,有人过来了。 进程切换:乔碧罗奶奶过来了!她叫你马上起来,把桌子让给他,不然就让你感受一下坦克的威力。由于乔碧罗奶奶要用桌子,你需要把你在桌子上的书全部收走,她再把自己的书放到桌子上,显然这种方式对你来说费时费力。 同一进程内的线程切换:你可爱的舍友过来了,由于你们是熟人,所以你们共用一张桌子,一起看书,你不必把桌子上的书收走。

线程的属性

在这里插入图片描述

线程的实现方式

线程的实现方式有两种,分别是用户级线程和内核级线程。

用户级线程 用户级线程由应用程序通过线程库实现,所有的线程管理工作都由应用程序负责 (包括进程切换)。在用户级线程中,线程的切换可以再用户态下完成,无需操作系统的干预。用户感受得到用户级线程,但是操作系统却意识不到他们的存在。(专业术语:用户级线程对用户不透明,对操作系统透明)

内核级线程 内核级线程的管理工作由操作系统的内核程序完成,线程调度、切换等工作都由内核负责。因此,内核级线程的切换必然需要在核心态下才能完成。用户感受不到内核级线程,但是操作系统意识得到他们的存在。(专业术语:用户级线程对用户透明,对操作系统不透明) 注意:操作系统只“看得见”内核级线程,因此只有内核级线程才是处理机分配的单位。

二者结合 在同时指出用户级线程和内核级线程的操作系统中,我们可以采用二者结合的方式:将n个用户级线程映射到m个内核级线程上。( n>=m ) 在这里插入图片描述 如图,该进程由三个用户级线程映射到两个内核级线程组成。在用户看来,这个进程中有三个线程,但是即使该进程在一个四核的计算机中运行,最多只能有两个线程并行执行,因为只有内核级线程才是处理机分配的单位。

多线程模型

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

多对一模型 多个用户级线程映射到一个内核级线程。每个用户进程只对应一个内核级线程。 在这里插入图片描述 优点:用户级线程的切换在用户空间即可完成,不需要切换到核心态,线程管理的系统开销小,效率高。 缺点:当一个用户级线程被阻塞后,整个进程都会被阻塞,并发度不高。多个线程不可在多核处理机上并行运行(因为此时只有一个内核级线程)。

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

多对多模型 n个用户级线程映射到m个内核级线程 ( n >= m )。每个用户进程对应m个内核级线程。 在这里插入图片描述 这种模型克服了多对一模型并发度不高的缺点,又克服了一对一模型中一个用户进程占用太多内核级线程,开销太大的缺点,是上述两种模型的折中方案。

总结

在这里插入图片描述

感谢

以上内容大部分来自王道操作系统系列视频教学。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有