定义

  • 在进程间传输数据(交换信息)
  • 进程间通信(Inter-Process Communication,IPC)

分类

低级通信

  • 只能传递状态和整数值(控制信息)
  • P、V 操作
  • 缺点:信息量小,效率低,编程复杂

重点 高级通信(三种方式)

方式描述特点
共享内存模式多个进程共享一段内存区域最快,需信号量同步互斥
消息传递模式进程间通过消息发送/接收通信无共享内存,适用于分布式系统
共享文件模式(管道)通过文件作为中介传递数据简单,但效率较低

共享内存(Shared Memory)

  • 最快速的 IPC 方式:进程直接读写同一块物理内存
  • 无需数据拷贝(对比消息传递需要内核缓冲拷贝)
  • 需配合 信号量 实现同步互斥
  • 适用场景:大量数据传输

消息传递(Message Passing)

直接通信

  • 指名道姓:发送方明确指定接收方 PID,接收方明确指定发送方
  • 系统调用:send(dest, msg) / recv(src, msg)

间接通信

  • 通过消息队列/信箱(Mailbox)作为中介
  • 多个进程可共享同一个信箱
  • 系统调用:send(M, msg) / recv(M, msg)

管道(Pipe)

  • 单向数据流:数据从一端写入,从另一端读出
  • 无名管道:只用于父子进程或有亲缘关系的进程之间
  • 命名管道(FIFO):通过文件系统中的特殊文件,可用于任意进程间通信
  • 管道本质是内核中的一个共享缓冲区

三种方式对比

方式速度同步需求适用场景
共享内存最快需同步大量数据、高性能
消息传递中等自动同步分布式、小数据
管道较慢自动同步简单通信、父子进程