Linux上のIPC(プロセス間通信)

主な方法のプロセス間通信の下でのLinux

  1. パイプ(パイプ)と名前付きパイプ(名前付きパイプ):パイプが名前のない制限パイプラインを克服するために、名前付きパイプを親族プロセス間通信を有するように使用することができ、従って、機能を有するパイプに加えて、それはまた、無関係可能プロセス間通信。
  2. 信号(シグナル):信号が通知プロセスを受信するためのより複雑な通信モードでは、いくつかのイベントは、プロセスは、プロセス自体にシグナルを送ることができ、プロセス間通信を除いて、発生したされ、Linuxの初期の信号Unixのセマンティクス機能シーガルをサポートに加えて、しかし、信号は、sigaction関数のセマンティクスは、(実際に、機能は、BSD、信頼できる信号機構を実現するだけでなく、外部のインタフェースを統一するために、信号の機能を再実装するためには、sigaction関数を使用BSD順序に基づいている)POSIX.1標準に準拠サポート。
  3. メッセージ(メッセージ)キュー(メッセージキュー):メッセージ・キュー・テーブルは、メッセージキューのPosixシステムVメッセージキューを含む、メッセージをリンクされています。キューにメッセージを追加することができ、十分な権利のプロセスを持っている、あなたはキュー内のメッセージを読んで行くことができるプロセスの読み取り権限を与えられました。信号は、メッセージキューは、少量の情報を克服ベアリングのみ搬送パイプ無地バイトストリームバッファのサイズが制限され、そして他の欠点。
  4. 共有メモリ:複数のプロセスが同じメモリ空間にアクセスすることができることができ、利用できるIPCの最速の形です。他の通信機構のための効率的な設計ではありません。しばしば、そのような他の通信機構と組み合わせてセマフォとして、プロセス間の同期や相互排除を達成します。
  5. セマフォ(セマフォ):主にプロセス間の同期化の手段としてだけでなく、同じプロセス内の異なるスレッド間。
  6. ソケット(ソケット):より一般的なプロセス間通信メカニズムが異なるマシン間のプロセス間通信のために使用することができます。もともとはBSD Unixシステム支店によって開発されたが、それらは一般的に他のUnixライクなシステムに移植されました:LinuxとSystem Vのサポートソケットをバリアント。

マルチスレッドおよびマルチプロセスの間の差

  • プロセス:プログラム実行の動的プロセス。
  • スレッド:実行可能コードのディスパッチ・ユニット。
  • マルチプロセス:Linuxは、子プロセスを作成するために、フォーク機能によって作成されたプロセスは、親プロセスのtask_struct構造の完全なコピーで、子プロセスをスタックする物理ページを割り当てます。もちろん、私は単純に、レプリケーション・プロセスを作成するプロセスとして理解することができます。
  • マルチスレッド:私たちは川に例えプロセスを置けばLinuxは、その後、川のセクションの小片をスライスこれらの河川の多くは、スレッドの一つと考えることができます。スレッドベースのマルチタスク環境では、すべてのプロセスには、少なくとも1つのスレッドを持っているが、彼らは複数のタスクを持つことができます。これは、単一のプログラムを同時実行を実現するために、同時に二つ以上のタスクを実行できることを意味します。
  • マルチプロセスとマルチスレッドは、比較:マルチプロセスがマルチスレッドよりも高いオーバーヘッドを持っていますまず第一に、私たちは知っている川と川のカットから、このビューをコピーを分割することができます。大CPU集約型操作の場合よりもマルチスレッドマルチプロセスよりよいです。もちろん、以来、複数のスレッドは、同じプロセスに属しているので、それらの間の直接共有メモリアドレスが、マルチプロセスのために、特定の方法を介したデータ転送のために必要です。システムのパフォーマンスを向上させるためのプロセスは限り十分に強力なCPUとメモリの作成があるとして、プロセスが影響を受けない、理論的には制限はありません。しかし、マルチスレッドのために、自分のシステムの性能向上には限界がある、でもスレッドで作成され、一定の限界値に達した後、パフォーマンスは向上しませんが、システム全体のパフォーマンスを低下させることだけではなく、同時マルチスレッディングソロ同じ数もCPUスケジューリングにいくつかの問題をもたらすでしょう。
  • キャラクタリゼーション:

  • 長所と短所:

 

おすすめ

転載: www.cnblogs.com/lijiahaoAA/p/10960240.html