RE:PosixおよびSystem V IPC
-
03-07-2019 - |
質問
-
メッセージキュー、共有メモリ、セマフォの中でどのIPCがネットワークIPCに変換するのが最も簡単で、最も困難です。
-
System V共有メモリをネットワークIPCに、またはPosix共有メモリをネットワークIPCに変換する方が簡単ですか
解決
ヘンリック・グスタフソンが言ったように:
-
メッセージキューは、ネットワークに変換する最も簡単なIPCメカニズムです。セマフォはデータを伝達するようには設計されておらず、共有メモリは通常、セマフォで制御されたアクセス(または同等のメカニズム)を必要とするため、ネットワーク全体はもちろんのこと、単一のマシンでも適切に制御できます。とはいえ、System Vメッセージキューは、おそらく最も広く使用されていないIPCメカニズムです。
-
共有メモリメカニズムの変換はほぼ同様に困難です。注意すべき重要な点は、実際には「ちょうど共有メモリ」を使用することはほとんどないということです。使用中の他の同期ツールもあります。
他のヒント
- メッセージキューで実行する操作は、ソケット操作とほとんど同じマッピングに基づいているため、メッセージキューは断然優れていると思います。
- おそらく同様に難しいことですが、メッセージキューなど、shmの上に、もう少しネットワークフレンドリーな抽象化を実装することをお勧めします。共有メモリは、ネットワーク対応の実装はいくつかありますが、ネットワークにはあまり適していませんが、私が出会ったのは確かに漏れやすい抽象化です。
-
セマフォは実際には通信メカニズムではなく、同期用です。共有メモリはネットワーク経由で使用できます(分散共有メモリ)が、それは非常に困難です実装します。メッセージキューは、ネットワークソケットに直接マップされるため、簡単です。
-
それはおそらくかなり似た難易度でしょう。どちらのAPIも似ていますが、インターフェースが異なります。
(1)。最も簡単なのはメッセージキューで、最も難しいのは共有メモリです。
メッセージキューにはメッセージキューデータ構造体へのポインタが必要なだけだと思います異なるマシン。
(2)。 Posix共有メモリは、System V共有メモリをネットワークIPCに変換するよりも簡単です。
Posixはメモリベースのセマフォと名前付きセマフォの両方をサポートし、カーネルの介入を必要としないのに対し、System VはOSの介入を必要とするためだと思います。