System V IPC与POSIX IPC

时间:2011-01-03 08:17:38

标签: posix ipc sysv

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

4 个答案:

答案 0 :(得分:94)

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

Sys V IPC已经存在了很长时间,具有一些实际意义 -

首先,POSIX IPC的实施较少。我为POSIX IPC和its documentation lists what I know about POSIX IPC implementations on various platforms编写了一个Python包装器。

在该文档中列出的所有平台上,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也会坚持多年。

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

答案 1 :(得分:18)

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

答案 2 :(得分:5)

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给出的处理程序基本上是文件描述符,可以被轮询/加载/选择/ kqueued。

答案 3 :(得分:-3)

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

“Unix System V,通常缩写为SysV(通常发音为 - 虽然很少编写为”System Five“),是Unix操作系统的第一个商业版本之一。它最初由American Telephone& Telegraph开发。 (AT& T)并于1983年首次发布。“

-Wikipedia

  

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

-Wikipedia

  • Systm V早些时候就在那里。 POSIX由IEEE标准化计划演变而来。

  • GNU / Linux符合POSIX partially。使用哪一个取决于您使用此IPC的操作系统。大多数供应商都在转向POSIX

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

Unix Network Programming http://ecx.images-amazon.com/images/I/51V1DSSA8NL._SL500_AA300_.jpg