当前位置: 首页 > news >正文

9、线程理论1

一、线程

1、线程是什么?

  • 在传统的操作系统设计中,进程是资源分配的基本单位,每个进程都拥有独立的地址空间、页表和至少一个控制线程

  • 单一进程有多个线程的时候。这些线程虽然能独立执行,但是它们共享同一进程的地址空间及其中的所有数据

  • 线程是操作系统能够进行运算调度的最小单位,是进程中的实际运作单元。

  • 进程是资源独立,线程是资源共享。且2者都有调度能力


一个进程的创建实际上伴随着其task_struct结构体、进程地址空间(mm_struct)以及页表的创建,虚拟地址和物理地址就是通过页表建立映射的。

在这里插入图片描述

二、线程的使用

1、功能

1.1、资源共享

  • 多个线程共享一个进程的地址空间,共享了资源。
    • 混合共享(有用户空间和内核空间)
      • 在这里插入图片描述

1.2、轻量级和高效性

  • 比起进程,线程是更加轻量级的执行单元。
  • 由于进程要管理一些文件信息,而线程不管理这些信息,导致线程的创建和销毁比进程快的多。

1.3、性能提升

  • 在涉及大量计算和I/O处理的场景中,多线程编程能够显著提升应用程序的性能。
    • 例如,在Web服务器中,一个线程可以处理客户端的连接请求,而另一个线程则负责从磁盘读取数据并准备响应。这种并行处理方式提高了服务器的吞吐量和响应速度。

2、多线程的解决方案

当多任务进行任务切换的时候,就会导致开销大。比如:web服务器(万维网服务器)。

在这里插入图片描述

3、单线程的解决方案

  • 单线程会导致前一个请求未完成时,后续请求必须等待或者CPU在等待I/O期间处于闲置状态等等问题。

    • 解决方法:

      • 改为IO复用模型epoll:核心思想是使用单个线程通过系统调用同时监控多个I/O事件,当某个I/O操作就绪时才进行处理。

      • 非阻塞的状态机模型:核心思想是所有I/O操作都设置为非阻塞模式,通过状态机管理请求处理流程。

三、经典线程模型

在这里插入图片描述

  • 线程容易发生错误:因为共享资源,所以运行过程中,资源被修改成错的,就导致后面的运行发生问题。
  • 线程是没有执行顺序的。可以使用线程的一些机制来实现顺序:线程同步等等。
  • 线程和进程的内容:

四、线程的同步互斥机制

1、理论

  • 由于同一个进程的多个线程会共享进程的资源,这些被共享的资源称为临界资源

  • 多个线程对公共资源的抢占问题,访问临界资源的代码段称为临界区

  • 多个线程抢占进程资源的现象称为竞态

  • 为了解决竞态,我们引入了同步互斥机制

    • 互斥:确保同一时间只有一个线程能访问共享资源

    • 同步:协调线程间的执行顺序

竞态,我们引入了同步互斥机制

  • 互斥:确保同一时间只有一个线程能访问共享资源

  • 同步:协调线程间的执行顺序


文章转载自:
http://cardholder.aaladrg.cn
http://amerasian.aaladrg.cn
http://backboned.aaladrg.cn
http://bengal.aaladrg.cn
http://biramose.aaladrg.cn
http://beggarly.aaladrg.cn
http://campanero.aaladrg.cn
http://australopithecus.aaladrg.cn
http://astrodome.aaladrg.cn
http://bultery.aaladrg.cn
http://anaerophyte.aaladrg.cn
http://chromide.aaladrg.cn
http://amoeban.aaladrg.cn
http://adrenotropic.aaladrg.cn
http://blanch.aaladrg.cn
http://bombast.aaladrg.cn
http://appropriator.aaladrg.cn
http://cabriolet.aaladrg.cn
http://aacs.aaladrg.cn
http://acta.aaladrg.cn
http://cambridge.aaladrg.cn
http://bondsman.aaladrg.cn
http://beng.aaladrg.cn
http://baykal.aaladrg.cn
http://autoeroticism.aaladrg.cn
http://aerosinusitis.aaladrg.cn
http://areca.aaladrg.cn
http://bait.aaladrg.cn
http://antigas.aaladrg.cn
http://baluchi.aaladrg.cn
http://www.dtcms.com/a/281745.html

相关文章:

  • HostVDS 云服务器测评:平价入门、流媒体解锁全美、表现稳定
  • 暑假Python基础整理 --异常处理及程序调试
  • Redis 中的持久化机制:RDB 与 AOF
  • Java之Stream其二
  • 第二章 OB 存储引擎高级技术
  • 数学金融与金融工程:学科差异与选择指南
  • 【AI News | 20250714】每日AI进展
  • 为 Git branch 命令添加描述功能
  • 将 Vue 3 + Vite + TS 项目打包为 .exe 文件
  • 711SJBH构建制造业信息化人才培训体系的对策-开题报告
  • 21-C#的委托简单使用-1
  • Datawhale 25年7月组队学习coze-ai-assistant Task1学习笔记:动手实践第一个AI Agent—英伦生活口语陪练精灵
  • yolov5、yolov8、yolov11、yolov12如何训练及轻量化部署-netron-onnx
  • echarts折线图的 线条的样式怎么控制
  • Python os模块完全指南:从入门到实战
  • python编程实现GUI界面的排序与查找算法动态模拟演示程序
  • Sa-Token使用要点
  • mongoDB安装初始化及简单介绍
  • 2025/7/15——java学习总结
  • Pandas 和 NumPy 使用文档整理
  • 大宗现货电子盘交易系统核心功能代码解析
  • QT6 源,六章事件系统(8)QEvent 的孙子类:QEnterEvent 光标进入
  • 无穿戴动捕如何凭借摄像头视觉识别算法,赋能高校专业教学革新?
  • python进阶
  • 145-变分模态分解VMD与平稳小波变换SWT信号降噪算法实现!
  • 4G模块 A7680通过MQTT协议连接到onenet(新版)
  • WebAPIs基本认知,DOM基础介绍
  • 基于Springboot+UniApp+Ai实现模拟面试小工具五:权限校验参数校验及日志功能实现
  • Ubuntu 22.04 安装 mysql-server与 postgreSQL 服务端
  • el-tooltip 快速滚动的时候出现残影如何解决 vue3