操作系统的线程管理

线程的概念

线程是“轻量级的进程”。

引入(多)线程作用

快速线程切换,通信易于实现,并行程度提高,减少(系统)管理开销

  • 并行实体共享同一个地址空间和所有可用数据的能力。
  • 线程比进程更轻量级,它们比进程更容易、更快地撤销。
  • 同一进程内的线程间切换比进程间的切换要快,尤其是用户级线程间的切换。
  • 拥有多个线程允许这样活动彼此重叠进行,从而会加快应用程序执行速度

操作系统分类 

  • 单进程、单线程,MS-DOS 大致是这种操作系统;
  • 多进程、单线程,多数 UNIX(及类 UNIX 的 LINUX) 是这种操作系统;
  • 多进程、多线程,Win32(Windows NT/2000/XP 等)、Solaris 2.x 和 OS/2 都是这种操作系统;
  • 单进程、多线程,VxWorks 是这种操作系统。

线程的实现方式 

线程可以分为三大类:

1、内核级线程:1:1

2、用户级线程:N:1

3、混合型线程:M:N

一对一模型:该模型为每个用户级线程都设置一个内核线程与之连接,并发能力较强,但每创建一个用户线程,都需要创建一个内核线程。

多对一模型:该模型为多个用户级线程分配一个内核线程。这样的话,线程管理的开销较小,但是当一个线程在访问内核时发生阻塞,则整个进程会被阻塞。

多对多模型:多个用户线程连接到多个内核线程上,内核控制线程的数目可以根据应用和系统的不同而变化,可以比用户线程少,也可以与之相同。

内核级线程

内核级线程的实现方式,每个用户线程都直接与一个内核线程相关联

1、内核线程的创建、撤销和切换等,都是内核负责、通过系统调用完成的,即内核了解每一个作为可调度实体的线程。

2、这些线程可以在全系统内进行资源的竞争。

3、内核管理所有线程管理,并向应用程序提供API接口。

4、内核维护进程和线程的上下文。

5、以线程为基础进行调度。

6、内核空间内为每一个内核支持线程设置了一个线程控制块(PCB),内核根据该控制块,感知线程的存在,并进行控制。

7、内核线程驻留在内核空间,它们是内核对象。有了内核线程,每个用户线程被映射或绑定到一个内核线程。用户线程在其生命期内都会绑定到该内核线程。一旦用户线程终止,两个线程都将离开系统。这被称作“一对一”线程映射。

内核线程的优点: 

1、多处理器系统中,内核能够调度同一进程中的多个线程并行执行。

2、不需要任何新的、非阻塞的系统调用。如果进程中的一个线程被阻塞,能够切换同一进程内的其他线程继续执行(用户级线程的一个缺点)。

3、内核还可以运行另一个进程的线程,而用户空间实现的线程中,运行时系统始终运行自己进程中的线程。

4、所有能够阻塞线程的调用都以系统调用的形式实现,代价可观。 信号是发给进程而不是线程的,当一个信号到达时,应该由哪一个线程处理它?线程可以 “注册” 它们感兴趣的信号。

内核线程的缺点: 

1、内核线程数量有限。

2、如果内核线程的操作比较多,会导致上下文的开销很大。

用户级线程 

在用户空间建立线程库,这个线程库里提供了一系列的针对线程的操作。这些线程的管理通过运行时系统(Run-time System)来管理的。

它的管理还是以进程为单位进行管理的,它无法感知线程的存在。因此线程间的切换不需要内核的参与,比较快。

  • 用户级线程仅存在于用户空间。
  • 内核并不能看到用户线程。

内核资源的分配仍然是按照进程进行分配的;各个用户线程只能在进程内进行资源竞争。

用户进程的优点:

1、可以在不支持线程的操作系统中实现;

2、线程切换速度非常快,创建和销毁线程、线程切换代价等线程管理的代价比内核线程少得多,因为保存线程状态的过程和调用程序都只是本地过程;

3、线程的调度不需要内核直接参与,控制简单;

4、具有较好的可扩展性,允许应用程序根据需要指定线程调度算法;

5、线程能够利用的表空间和堆栈空间比内核级线程多;

6、不需要陷阱,不需要上下文切换,也不需要对内存高速缓存进行刷新,使得线程调用非常快捷;

用户线程的缺点:

1、资源调度按照进程进行(内核只将处理器分配给进程),多个处理机下,同一个进程中的线程只能在同一个处理机下分时复用;

2、线程发生 I/O 或页面故障引起的阻塞时,如果调用阻塞系统调用,则内核由于不知道有线程的存在,而会阻塞整个进程从而阻塞所有线程直到磁盘 I/O 完成为止(尽管其他线程是可以运行的),因此同一进程中只能同时有一个线程在运行;

3、一个单独的进程内部,没有时钟中断,所以不可能用轮转调度的方式调度线程;

混合型线程 

用户级与内核级的组合实现方式, 在这种模型中,每个内核级线程有一个可以轮流使用的用户级线程集合:

 

线程创建在用户空间完成,线程调度等在核心态完成。
多个用户级线程多路复用多个内核级线程。也就是说,核外的用户空间的线程通过一个机制和核内的一个内核级线程对应起来,那么调度内核的这个线程上CPU也就是调度核外的线程上的CPU。

用户级线程和内核级线程的区别

1、内核支持线程是 OS 内核可感知的,而用户级线程是 OS 内核不可感知的。

2、用户级线程的创建、撤消和调度不需要 OS 内核的支持,在语言这一级处理的;而内核支持线程的创建、撤消和调度都需 OS 内核提供支持,而且与进程的创建、撤消和调度大体是相同的。

3、用户级线程执行系统调用指令时将导致其所属进程被中断,而内核支持线程执行系统调用指令时,只导致该线程被中断。

4、在只有用户级线程的系统内,CPU 调度还是以进程为单位,处于运行状态的进程中的多个线程,由用户程序控制线程的轮换运行;在有内核支持线程的系统内,CPU 调度则以线程为单位,由 OS 的线程调度程序负责线程的调度。

5、用户级线程的程序实体是运行在用户态下的程序,而内核支持线程的程序实体则是可以运行在任何状态下的程序。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/270050.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【操作教程】如何在华为云服务器部署安防监控系统EasyCVR平台?

随着视频技术的快速发展,安防视频汇聚平台EasyCVR可支持的协议也在不断拓展,平台兼容多类型的协议接入,包括:国标GB28181、RTSP/Onvif、RTMP,以及厂家的私有协议与SDK,如:海康ehome、海康sdk、大…

【VTKExamples::PolyData】第五十期 VertexConnectivity

很高兴在雪易的CSDN遇见你 VTK技术爱好者 QQ:870202403 公众号:VTK忠粉 前言 本文分享VTK样例VertexConnectivity,并解析接口vtkExtractEdges,希望对各位小伙伴有所帮助! 感谢各位小伙伴的点赞+关注,小易会继续努力分享,一起进步! 你的点赞就是我的动力(^U…

threejs展示glb模型

原模型为rvt模型 <template><div ref"threeJsContainer"class"three-js-container"></div> </template> <script> import { defineComponent } from "vue"; import * as THREE from "three"; import…

Golang-channel合集——源码阅读、工作流程、实现原理、已关闭channel收发操作、优雅的关闭等面试常见问题。

前言 面试被问到好几次“channel是如何实现的”&#xff0c;我只会说“啊&#xff0c;就一块内存空间传递数据呗”…所以这篇文章来深入学习一下Channel相关。从源码开始学习其组成、工作流程及一些常见考点。 NO&#xff01;共享内存 Golang的并发哲学是“要通过共享内存的…

C++ STL自定义排序

更具体的看【速记】C STL自定义排序 - 知乎 (zhihu.com) sort sort第三个位置放的greater<int>和less<int>萌新可能会弄错&#xff0c;这两个单词不是更大和更小的意思&#xff0c;而是大于和小于&#xff0c;并且比较就是自定义排序中的前者和后者。 如果是less…

2024-3-5 python 序列小知识点

1、for循环的变量作用域不限于for循环内 >>>i 10 >>>for i in range(100): >>> print(i) >>> i 100此处&#xff0c;for循环里的 i 修改了之前的 i 变量的值。 2、列表推导式里的变量作用域仅限于推导式内 推导式犹如一个函数&…

App测试中iOS和Android的差异

1、系统版本&#xff1a; iOS和Android系统版本的更新速度、使用人数比例以及功能的不同都可能导致应用程序在不同操作系统版本上的表现和兼容性存在区别。 例如&#xff0c;在iOS平台上&#xff0c;很多用户会更快地升级到最新版本的iOS系统&#xff0c;而在Android平台上&a…

Apache ECharts数据可视化技术

介绍 官方地址:Apache ECharts 快速入门案例echarts.init //初始化方法 <!DOCTYPE html> <html><head><meta charset"utf-8" /><title>ECharts</title><!-- 引入刚刚下载的 ECharts 文件 --><script src"echart…

分布式系统中常用的缓存方案

1. 引言 随着互联网应用的发展和规模的不断扩大&#xff0c;分布式系统中的缓存成为了提升性能和扩展性的重要手段之一。本文将介绍几种在分布式系统中常用的缓存方案&#xff0c;包括分布式内存缓存、分布式键值存储、分布式对象存储和缓存网关等。 1.1 缓存在分布式系统中的…

工作电压范围宽的国产音频限幅器D2761用于蓝牙音箱,输出噪声最大仅-90dBV

近年来随着相关技术的不断提升&#xff0c;音箱也逐渐从传统的音箱向智能音箱、无线音箱升级。同时在消费升级的背景下&#xff0c;智能音箱成为人们提升生活品质的方式之一。智能音箱是智能化和语音交互技术的产物&#xff0c;具有点歌、购物、控制智能家居设备等功能&#xf…

Python给图片加水印

受到“手动给证件加文字太麻烦”的感触&#xff0c;想用Python来实现给图片加水印&#xff0c;这不方便多了。 这里使用PIL模块&#xff1a; from PIL import Image from PIL import ImageFont from PIL import ImageDrawimg_t Image.open(cat.jpg) img_size_t img_t.size…

C# OpenVINO Crack Seg 裂缝分割 裂缝检测

目录 效果 模型信息 项目 代码 数据集 下载 C# OpenVINO Crack Seg 裂缝分割 裂缝检测 效果 模型信息 Model Properties ------------------------- date&#xff1a;2024-02-29T16:35:48.364242 author&#xff1a;Ultralytics task&#xff1a;segment version&…

MongoDB获评2023年Gartner®云数据库管理系统“领导者”

MongoDB 很荣幸在《2023 年 Gartner 云数据库管理系统 (CDBMS) 魔力象限》报告中被评为领导者。我们相信这一成就让 MongoDB 成为唯一一家连续两年斩获“领导者”称号的纯应用程序数据库服务提供商。 社区及开发者数据平台用户的需求一向是 MongoDB 关注的重点&#xff0c;而这…

android开发教程百度网盘,高并发系统基础篇

展望未来 操作系统 移动操作系统的演变过程&#xff0c;从按键交互的塞班功能机到触摸屏交互的Android/IOS智能机&#xff0c;从小屏幕手机到全面屏、刘海屏、水滴屏。任何系统无非干两件事&#xff1a;输入和输出&#xff0c;接收到外部输入信号后经过操作系统处理后输出信息…

小白优化Oracle的利器”sqltrpt.sql”脚本

SQL调优顾问是Oracle自带的一个功能强大的内部诊断工具&#xff0c;用于对性能不佳的SQL语句给出优化建议。但如果从命令行调用它比较麻烦&#xff0c;幸运的是&#xff0c;Oracle提供了一个方便的内置脚本“sqltrpt.sql”&#xff0c;简化了调用过程。 sqltrpt.sql脚本位于Or…

【OpenGL】(1) 专栏介绍:OpenGL 库 | 3D 计算机图形应用 | GPGPU 计算 | 3D 建模和 3D动画 | 渲染技术介绍

&#x1f517; 《C语言趣味教程》&#x1f448; 猛戳订阅&#xff01;&#xff01;&#xff01; &#x1f4ad; 写在前面&#xff1a;本专栏主要内容是关于 3D 计算机图形技术的学习&#xff0c;重点是学习与此技术相关的 3D 实时渲染 (3D real-time rendering) 技术。我们会以…

VR科学知识互动展示介绍|游戏体验馆加盟|VR展示厅

VR科学知识互动展示是一种利用虚拟现实技术来呈现科学知识并与观众进行互动的展示方式。通过VR设备&#xff0c;参观者可以沉浸在各种科学主题的虚拟环境中&#xff0c;以全新的视角和体验来探索科学领域的知识。 这样的展示通常结合了视觉、听觉和触觉等感官体验&#xff0c;使…

LeetCode 刷题 [C++] 第98题.验证二叉搜索树

题目描述 给你一个二叉树的根节点 root &#xff0c;判断其是否是一个有效的二叉搜索树。 有效 二叉搜索树定义如下&#xff1a; 节点的左子树只包含 小于 当前节点的数。节点的右子树只包含 大于 当前节点的数。所有左子树和右子树自身必须也是二叉搜索树。 题目分析 由题…

花王如何让护舒宝退出日本市场?|日本极致产品力

摘要&#xff1a;《极致产品力》日本深度研学是一个顾问式课程,可以帮助企业找产品、找方向、找方法,在日本终端市场考察中洞悉热销产品背后的成功逻辑&#xff0c;了解最新最前沿的产品趋势和机会。结合日本消费趋势中国转化的众多经验,从品牌、包装、卖点、技术和生产工艺等多…

面试经典150题【51-60】

文章目录 面试经典150题【51-60】71.简化路径155.最小栈150.逆波兰表达式求值224.基本计算器141.环形链表2.两数相加21.合并两个有序链表138.随机链表的复制19.删除链表的倒数第N个节点82.删除链表中的重复元素II 面试经典150题【51-60】 71.简化路径 先用split(“/”)分开。然…