进程与线程(5)--线程(1)--基本概念

发布时间:2026/6/12 13:31:01

进程与线程(5)--线程(1)--基本概念 线程定义、引入意义、机制变化与核心属性前面我们系统学习了进程实体、进程控制、三类进程通信方式、信号轻量事件通知机制。在纯进程的传统模型里进程同时承担资源分配和CPU 调度执行双重身份存在切换开销大、单进程内部无法并行多任务的明显短板。为解决这些问题操作系统引入了线程轻量级进程拆分资源与调度两大职责大幅提升系统并发能力。一、什么是线程为什么要引入线程1. 线程标准定义线程是CPU 调度、程序执行流的最小单位常被称作轻量级进程。一个进程内部可以创建多条相互独立的执行线程所有线程完全共享所属进程分配到的全部系统资源。 实例 打开 QQ 软件整个 QQ 是 1 个完整进程进程内部会创建多条线程分工干活线程 1 负责文字聊天收发、线程 2 负责视频画面渲染、线程 3 负责文件传输、线程 4 负责后台好友消息推送。 如果是无线程的老式单执行流进程QQ 只能串行完成任务必须等文件全部传完才能开启视频通话多任务无法同步进行。2. 引入线程的三大核心目的实现单进程内部多任务并发不再局限于只有进程之间才能并发运行整体系统并发度成倍提升拆分职能进程只管资源分配线程只管 CPU 调度执行大幅降低并发切换带来的系统性能开销完美适配多核 CPU 硬件同一个进程的多条线程可以分配到不同物理 CPU 核心上真正并行运算充分挖掘多核硬件算力。二、引入线程机制后系统产生变化对比传统纯进程模型线程诞生后底层运行逻辑出现本质改变分为资源调度、并发性、系统开销三个维度对比。1. 资源分配与调度主体拆分传统无线程模型进程 资源分配基本单位 CPU 调度基本单位线程模型进程仅作为除 CPU 以外所有资源的分配单元虚拟内存地址空间、文件、打印机、网络套接字全部分配给进程线程唯一的CPU 调度执行单元线程自身只持有少量私有资源寄存器、独立栈空间、TCB 线程控制块几乎不独占系统大资源。 实例 打开浏览器进程系统给它分配 500MB 运行内存、显卡渲染资源浏览器里每一个网页标签对应一条线程CPU 调度时只切换线程的少量私有上下文不用更换整块进程内存地址空间。2. 系统并发性全面升级传统模型仅支持进程与进程之间并发一个进程内部代码只能从头到尾串行执行线程模型两层并发同时生效进程之间可以并发同一个进程内部的多条线程之间也能并发运行。 实例 网易云音乐程序作为一个进程线程 A 持续播放音频、线程 B 实时滚动加载歌词、线程 C 后台下载新歌曲三项任务同步推进如果没有线程机制必须等整首歌曲播放完毕程序才能执行歌词加载逻辑。3. 并发切换的系统开销大幅缩减进程切换开销大切换两个不同进程时需要完整替换虚拟页表、地址空间、打开文件列表、全部硬件上下文内核要读写大量数据CPU 损耗很高同进程内线程切换开销极小线程共享进程全部地址空间、文件、外设资源切换仅需要替换线程私有栈、寄存器、TCB 现场不需要改动任何进程级资源补充不同进程之间的线程切换本质依旧是完整进程切换开销仍然偏大。 实例 大型 3A 游戏里同一个场景有成百上千个怪物渲染线程系统一秒内会频繁切换上千次线程玩家几乎感受不到卡顿如果把每个怪物渲染拆成独立进程高频进程切换会直接造成游戏崩溃、帧率暴跌。三、线程的十大核心重要属性调度身份线程是处理机 CPU 调度的最小单位多核计算机中同一个进程的多条线程可分配到不同物理 CPU 核心并行运行 实例视频剪辑软件解码线程跑 CPU 核心 1、画面渲染线程跑核心 2、导出合成线程跑核心 3多核同步工作缩短渲染时长。独立标识每一条线程拥有唯一线程 ID配套专属 TCB线程控制块TCB 作用等价于进程的 PCB存储线程运行现场、状态、优先级。基础状态体系线程同样具备就绪、阻塞、运行三种核心基础状态状态转换规则和进程逻辑一致 实例文件下载线程等待网络数据包时进入阻塞数据包抵达后系统唤醒线程变为就绪等待 CPU 调度后恢复运行。资源持有特点线程几乎不独占系统硬件、内存资源所有大块资源归属所属进程。资源完全共享同一进程下所有线程共享进程虚拟地址空间、全局变量、打开文件、网络连接、外设句柄 延伸优势同进程线程间通信极简直接读写共享内存变量即可无需管道、共享存储、消息队列这类复杂 IPC 工具 延伸风险多线程同时修改共享变量会出现数据错乱必须搭配互斥锁、信号量做同步保护。 实例聊天软件全局在线人数变量所有收发消息线程都能直接读取修改不加锁会出现人数统计数值错误。切换边界规则 1同一进程内部的线程互相切换不会触发任何进程切换操作地址空间全程不变。切换边界规则 2分属不同进程的两条线程互相切换一定会触发完整进程切换流程。开销对比 1同进程内部线程切换系统 CPU 开销很小开销对比 2跨进程切换无论切换进程还是进程内线程系统 CPU 开销偏大。四、进程与线程简易对比总结表格对比维度进程线程资源分配单元是独占整套地址空间、文件、外设否仅持有栈、寄存器、TCB 少量私有内容CPU 调度单元传统模型是线程模型不是是唯一调度执行单位并发范围进程之间并发进程间、同进程线程间双层并发切换开销很高同进程内切换极低跨进程切换同等偏高通信方式必须依靠 IPC共享存储 / 管道 / 消息 / 信号同进程线程直接共享内存读写无需内核中转五、总结线程定位轻量级执行流拆分进程 “资源分配” 与 “CPU 调度” 两大职能核心收益两层并发、同进程切换低开销、适配多核 CPU关键边界同进程线程共享资源通信简单但存在竞态风险跨进程线程切换等价于进程切换之前学习的信号、IPC 大多用于跨进程交互同进程多线程优先使用共享内存 互斥同步方案效率更高。

相关新闻