組込みソフトウェア開発エンジニアとして、面接するとき、私は常にアプリケーションプログラミングのきっかけとなり、プロセス間通信について話しませんか???
それでは、皆のためにまとめましょう。
プロセス間で通信する7つの方法
- パイプライン:パイプラインは半二重通信方式であり、データは一方向にのみ流れ、関連するプロセス間でのみ使用できます。プロセスの親族関係は通常、父親と息子のプロセスを指します。
- 名前付きパイプFIFO:既知のパイプも半二重通信方式ですが、無関係なプロセス間の通信を可能にします。
- メッセージキューメッセージキュー:メッセージキューは、カーネルに格納され、メッセージキュー識別子で識別されるメッセージのリンクリストです。メッセージキューは、信号伝送情報が少ないという欠点を克服し、パイプラインはフォーマットされていないバイトストリームしか伝送できず、バッファーサイズが制限されます。
- 共有ストレージ:共有メモリ:共有メモリは、他のプロセスからアクセスできるメモリの一部です。この共有メモリは1つのプロセスによって作成されますが、複数のプロセスがアクセスできます。共有メモリは最速のIPC方式であり、他のプロセス間通信方式の低効率のために特別に設計されています。プロセス間の同期と通信を実現するために、セマフォなどの他の通信メカニズムと併用されることがよくあります。
- セマフォ:セマフォは、共有リソースへの複数のプロセスのアクセスを制御するために使用できるカウンターです。他のプロセスもリソースにアクセスしているときに、プロセスが共有リソースにアクセスできないようにするロックメカニズムとしてよく使用されます。したがって、主にプロセス間および同じプロセス内の異なるスレッド間の同期方法として使用されます。
- ソケット:ソケットはプロセス間通信メカニズムでもあり、他の通信メカニズムとは異なり、異なるプロセス間通信に使用できます。
- シグナル(シグナル):シグナルは、イベントが発生したことを受信プロセスに通知するために使用される、より複雑な通信方法です。