45.1 简单总结 Linux IPC 机制

2025/3/8 个人理解:

  • socket:UNIX 域套接字还是网络套接字,这取决于通信进程是否属于同一个主机。
  • 管道:包括匿名管道(pipe 系统调用)和命名管道(fifo 文件)。
  • System V IPC 三大件(POSIX 中也能找到这几个组件的替代物)
    • 信号量
    • 共享内存
    • 消息队列
    • System V IPC 用 key 来访问,本质是命名的,IPC_PRIVATE 只是生成独一无二的名字而已;除了消息队列必须命名之外,POSIX 中其他两个既可以命名也可以匿名。
    • 其他区别见 51 POSIX IPC 介绍
  • mmap:单独用 mmap 可以实现匿名共享内存,但不能解决命名共享内存的问题。POSIX 共享内存可以解决命名共享内存的问题,但是要配合 mmap 才能附加到进程地址空间。mmap 因为很特殊所以单独放出来,没合并到共享内存里面去。
  • 文件锁
  • futex
  • 信号:信息传输效率低,一般用于操作系统给进程通知信息,或者用户交互式干预进程运行。