当前位置:嗨网首页>书籍在线阅读

01-System V IPC介绍

  
选择背景色: 黄橙 洋红 淡粉 水蓝 草绿 白色 选择字体: 宋体 黑体 微软雅黑 楷体 选择字体大小: 恢复默认

第45章 System V IPC介绍

System V IPC包括三种不同的进程间通信机制。

  • 消息队列用来在进程之间传递消息。消息队列与管道有点像,但存在两个重大差别。第一是消息队列是存在边界的,这样读者和写者之间以消息进行通信,而不是通过无分隔符的字节流进行通信的。第二是每条消息包括一个整型的type字段,并且可以通过类型类选择消息而无需以消息被写入的顺序来读取消息。
  • 信号量允许多个进程同步它们的动作。一个信号量是一个由内核维护的整数值,它对所有具备相应权限的进程可见。一个进程通过对信号量的值进行相应的修改来通知其他进程它正在执行某个动作。
  • 共享内存使得多个进程能够共享内存(即同被映射到多个进程的虚拟内存的页帧)的同一块区域(称为一个段)。由于访问用户空间内存的操作是非常快的,因此共享内存是其中一种速度最快的IPC方法:一个进程一旦更新了共享内存,那么这个变更会立即对共享同一个内存段的其他进程可见。

这三种IPC机制在功能上存在着很大的差异,但把它们放在一起讨论是有原因的。其中一个原因是它们是一同被开发出来的,它们在20世纪70年代后期首次出现在了Columbus UNIX系统中。这是Bell内部实现的一种UNIX,用于运行电话公司记录保存和管理过程中用到的数据库和事物处理系统。在1983年左右,这些IPC机制出现在了主流的System V UNIX系统上——System V IPC的名称由此而来。

将System V IPC机制放在一起讨论的一个更加重要的原因是它们的编程接口都具备一些特征,因此很多同样的概念都适用于所有这些机制。

SUSv3因需遵从XSI而要求实现System V IPC,因此有时候这种机制也被称为XSI IPC。

本章概述了System V IPC机制并详细介绍了所有这三种机制共同具备的特性。后面几个章节将分别对这三种机制进行介绍。

System V IPC是一个通过CONFIG_SYSVIPC选项进行配置的内核选项。