一、进程间通信目的
1. 数据传输
- 核心需求:一个进程需要将数据发送给另一个进程
- 应用场景:
- 客户端向服务器发送请求
- 生产者 - 消费者模型中的数据处理
- 插件系统与主程序间的数据交换
- 技术要求:可靠性、有序性、数据完整性
2. 资源共享
- 核心需求:多个进程之间共享同样的资源
- 资源类型:
- 硬件资源:打印机、扫描仪
- 软件资源:数据库连接、配置文件
- 内存资源:共享缓存、全局数据结构
- 关键技术:互斥访问、并发控制、死锁避免
3. 通知事件
- 核心需求:进程间状态变化通知
- 典型场景:
- 子进程终止时通知父进程(SIGCHLD 信号)
- 定时器超时通知
- 硬件事件通知(如设备就绪)
- 通信特点:异步、低延迟、轻量级
4. 进程控制
- 核心需求:控制另一个进程的执行
- 应用场景:
- 调试器控制被调试进程
- 进程监控和管理
- 系统服务管理
- 技术实现:拦截系统调用、处理异常、状态监控
二、进程间通信发展历程
1. 管道(1969 年)
- 起源:Unix 操作系统的最早 IPC 机制
- 设计者:Ken Thompson
- 特点:简单、单向的字节流
- 影响:奠定了 Unix"一切皆文件"的哲学基础
2. System V IPC(1983 年)
- 背景:商业 Unix 系统的发展需求
- 包含组件:消息队列、共享内存、信号量
- 特点:功能全面但设计复杂
- 遗留问题:资源泄露、权限管理复杂
3. POSIX IPC(1990 年代)
- 标准化:IEEE POSIX 标准化成果
- 设计理念:简洁、一致、可移植
- 改进点:
- 基于文件系统路径的命名
- 更好的资源管理
- 更现代的 API 设计


