System V IPC
和POSIX IPC
之间有什么区别?答案 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)
答案 2 :(得分:5)
System V IPC较旧,POSIX IPC较新。但是在某些方面存在一些差异。并不总是Posix比System V更好。
Posix的信号量,队列和共享内存具有Ascii字符串名称,而在System V下,这些名称以整数给出。
如果进程死亡(semop SEM_UNDO标志),System V信号量允许自动释放。 Posix没有这样的东西。
在Linux和FreeBSD上,posix队列有很大的优势,因为mq_open给出的处理程序基本上是文件描述符,可以被轮询/加载/选择/ kqueued。
答案 3 :(得分:-3)
“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