操作系统原理 —— 线程的概念、实现方式、多线程模型(十)

这篇具有很好参考价值的文章主要介绍了操作系统原理 —— 线程的概念、实现方式、多线程模型(十)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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

有的进程可能需要 “同时” 做很多事情,而传统的进程只能串行的执行一系列的程序,为此,引入了 “线程” ,来增加并发度。

可以把线程理解为 轻量级进程,线程是可以基本的 CPU 执行单位,也是程序执行流的最小单位,引入线程之后,不仅是进程之间可以并发,进程内的各个线程之间也可以并发,从而进一步提升了系统的并发度,使得一个进程内也可以并发处理各种任务。

引入线程后,进程只作为除 CPU 之外的系统资源的分配单元。

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

资源分配、调度

传统进程机制中,进程是资源分配、调度的基本单位,而引入线程后,进程是资源分配的基本单位,线程是调用的基本单位。

并发性

传统进程机制中,只能进程间并发,引入线程之后,各个线程之间,也能并发,提升并发度。

系统开销

传统的进程间并发,需要切换进程的运行环境,系统开销很大,线程间的并发,如果是同一进程内的线程切换,则不需要切换进程环境,系统开销小,引入线程之后,并发所带来的系统开销减小。

线程的实现方式

用户级线程

在早期,操作系统还不支持线程的时候,当时的 “线程” 是由线程库实现的。

用户线程指不需要内核支持而在用户程序中实现的线程,不依赖操作系统核心,程序利用线程库提供创建、同步、调用和管理线程的函数来控制用户线程。

用户级线程有以下特点:

1、用户级线程由应用程序通过线程库实现,所有的线程管理工作都由应用程序负责(包括线程切换)。

2、用户级线程中,线程切换可以在用户态下即可完成,无需操作系统干预。

3、在用户看来,是有多个线程,但是在操作系统内核来看,是意识不到线程的存在。用户级线程就是从用户视角能看到的线程

4、优缺点:

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

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

内核级线程

内核线程是指需要内核的参与,由内核完成线程的调度,依赖于操作系统核心,由内核的内部进行线程的创建和撤销。内核线程的线程表位于内核中,包括了线程控制块(TCB) ,一旦线程阻塞,内核会从当前或者其他进程中重新选择一个线程保证程序的执行。

内核级线程有以下特点:

1、内核级线程的管理工作都是由操作系统内核完成的,

2、线程调度、切换等工作,都是由内核负责,因此内核级线程的切换必然需要在核心态下才能完成。

3、操作系统会为每个内核级线程建立相应的 TCB,通过 TCB 对线程进行管理,内核级线程就是从 操作系统内核视角能看到的线程

4、优缺点:

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

缺点:一个用户进程会占用多个内核级线程,线程切换由操作系统内核完成,需要切换到核心态,因此线程的管理成本较高,开销大。

多线程模型

一对一模型

一对一模型:一个用户级线程映射到一个内核级线程,每个用户进程有与用户级线程同数量的内核级线程。

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

缺点:一个用户进程会占用多个内核级线程,线程切换需要操作系统内核完成,需要切换到核心态,因此线程管理成本高,开销大。

操作系统原理 —— 线程的概念、实现方式、多线程模型(十)

多对一模型

多对一模型:多个用户线程映射到一个内核级线程,且一个进程只能被分配一个内核级线程。

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

缺点:当一个用户级线程被阻塞后,整个进程都会被阻塞,并发度不高,多个线程不可再多核处理机上并行执行。
操作系统原理 —— 线程的概念、实现方式、多线程模型(十)

多对多模型

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

克服了多对一模型的并发度不高的缺点,同时又解决了一对一模型中,用户进程占用太多内核级线程开销太大的缺点。

操作系统原理 —— 线程的概念、实现方式、多线程模型(十)

线程的组织

进程在操作系统的管理中,有 PCB 数据结构,而线程也有对应的数据结构存储线程相关信息,来方便操作系统进行管理,也就是对应的 TCB。

操作系统原理 —— 线程的概念、实现方式、多线程模型(十)

线程的特点总结

操作系统原理 —— 线程的概念、实现方式、多线程模型(十)

线程的实现方式和多线程模型总结

操作系统原理 —— 线程的概念、实现方式、多线程模型(十)文章来源地址https://www.toymoban.com/news/detail-436944.html

到了这里,关于操作系统原理 —— 线程的概念、实现方式、多线程模型(十)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 学习操作系统的必备教科书《操作系统:原理与实现》| 文末赠书4本

    使用了6年的实时操作系统,是时候梳理一下它的知识点了 摘要: 本文简单介绍了博主学习操作系统的心路历程,同时还给大家总结了一下当下流行的几种实时操作系统,以及在工程中OSAL应该如何设计。希望对大家有所启发和帮助。 操作系统一直伴随着我的工作,早些年我

    2023年04月08日
    浏览(44)
  • 【操作系统原理实验】银行家算法模拟实现

    选择一种高级语言如C/C++等,编写一个银行家算法的模拟实现程序。1) 设计相关数据结构;2) 实现系统资源状态查看、资源请求的输入等模块;3) 实现资源的预分配及确认或回滚程序;4) 实现系统状态安全检查程序;5) 组装各模块成一个完整的模拟系统。 (1)设计思想: 1、

    2024年02月01日
    浏览(44)
  • 操作系统-笔记-第一章-操作系统的概念

    一、第一章——操作系统的概念 二、第二章——【进程】 二、第二章——【线程】​编辑 二、第二章——【进程调度】 二、第二章——【进程同步与互斥】 二、第二章——【锁】 三、第三章——内存管理 四、第四章——文件管理 五、第五章——输入输出管理 🚀 学习心

    2024年02月12日
    浏览(56)
  • 【小黑嵌入式系统第十课】μC/OS-III概况——实时操作系统的特点、基本概念(内核&任务&中断)、与硬件的关系&实现

    上一课: 【小黑嵌入式系统第九课】PSoC 5LP第一个实验——LED、字符型LCD显示实验 下一课: 【小黑嵌入式系统第十一课】μC/OS-III程序设计基础(一)——任务设计、任务管理(创建基本状态内部任务)、任务调度、系统函数 一. 凡从事嵌入式系统开发工作的人,必须对嵌入

    2024年02月05日
    浏览(55)
  • 【Linux】操作系统的基本概念 {冯诺依曼体系结构,操作系统的基本概念,系统调用及用户操作接口,shell程序}

    现代计算机设计大都遵守冯·诺依曼体系结构: 截至目前,我们所认识的计算机,都是由一个个的硬件组件组成 输入单元:包括键盘, 鼠标,扫描仪, 磁盘,网卡等 存储器: 内存(提高数据读写速度,降低硬件成本) 中央处理器(CPU):含有运算器(算数运算,逻辑运算)和控

    2024年02月11日
    浏览(52)
  • 王道操作系统学习笔记(1)——操作系统基本概念

    本文介绍了操作系统的基本概念,文章中的内容来自B站王道考研操作系统课程,想要完整学习的可以到B站官方看完整版。 操作系统:系统资源的管理者(处理机管理、存储器管理、文件管理、设备管理) 交互式命令(在终端中输命令)和批处理命令(Shell脚本) 并发: 宏

    2024年02月10日
    浏览(52)
  • AI元宇宙虚拟无人直播系统 不出镜不露脸的直播方式如何实现 含操作教程分享

    随着互联网的不断发展,直播行业也逐渐成为了一种全新的社交形式和文化现象。直播节目的种类繁多,包括音乐、舞蹈、游戏、绘画、教育等各个方面。除了正常的直播外,一些特别的直播形式也在不断出现,比如“不出镜不露脸”的虚拟直播。虚拟直播是使用虚拟主播进

    2024年02月08日
    浏览(62)
  • 操作系统安全 基本概念

    参考教材是沈晴霓的《操作系统安全设计》,课程链接:https://www.coursera.org/learn/os-virtsecurity 本书内容由浅入深,分为“基础篇”、“理论篇”、“实践篇”和“趋势篇”四大部分。 “基础篇\\\"重点介绍操作系统基本安全概念、通用安全需求、安全标准和必要的安全机制等。

    2024年02月09日
    浏览(42)
  • 【操作系统】内存管理概念

    1、 编译:由编译程序将用户源代码编译成若干个目标模块(编译就是把高级语言翻译成机器语言) 2、 链接:由链接程序将编译后形成的一组目标模块,以及所需库函数链接在一起,形成一个完整的装入模块 ① 静态链接:在程序运行之前,先将各目标模块及它们所需的库函

    2024年02月06日
    浏览(53)
  • 【操作系统】一些重要的概念

    创作不易,本篇文章如果帮助到了你,还请点赞 关注支持一下♡𖥦)!! 主页专栏有更多知识,如有疑问欢迎大家指正讨论,共同进步! 🔥c++系列专栏:C/C++零基础到精通 🔥 给大家跳段街舞感谢支持!ጿ ኈ ቼ ዽ ጿ ኈ ቼ ዽ ጿ ኈ ቼ ዽ ጿ ኈ ቼ ዽ ጿ ኈ ቼ 本文为自己整理

    2024年02月12日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包