进程间通信(IPC)详解
1. 进程间通信概述
进程间通信(IPC)是操作系统提供的一系列机制,用于实现同一系统内进程和线程之间的数据共享(如共享内存段)、信息与数据交换(如消息队列)以及对共享资源访问的同步(如信号量)。与基于网络的通信设施(如套接字和RPC接口)不同,IPC主要用于分布式系统内同一系统内的通信。早期的IPC机制源于AT&T Unix System V,大约在1983年引入了对共享内存、信号量和消息队列的支持,这三种IPC机制通常被称为System V IPC。后来,POSIX标准也发展出了类似的IPC特性,如POSIX信号量、共享内存和消息队列。虽然System V和POSIX IPC提供的功能相似,但它们使用不同的API,并且在内核中的实现方式也不同。
除了上述常见的IPC机制外,还有其他一些IPC方式,包括内存映射文件(mmap(2))、命名管道(FIFOs)、Unix域套接字以及Solaris Doors(为同一系统上运行的线程提供类似RPC的功能)。每种IPC方法都有其特定的特点和功能,应用开发者需要根据具体需求选择最合适的机制。
2. 通用System V IPC支持
2.1 通用接口和结构
- xxxid_ds数据结构 :每个IPC设施都有一个包含资源相关信息的数据结构,命名规则在三种接口中保持一致。例如,信号量对应semid_ds,共享内存对应shmid_ds,消息队列对应msgid_ds。
- 键和标识符 :为了在进程间共享IPC资源,进程在发出get调用时必须能够唯一标识资源。IPC
超级会员免费看
订阅专栏 解锁全文
1071

被折叠的 条评论
为什么被折叠?



