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

【Linux 父子进程、进程中的线程、不同的进程、不同的线程】之间的区别

文章目录

  • 🔥 吃透进程/线程关系:父子进程、同进程线程、跨进程线程 一张图看懂
    • 一、先把 4 个概念一句话说清
    • 二、最核心区别:资源共享(面试必考)
      • 1)父子进程
      • 2)同一个进程内的多个线程
      • 3)不同的无关进程
      • 4)不同线程(分两种)
    • 三、谁崩溃会影响谁?(最重要的工程常识)
    • 四、创建与销毁成本
    • 五、调度单位
    • 六、一张表终极总结(背会就能面试)
    • 七、最简单记忆法

🔥 吃透进程/线程关系:父子进程、同进程线程、跨进程线程 一张图看懂

本文已收录至「Linux 并发与多线程核心手册」,用最清晰的分类,帮你彻底区分:
父子进程、同进程内多线程、不同进程、不同线程(跨进程)


一、先把 4 个概念一句话说清

  1. 父子进程
    爸爸进程fork()出来的儿子进程。
    地址空间完全独立,像克隆后分家。

  2. 同一个进程里的多个线程
    同一个房间里的多个人。
    共享全部资源,只是执行流不同。

  3. 不同的进程(无关进程)
    两个完全没关系的家庭。
    完全隔离,只能靠 IPC 通信。

  4. 不同的线程(可能同进程/可能跨进程)
    只要是两条执行流,都叫不同线程:

    • 同进程内:共享一切
    • 跨进程:完全不共享

二、最核心区别:资源共享(面试必考)

1)父子进程

  • fork数据一模一样
  • 写时复制(Copy-On-Write),一修改就各自独立
  • 不共享地址空间、栈、堆、全局变量
  • 通信必须用:管道、消息队列、共享内存、信号等

2)同一个进程内的多个线程

  • 共享:
    • 代码段
    • 数据段(全局变量、静态变量)
    • 文件描述符、信号处理、当前目录
  • 私有:
    • 寄存器上下文
  • 通信极快:直接改全局变量就行(但要加锁)

3)不同的无关进程

  • 完全隔离
  • 无任何内存共享
  • 只能 IPC

4)不同线程(分两种)

  • 同进程线程:共享一切
  • 不同进程的线程:完全不共享

三、谁崩溃会影响谁?(最重要的工程常识)

  1. 子进程崩 → 父进程没事
  2. 父进程崩 → 子进程可以继续活(变成孤儿)
  3. 同进程一个线程崩 → 整个进程崩 → 所有线程一起死
  4. 不同进程的线程崩 → 互相完全不影响

结论:
进程是安全隔离单元,线程是效率单元。


四、创建与销毁成本

  • 进程:重
    fork → 复制页表 → 独立地址空间
  • 线程:轻
    只创建栈和上下文,共享地址空间

五、调度单位

  • 进程:资源分配单位
  • 线程:CPU 调度的基本单位

内核不管你是哪个进程的线程,只管调度线程


六、一张表终极总结(背会就能面试)

对比维度父子进程同进程多线程不同无关进程不同线程(跨进程)
地址空间独立(写时复制)共享完全独立完全独立
全局变量/堆不共享共享不共享不共享
崩溃影响互不影响(子崩父不崩)一个崩,全部崩互不影响互不影响
通信方式IPC(管道、共享内存等)直接读写全局变量(需加锁)IPCIPC
创建速度快(本身是线程)
调度单位线程(进程是资源单位)线程线程线程

七、最简单记忆法

  • 进程 = 独立房子
    父子是两栋楼,互不干扰。
  • 线程 = 房子里的人
    同屋人共享一切,一人出事全家遭殃。

http://www.jsqmd.com/news/502366/

相关文章:

  • Chord - Ink Shadow 创意写作工作坊:生成小说大纲与人物设定
  • PyQt5开发环境搭建避坑指南:Anaconda+PyCharm保姆级配置流程
  • 如何三分钟搞定国家中小学智慧教育平台电子课本下载:教师必备的高效工具指南
  • PPT高手都不知道的骚操作:用形状组合画出专业机器学习示意图(避坑指南)
  • 如何用XcodeBenchmark选择最佳Mac设备:完整成本效益分析教程
  • 【HCIA笔记(TCP协议)】
  • 企业级AI战略部署:构建数据主权与业务价值的本地化智能框架
  • 如何深度定制Android系统:SmartisanTech开源项目终极指南
  • Blender源码编译指南:如何用CMake和Git管理35G依赖库(2023最新版)
  • 如何通过AtlasOS实现Windows系统性能的全面革新:从理念到实践的完整指南
  • ECharts图表美化技巧:用markLine打造专业级警戒线和动态箭头效果
  • PTA 编程题(C语言)-- 智能交通违规判定系统
  • 动态批次生成优化:对话场景下的DAPO算法实践指南
  • ComfyUI进阶:利用IPAdapter与Impact-Pack实现精准物品移除
  • AI股票分析师镜像实测:输入任意代码,自动生成三段式报告
  • FLUX.1-dev-fp8-dit文生图工作流封装:SDXL Prompt Styler+Inpainting一体化方案
  • mergestat-lite 性能优化:处理大型代码库的最佳实践
  • Open Interpreter终极指南:用自然语言操控本地代码执行的完整方案
  • Modularization-examples代码实现原理:从理论到实践的模块化设计模式
  • 数学建模实战:用Python实现EWM-TOPSIS水质评价(附完整代码)
  • 如何用 mergestat-lite 生成代码分析报告:实用案例分享
  • IEEE会议投稿全攻略:如何高效筛选适合你的EI检索会议(附最新会议列表)
  • Beyond Compare插件安装全攻略:解决.class文件对比中的反编译错误
  • ghcide:Haskell开发者的高效IDE工具库使用指南
  • 基于S7-200控制的自动洗车系统总体设计与实施
  • 机器学习100天中文版:10个核心算法原理与代码实践
  • 小红书数据采集技术指南:从原理到合规实践
  • 企业级权限管理系统RuoYi-Vue实战指南:从环境搭建到生产部署
  • 2026零基础学雅思不用愁!雅思从零开始自学app精选推荐 - 品牌2025
  • 基于HHT与神经网络结合的故障诊断系统