System V IPC
和之间有什么区别POSIX IPC
?- 为什么我们有两个标准?
- 如何确定要使用的IPC功能?
System V IPC is well known and commonly used, but the Linux implementation of it is badly broken.
System V IPC
和之间有什么区别POSIX IPC
?System V IPC is well known and commonly used, but the Linux implementation of it is badly broken.
Answers:
两者都有相同的基本工具-信号量,共享内存和消息队列。它们提供的界面与那些工具略有不同,但是基本概念相同。一个显着的差异是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也会存在很多年。
在不了解您打算做什么的情况下,我们无法告诉您应该使用哪个选项,但是您在此处获得的答案应该为您提供足够的信息,以便您自行决定。
System V IPC较旧,POSIX IPC较新。但是,某些方面存在一些差异。Posix并非总是比System V更好。
Posix的信号灯,队列和共享内存具有Ascii字符串名称,而在System V下,它们使用整数编号。
如果进程终止,则系统V信号灯可以自动释放(semop SEM_UNDO标志)。Posix没有这样的事情。
在Linux和FreeBSD上,posix队列有很大的优势,因为mq_open给出的处理程序基本上是文件描述符,可以对其进行轮询/轮询/选择/排队。
“ Unix System V,通常缩写为SysV(通常发音为-尽管很少写为“ System Five”,它是Unix操作系统的第一个商业版本之一。它最初是由美国电话电报公司(AT&T)和于1983年首次发布。”
-维基百科
“ POSIX或“便携式操作系统接口(用于Unix)”是由IEEE指定的一系列相关标准的名称,以定义应用程序编程接口(API)”
-维基百科
Systm V早在那儿。POSIX源自IEEE的标准化倡议。
GNU / Linuxpartially
符合POSIX。使用哪一个取决于您使用此IPC的操作系统。大多数供应商都在朝着POSIX
。
理查德·史蒂文斯(Richard Stevens)撰写的Unix Network Programming:Interprocess Communications v.2很好地介绍了这两种方法。