操作系统(4)第二章- 进程通信

进程通信(IPC,Inter-Process Communication)是操作系统中让独立进程交换数据、同步协作的核心机制,用于打破进程间内存隔离,实现多进程协同。

一、核心目标

  • 数据传输:在进程间传递字节流、结构化数据或文件数据。
  • 同步协作:协调执行顺序,避免资源竞争。
  • 资源共享:共享内存、文件等,减少数据拷贝。

二、主流通信方式(原理 + 特点 + 场景)

1. 管道(Pipe)
  • 匿名管道 :内核缓冲区实现,半双工、单向 ,仅用于父子 / 兄弟进程 ,遵循 FIFO。
    • 优点:简单、系统原生、开销小。
    • 缺点:单向、仅亲缘进程、缓冲区有限。
    • 场景:Shell 命令串联(ls | grep)。
  • 命名管道(FIFO) :以文件形式存在于文件系统,无亲缘进程也可通信 ,仍单向、FIFO。
    • 优点:突破亲缘限制、持久化存在。
    • 缺点:单向、需处理阻塞。
    • 场景: unrelated 进程间简单数据传递。
2. 消息队列(Message Queue)
  • 原理:内核维护消息链表,消息含类型 + 数据,可按类型过滤,支持异步。
  • 优点:结构化消息、异步、支持优先级、多进程读写。
  • 缺点:两次拷贝、消息大小受限、需手动清理。
  • 场景:订单 - 支付、任务分发等结构化消息场景。
3. 共享内存(Shared Memory)
  • 原理:将同一块物理内存映射到多个进程地址空间,零拷贝、直接读写。
  • 优点:性能最高、适合大数据量、低延迟。
  • 缺点:无内置同步,需搭配信号量 / 互斥锁防竞争。
  • 场景:实时图像处理、高速数据交换。
4. 信号量(Semaphore)
  • 原理:计数器 + 等待队列,用于同步与互斥,控制临界区访问。
  • 优点:解决竞态、支持多进程同步。
  • 缺点:仅用于同步,不传输数据、编程复杂。
  • 场景:配合共享内存、资源池访问控制。
5. 信号(Signal)
  • 原理:软件中断,内核向进程发送信号(如SIGINT、SIGKILL),进程注册处理函数。
  • 优点:轻量、异步、系统原生、开销极低。
  • 缺点:仅传信号类型、无数据、不可靠。
  • 场景:进程终止、异常通知、简单控制。
6. 套接字(Socket)
  • 原理:通用 IPC,支持本地(Unix Domain Socket)与跨网络(TCP/UDP) ,全双工。
    • TCP:面向连接、可靠、字节流。
    • UDP:无连接、不可靠、数据报、快。
  • 优点:跨主机、双向、通用、成熟生态。
  • 缺点:本地通信有两次拷贝、网络有额外开销。
  • 场景:Web 服务、客户端 - 服务器、分布式系统。

三、选择建议

  • 追求极致性能、大数据 :选共享内存 + 信号量。
  • 本地结构化、异步消息 :选消息队列。
  • 简单父子进程数据流 :选匿名管道。
  • 无亲缘进程简单通信 :选命名管道。
  • 跨网络 / 通用场景 :选Socket(TCP/UDP)。
  • 仅需通知 / 控制 :选信号。
相关推荐
李剑一6 天前
早在八十年代我们就有国产操作系统,但为什么最后还是Windows一统天下,答案藏在时间里
操作系统
Java成神之路-6 天前
虚拟内存核心精讲:页表、VMA、缺页异常与mmap(单级页表 + 多级页表对照)
操作系统
OpenAnolis小助手8 天前
RISC-V 基础软件的工程化与性能优化实践
性能优化·操作系统·龙蜥社区·risc-v
青梅味猪大肠9 天前
【操作系统-60】临近适应算法
java·linux·开发语言·嵌入式硬件·算法·操作系统
PMAOS12 天前
4G 功能机操作系统选型指南:KaiOS、Mocor、MAUI、PMAOS 的能力边界与验证方法
嵌入式硬件·ai·操作系统
罗四强12 天前
第10篇:打包上架:签名、打包 HAP、发布到华为应用市场
分布式·操作系统·harmonyos·arkts·鸿蒙系统
Liaiyang6614 天前
空圈容错视角-HarmonyOS 7 架构体检:从被动容错到主动免疫的真伪验证与生态反推
操作系统·harmonyos·架构设计·ai-agent·端云协同·鸿蒙7·空圈容错
OpenAnolis小助手14 天前
龙蜥社区亮相 GOSIM AI Vision Forum 共话“Agentic Native”开源新
人工智能·ai·开源·操作系统·龙蜥社区·agent
阿里云基础软件14 天前
Agent 任务提速 10.71%,内存占用降低 21.60%|Alibaba Cloud Linux 4 重大发布
java·linux·人工智能·操作系统·agent
OpenAnolis小助手15 天前
多租户公有云共享 CXL 内存池场景下的内存卸载研究
人工智能·操作系统·龙蜥社区·risc-v·agentic os