awakeBird Back-end Dev Engineer

Linux基础(七)一张图了解进程间通信IPC

2018-12-23

该系列文章为《Linux/Unix系统编程手册》的学习笔记,由于该书太过冗长,属于工具书的类别,这里对书中的一些核心内容加以提炼和整理。 书中的编程练习这里不做展示和说明。

这里一张图可以对UNIX系统上所有的IPC工具有一个大概的认识。

  • 数据传输工具:有写入和读取的概念,这些工具在用户内存与内核内存之间存在两次数据传输,一次调用write()系统调用从用户内存到内核内存,一次调用read()从内核内存到用户内存。
  • 共享内存:内核通过将每个进程中的页条目指向同一个RAM分页来实现共享内存。
  • 管道、FIFO以及socket是使用文件描述符实现的,因此可以借助I/O多路复用、信号驱动I/O以及Linux特有的epoll API来判断是否可以在某些文件描述符上执行I/O操作。
  • IPC工具有自己的权限模型,一些工具(如FIFO、socket)位于文件系统中,其权限模型是文件权限掩码。另一些工具(如管道、匿名内存映射)只允许相关进程访问,即调用fork

(End)


Comments

Content