90
  1. System V IPCとはどう違いPOSIX IPCますか?
  2. なぜ 2 つの基準があるのですか?
  3. どの IPC 関数を使用するかを決定する方法は?
4

4 に答える 4

112

どちらも同じ基本ツール (セマフォ、共有メモリ、およびメッセージ キュー) を備えています。それらは、これらのツールに対してわずかに異なるインターフェイスを提供しますが、基本的な概念は同じです。注目すべき違いの 1 つは、POSIX は Sys V にはないメッセージ キューの通知機能を提供することです。( を参照してくださいmq_notify()。)

Sys V IPC は以前から存在しており、いくつかの実用的な意味があります --

まず、POSIX IPC はあまり広く実装されていません。私は POSIX IPC 用の Python ラッパーを書きました。そのドキュメントには、さまざまなプラットフォームでの POSIX IPC 実装について私が知っていることがリストされています

そのドキュメントにリストされているすべてのプラットフォームで、Sys V IPC は完全に実装されていますが、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 は何年も存続することになります。

何をしようとしているのかをよく知らなければ、どちらを使うべきかはわかりませんが、ここにある回答から、自分で判断するのに十分な情報が得られるはずです。

于 2011-01-04T01:21:17.097 に答える
24
  1. 主な違いは、すべての POSIX IPC がスレッドセーフであるのに対し、ほとんどの SysV IPC はそうではないということだと思います [ 1 ]。
  2. Unix 戦争のため[ 2 ]。Single UNIX 仕様 (SUS) [ 3 ]、別名 POSIX は、Unix ベースのシステムのインターフェイスを標準化するために作成されました。
  3. おそらくPOSIXが必要です。要件にのみ依存します。
于 2011-01-03T09:26:08.203 に答える
13

System V IPC は古く、POSIX IPC は新しいです。ただし、いくつかの側面ではいくつかの違いがあります。必ずしも Posix が System V より優れているとは限りません。

  1. Posix のセマフォ、キュー、および共有メモリには Ascii 文字列名がありますが、System V ではこれらは整数で与えられます。

  2. System V セマフォでは、プロセスが終了した場合に自動的に解放できます (semop SEM_UNDO フラグ)。Posixにはそのようなものはありません。

  3. Linux と FreeBSD では、mq_open によって指定されたハンドラーは基本的に、ポーリング/epolled/selected/kqueued できるファイル記述子であるため、posix キューの大きな利点があります。

于 2016-11-15T14:14:56.343 に答える
-5
  • Systen V と POSIX IPC は 2 つの異なるものですが、同じものの関連する実装です。

「Unix System V は、一般に SysV と略されます (通常は「システム ファイブ」と発音されますが、めったに書かれません)、Unix オペレーティング システムの最初の商用バージョンの 1 つです。もともとは American Telephone & Telegraph (AT&T) によって開発され、 1983年に最初にリリースされました。」

-ウィキペディア

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

-ウィキペディア

  • System V は以前からありました。POSIX は、IEEE による標準化イニシアチブから発展しました。

  • GNU/Linux はpartiallyPOSIX に準拠しています。どちらを使用するかは、この IPC を使用している OS によって異なります。ほとんどのベンダーは に向かっていPOSIXます。

Unix Network Programming: Interprocess Communications v. 2 by Richard Stevensでは、これらの両方について詳しく説明しています。

Unix ネットワーク プログラミング

于 2011-01-03T09:13:32.103 に答える