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

10-总结

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

45.9 总结

System V IPC是首先在System V中被广泛使用的三种IPC机制的名称并且之后被移植到了大多数UNIX实现中以及被加入了加入了各种标准中。这三种IPC机制允许进程之间交换消息的消息队列,允许进程同步对共享资源的访问的信号量,以及允许两个或更多进程共享内存的同一个页的共享内存。

这三种IPC机制在API和语义上存在很多相似之处。对于每种IPC机制来讲,get系统调用会创建或打开一个对象。给定一个整数key,get调用返回一个整数标识符用来在后续的系统调用中引用对象。每种IPC机制还拥有一个对应的ctl调用用来删除一个对象以及获取和修改对象的关联数据结构中的各种特性(如所有权和权限)。

用来为新IPC对象生成标识符的算法被设计成将(立即)复用同样的标识符的可能性降到最小,即使相应的对象已经被删除了,甚至是使用同样的key来创建新对象也一样。这样客户端-服务器应用程序就能够正常工作了——重新启动的服务器进程能够检测到并删除上一个服务器进程创建的IPC对象,并且这个动作会令上一个服务器进程的客户端所保存的标识符失效。

ipcs命令列出了当前位于系统上的所有System V IPC对象。ipcrm命令用来删除System IPC对象。

在Linux上,/proc/sysvipc目录中的文件可以用来获取系统上所有System V IPC对象的信息。

每种IPC机制都有一组相关的限制,它们通过阻止创建任意数量的IPC对象来避免系统资源的耗尽。/proc/sys/kernel目录中的各个文件可以用来查看和修改这些限制。

更多信息

在[Maxwell, 1999]和[Bovet & Cesati, 2005]中能够找到System V IPC在Linux上的实现的信息。[Goodheart & Cox, 1994]介绍了System V Release 4中System V IPC的实现。