- 違いは何ですか
System V IPC
とはPOSIX IPC
? - なぜ2つの基準があるのですか?
- 使用する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.
回答:
どちらにも同じ基本ツール(セマフォ、共有メモリ、メッセージキュー)があります。これらのツールとは少し異なるインターフェースを提供しますが、基本的な概念は同じです。注目すべき違いの1つは、POSIXがSysVでは提供していないメッセージキューの通知機能をいくつか提供していることです。(を参照してくださいmq_notify()
。)
Sys V IPCは以前から存在しており、実際的な影響がいくつかあります。
まず、POSIXIPCはあまり広く実装されていません。POSIX IPC用のPythonラッパーを作成しました。そのドキュメントには、さまざまなプラットフォームでのPOSIXIPCの実装について知っていることが記載されています。
そのドキュメントにリストされているすべてのプラットフォームで、Sys V IPCは完全にAFAIKで実装されていますが、POSIXIPCは実装されていないことがわかります。
それらの相対的な年齢の2番目の意味は、POSIXIPCがSysVIPCがしばらく使用された後に設計されたことです。したがって、POSIX APIの設計者は、Sys VAPIの長所と短所から学ぶことができました。その結果、POSIX APIはIMOの方がシンプルで使いやすいので、Sys VAPIよりもお勧めします。
2つを比較するためにパフォーマンステストを実行したことは一度もないことに注意してください。古いAPI(Sys V)は、パフォーマンスを調整するためにより多くの時間があったと思いますが、それは単なる推測であり、もちろん実際のテストに代わるものではありません。
2つの標準がある理由については、POSIXは、SysV標準の改善であると考えて標準を作成しました。しかし、POSIX IPCの方が優れていることに全員が同意した場合でも、多くの多くのプログラムがSys V IPCを使用しており、それらすべてをPOSIXIPCに移植するには何年もかかります。実際には、努力する価値はないので、明日現在、すべての新しいコードがPOSIX IPCを使用していても、Sys VIPCは何年も存続します。
何をしようとしているのかをよく知らなければ、どちらを使うべきかはわかりませんが、ここにある答えは、自分で決めるのに十分な情報を提供するはずです。
System V IPCは古く、POSIXIPCは新しいです。ただし、いくつかの側面でいくつかの違いがあります。PosixがSystemVより優れているとは限りません。
Posixのセマフォ、キュー、および共有メモリにはASCII文字列名がありますが、SystemVではこれらは整数で指定されます。
System Vセマフォを使用すると、プロセスが停止した場合に自動的に解放されます(semop SEM_UNDOフラグ)。Posixにはそのようなことはありません。
LinuxとFreeBSDでは、mq_openによって与えられるハンドラーは基本的にポーリング/エポール/選択/ kqueuedできるファイル記述子であるため、posixキューには大きな利点があります。
「UnixSystemVは、一般にSysVと略されます(通常、「System Five」と発音されることはめったにありませんが)、Unixオペレーティングシステムの最初の商用バージョンの1つです。元々はAmerican Telephone&Telegraph(AT&T)と1983年に最初にリリースされました。」
-ウィキペディア
「POSIXまたは「PortableOperatingSystem Interface [for Unix]」は、アプリケーションプログラミングインターフェイス(API)を定義するためにIEEEによって指定された関連標準のファミリの名前です。」
-ウィキペディア
SystmVは以前にそこにありました。POSIXは、IEEEによる標準化イニシアチブから発展しました。
GNU / Linuxはpartially
POSIXに準拠しています。どちらを使用するかは、このIPCを使用しているOSによって異なります。ほとんどのベンダーはに向かっていPOSIX
ます。
Unixネットワークプログラミング:RichardStevensによるInterprocessCommunicationsv。2は、これらの両方をよく調べています。