メッセージパッシングと関数呼び出しの比較
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2020/03/28 07:32 UTC 版)
「メッセージ (コンピュータ)」の記事における「メッセージパッシングと関数呼び出しの比較」の解説
メッセージパッシングはプログラム間で情報を受け渡すためのもうひとつの通信方法、つまりCallと対比されるべきである。伝統的なCallにおいては、引数は典型的には一つ以上の汎用レジスタまたは引数のアドレスを内包しているパラメータリストを通じて、"callee" すなわち「呼び出し先」(receiver: 受信者)に渡される。この通信形式はメッセージパッシングと比較して少なくとも三つの大きな違いがある。 合計メモリ使用量 通信速度 ローカリティ メッセージパッシングではどの引数も、新しいメッセージの中にコピーするのに十分なメモリを余計に必要とする。これはオリジナルの引数のサイズの大小によらない。したがって、もし引数のうちのひとつがwebページを記述する10,000オクテットのHTML文字列だとすると、受信プログラム(ローカルプログラムでないならば)に完全にコピーされなければならない(そしてさらに送信されなければならないだろう)。対照的に、callの手法ならば、それぞれの引数に対して4から8バイト分のアドレスしか必要としない。さらに汎用レジスタならば追加の記憶領域はゼロであり、送信時間もゼロである。これはもちろん分散システムでは不可能である。というのも、呼び出し元 (caller) のアドレス空間における(絶対)アドレスは、リモートプログラムでは通常意味をなさないからである。ただし、もしcalleeが前もってcallerのメモリの正確な(少なくとも一部の)コピーを有していたならば、相対アドレスが利用できるかもしれない。
※この「メッセージパッシングと関数呼び出しの比較」の解説は、「メッセージ (コンピュータ)」の解説の一部です。
「メッセージパッシングと関数呼び出しの比較」を含む「メッセージ (コンピュータ)」の記事については、「メッセージ (コンピュータ)」の概要を参照ください。
- メッセージパッシングと関数呼び出しの比較のページへのリンク