90
  1. System V IPC和 和有什么区别POSIX IPC
  2. 为什么我们有两个标准?
  3. 如何决定使用哪些 IPC 功能?
4

4 回答 4

112

两者都有相同的基本工具——信号量、共享内存和消息队列。它们为这些工具提供了稍微不同的界面,但基本概念是相同的。一个显着的区别是 POSIX 为消息队列提供了一些 Sys V 没有的通知功能。(见mq_notify()。)

Sys V IPC 已经存在了更长的时间,这具有一些实际意义——

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

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

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

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

至于为什么有两个标准——POSIX 创建他们的标准是因为他们认为这是对 Sys V 标准的改进。但是,如果每个人都同意 POSIX IPC 更好,那么许多程序仍然使用 Sys V IPC,并且将它们全部移植到 POSIX IPC 需要数年时间。在实践中,这不值得付出努力,因此即使从明天起所有新代码都使用 POSIX IPC,Sys V IPC 也会存在很多年。

如果您不知道更多关于您打算做什么,我们无法告诉您应该使用哪个,但是您在此处获得的答案应该为您提供足够的信息来自行决定。

于 2011-01-04T01:21:17.097 回答
24
  1. 我相信主要区别在于所有 POSIX IPC 都是线程安全的,而大多数 SysV IPC 不是 [ 1 ]。
  2. 因为Unix 战争[ 2 ]。单一 UNIX 规范 (SUS) [ 3 ],又名 POSIX,是为了标准化基于 Unix 的系统上的接口而创建的。
  3. 你可能想要 POSIX。完全取决于您的要求。
于 2011-01-03T09:26:08.203 回答
13

System V IPC 较旧,而 POSIX IPC 较新。但是,在某些方面存在一些差异。Posix 并不总是优于 System V。

  1. Posix 的信号量、队列和共享内存具有 Ascii 字符串名称,而在 System V 下,这些名称以整数形式给出。

  2. 如果进程终止(semop SEM_UNDO 标志),System V 信号量允许自动释放。Posix 没有这样的东西。

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

于 2016-11-15T14:14:56.343 回答
-5
  • Systen V 和 POSIX IPC 是两个不同但相关的同一事物的实现。

“Unix System V,通常缩写为 SysV(通常发音为 - 尽管很少写成 - “系统五”),是 Unix 操作系统的第一个商业版本之一。它最初由美国电话电报 (AT&T) 和1983 年首次发布。”

-维基百科

“POSIX 或“Portable Operating System Interface [for Unix]”是 IEEE 指定的一系列相关标准的名称,用于定义应用程序编程接口 (API)”

-维基百科

  • Systm V 更早出现。POSIX 是从 IEEE 的标准化倡议演变而来的。

  • GNU/Linuxpartially与 POSIX 兼容。使用哪一个取决于您使用此 IPC 的操作系统。大多数供应商都在向POSIX.

Richard Stevens 的 Unix Network Programming: Interprocess Communications v. 2很好地了解了这两个方面。

Unix网络编程

于 2011-01-03T09:13:32.103 回答