系统V IPC与POSIX IPC

  1. System V IPCPOSIX IPC什么区别?
  2. 为什么我们有两个标准?
  3. 如何决定使用哪些IPCfunction?

两者都有相同的基本工具 – 信号量,共享内存和消息队列。 它们提供的接口与这些工具略有不同,但基本概念是相同的。 一个显着的区别是,POSIX为SysV不提供消息队列的通知function。 (请参阅mq_notify() 。)

Sys V IPC已经有更长的时间了,这有几个实际的含义 –

首先,POSIX IPC的实施不太广泛。 我为POSIX IPC编写了一个Python包装器, 其文档列出了我在各种平台上对POSIX IPC实现的了解 。

在该文档中列出的所有平台上,Sys V IPC完全实现了AFAIK,而您可以看到POSIX IPC没有。

它们相对年代的第二个含义是POSIX IPC是在SysV IPC被使用了一段时间之后devise的。 因此,POSIX API的devise者能够从SysV API的优点和缺点中学习。 因此,POSIX API更简单,更易于使用IMO,我推荐使用SysV API。

我应该注意到,我从来没有运行任何性能testing来比较两者。 我认为旧的API(Sys V)会有更多的时间进行性能调整,但这只是猜测,当然这不是真实世界testing的替代。

至于为什么有两个标准 – POSIX创造了他们的标准,因为他们认为这是对Sys V标准的改进。 但是,如果大家都同意POSIX IPC更好,许多许多程序仍然使用Sys V IPC,并且将它们全部移植到POSIX IPC需要几年的时间。 实际上,即使所有的新代码都使用了POSIX IPC,Sys V IPC也会坚持使用很多年。

我们不能告诉你,你应该使用什么而不知道你打算做什么,但你在这里的答案应该给你足够的信息来决定你自己的。

  1. 我相信主要的区别是所有的POSIX IPC都是线程安全的,而大多数SysV IPC都不是[ 1 ]。
  2. 由于Unix的战争 [ 2 ]。 Single UNIX规范(SUS) [ 3 ],也就是POSIX,是为了标准化基于Unix的系统上的接口而创build的。
  3. 你可能想要POSIX。 完全取决于你的要求。

系统V IPC较旧,POSIX IPC较新。 但是在某些方面有一些差异。 并不总是Posix比系统V好。

  1. Posix的信号量,队列和共享内存都有Asciistring名,而在System V下,它们是用整数给出的。

  2. System V信号量允许在进程死亡时自动释放(semop SEM_UNDO标志)。 Posix没有这样的事情。

  3. 在Linux和FreeBSD上,posix队列有很大的优势,因为mq_open给出的处理函数基本上是可以轮询/ epolled / selected / kqueued的文件描述符。

  • Systen V和POSIX IPC是同一事物的两个不同但相关的实现。

Unix系统V是Unix操作系统的首个商业版本之一,最初是由美国电话电报公司(AT&T)开发的,通常缩写为SysV(通常被称为“System Five”于1983年首次发布。

-Wikipedia

“POSIX”或“便携式操作系统接口[Unix]”是由IEEE规定的用于定义应用程序编程接口(API)的相关标准族的名称“

-Wikipedia

  • Systm V在那里。 IEEE从IEEE的标准化计划中演变而来。

  • GNU / Linux与POSIX partially兼容。 使用哪一个取决于你使用这个IPC的操作系统。 大多数供应商正在向POSIX迈进。

Unixnetworking程序devise:理查德·史蒂文斯(Richard Stevens)的“进程间通信”(Interprocess Communications v。2)

Unixnetworking编程http://ecx.images-amazon.comhttp://img.dovov.comI/51V1DSSA8NL._SL500_AA300_.jpg