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

Linux多线程(二)之进程vs线程

文章目录

    • Linux进程VS线程
      • 进程和线程
      • 进程的多个线程共享
      • 关于进程线程的问题
    • 重谈地址空间
    • Linux线程周边的概念

Linux进程VS线程

进程和线程

  1. 进程是资源分配的基本单位(进程是承担分配系统资源的基本实体)

    执行流也是资源!线程是进程内部的执行流资源!

  2. 线程是操作系统调度的基本单位

  3. 线程共享进程数据,但也拥有自己的一部分数据:

线程ID
一组寄存器(线程的上下文数据)!!!!!!
栈!!!!!!
errno
信号屏蔽字
调度优先级

进程的多个线程共享

同一地址空间,因此Text SegmentData Segment都是共享的,

如果定义一个函数,在各线程中都可以调用,

如果定义一个全局变量,在各线程中都可以访问到,

除此之外,各线程还共享以下进程资源和环境:

文件描述符表!!
每种信号的处理方式(SIG_ IGN、SIG_ DFL或者自定义的信号处理函数)
当前工作目录
用户id和组id

进程和线程的关系如下图:

image-20250425225536647

关于进程线程的问题

如何看待之前学习的单进程?

具有一个线程执行流的进程

重谈地址空间

如何理解资源分配给各线程?

线程分配资源的本质

就是分配地址空间的范围!

如果不做划分就是各线程共享的!

页表深究

Linux线程周边的概念

线程 vs 进程

线程比进程要更轻量化(why?)

a.创建和释放更加轻量化(生死问题)

​ 创建线程只要把PCB创建

​ 创建进程要创建PCB、地址空间、页表、申请物理内存、构建映射等

​ 线程释放PCB

​ 进程就要释放创建、申请的资源

b.切换更加轻量化(运行问题)

​ 运行的代码变少了(线程只需要运行进程的一部分代码)

​ 线程切换不需要切换页表、不需要切换地址空间等(局部切换)

​ 线程在执行就是进程在执行。CPU里有一个硬件级别的缓存(cache

image-20250427170729722

image-20250427171218887

​ 线程切换的时候,虽然上下文在切换,但是cache里的热数据基本不变或者更新少量。

​ 进程切换的时候,cache里的热数据就要丢弃,需要重新缓存新的数据。
(冷数据->热数据需要时间)

线程也会有时间片,线程的时间片来源于进程,

时间片也是资源,所以合理分配给线程,

线程不能在进程中重新申请时间片,只能在进程中获取。

相关文章:

  • 单细胞测序细胞注释全攻略:选择自动工还是手动验证,附常见细胞Marker基因
  • 多端一体开发:iVX 如何让「一次开发,全平台部署」从理想照进现实
  • PDF 表单按钮动态边框效果
  • 使用 Vuex 实现用户注册与登录功能
  • Graph Neural Network(GNN)
  • 苍穹外卖--Redis
  • Java基础 Day21
  • 袁庭新陕西理工大学讲座报告:从技术原理到行业变革,构建AI时代的职业护城河
  • Webpack 5 模块联邦(Module Federation)详解与实战
  • 曼昆经济学原理第九版目录
  • 洛谷 P3374 【模板】树状数组 1(线段树解法)
  • 关于 smali:1. Smali 基础语法入门
  • [Java恶补day7] 42. 接雨水
  • AI巡检系统适合多大面积的餐厅?
  • 爬虫学习-Scrape Center spa6 超简单 JS 逆向
  • Spring Boot + OpenCSV 数据清洗实战:CSV 结构化处理与可视化
  • leetcode hot100刷题日记——17.搜索插入位置
  • java基础(面向对象进阶高级)内部类
  • Webtrees 手册/程序概述
  • 游戏:元梦之星游戏开发代码(谢苏)
  • 手表网站 源码/推广竞价的公司有哪些
  • 网站建设php文件html文件/制作网站费用
  • 有没有做网站的/长沙网站推广合作
  • 怎么做便民信息网站/搜索引擎推广一般包括哪些
  • 新能源汽车价格/厦门百度seo
  • 聚享游网站如何做推广/国际热点新闻