2011-01-03 25 views
65
  1. System V IPCPOSIX IPCの違いは何ですか?
  2. なぜ2つの基準がありますか?
  3. 使用するIPC機能を決定する方法は?

答えて

78

セマフォ、共有メモリ、メッセージキューの両方に同じ基本ツールがあります。これらのツールは、これらのツールとわずかに異なるインターフェースを提供しますが、基本的な概念は同じです。注目すべき違いの1つは、POSIXがSys Vにないメッセージキューの通知機能をいくつか提供していることです。 Sys V IPCは、実用的な意味合いのカップルを持っている長いの周りされている

mq_notify()を参照してください。) -

まず、POSIX IPCはあまり広く実装されています。POSIX IPC用のPythonラッパーとits documentation lists what I know about POSIX IPC implementations on various platformsを書きました。

このドキュメントに記載されているすべてのプラットフォームで、Sys V IPCは完全にAFAIKに実装されていますが、POSIX IPCは完全に実装されていません。

相対的な年齢の第2の意味は、POSIX IPCがSys V IPCをしばらく使用した後に設計されたことです。したがって、POSIX APIの設計者は、Sys V APIの長所と短所から学ぶことができました。その結果、POSIX APIはより簡単で であり、IMOを使いやすくなりました.Sys V APIよりも推奨されています。

この2つを比較するためにパフォーマンステストを実行したことはありません。私は古いAPI(Sys V)にはパフォーマンス調整のためにもっと多くの時間があったと思うだろうが、それは実際のテストに代わるものではない。

なぜ2つの標準があるのですか?POSIXは、それがSys V標準の改善だと思ったので標準を作成しました。しかし、誰もがPOSIX IPCが優れていることに同意すれば、多くの多くのプログラムがSys V IPCを使用しており、すべてをPOSIX IPCに移植するには数年かかるでしょう。実際には、新しいコードがすべて明日の時点でPOSIX IPCを使用していたとしても、Sys V IPCは長年にわたり固執していました。

あなたが何をしようとしているかについて多くのことを知らずに使用する必要があるとは言えませんが、あなたがここで回答した場合は、自分で決定するのに十分な情報が必要です。

-3
  • SystenのVおよびPOSIX IPCは同じものの二つの異なる、しかし関連の実装です。

「UNIX System Vの、一般的に略さSysVの(通常は発音-もののめったに書かない-として 『』システムファイブ)、Unixオペレーティングシステムの最初の商用バージョンのいずれかである。それはもともとによって開発されましたアメリカ電話&テレグラフ(AT & T)と1983年に最初にリリースされました。

-Wikipedia

「POSIXまたは 『[Unix用]ポータブルオペレーティングシステムインタフェースは、』アプリケーション・プログラミング・インターフェース(API)を定義するためにIEEEによって指定された関連規格の家族の名前です」

-Wikipedia

  • Vが早いたSystm。 POSIXはIEEEの標準化イニシアチブから発展しました。

  • GNU/Linuxは、POSIX準拠のpartiallyです。どちらを使用するかは、このIPCを使用しているOSによって異なります。ほとんどのベンダーは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

+4

質問に記載されているプロセス間コミュニケーションについては何も話しません。 –

15
  1. 私は大きな違いは、ほとんどのSysV IPCは[1]ではありませんが、すべてのPOSIX IPCは、スレッドセーフであるということであると信じています。
  2. のためUnix戦 [2]のため。 シングルUNIX仕様(SUS) [3]、別名POSIXは、Unixベースのシステムでインターフェイスを標準化するために作成されました。
  3. おそらくPOSIXが必要です。お客様の要件にのみ依存します。
4

System V IPCが古いバージョンで、POSIX IPCが新しいバージョンです。しかし、いくつかの点でいくつかの違いがあります。 System Vの下、これらは整数で与えられている間、常にではないのPosixは、System Vの

  1. よりも優れているPosixのためのセマフォ、キューと共有メモリは、ASCII文字列名を持ちます。

  2. System Vセマフォは、プロセスが終了すると自動的に解放されます(semop SEM_UNDOフラグ)。 Posixにはこのようなことはありません。

  3. LinuxとFreeBSDでは、mq_openによって与えられるハンドラは基本的にポーリング/エピロー/選択/キューイングが可能なファイル記述子であるため、posixキューの大きな利点があります。