- ベストアンサー
【c++】共有メモリについて
【c++】共有メモリについて いつもお世話になっています。 共有メモリについて勉強していて、いろいろと調べていて気になったのですが、 「ファイルマッピング」と「メモリマップドファイル」とは 同じものなのでしょうか?全く違うものなのでしょうか? (ちなみに、これらは共有メモリを使用するための1つの方法である、という 認識で宜しいのでしょうか。) また、共有メモリのほうが、ソケット、パイプなどよりも高速アクセスできる 様ですが、どのぐらい高速なのか紹介しているサイトがありましたら 教えて頂けませんでしょうか。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
>「ファイルマッピング」と「メモリマップドファイル」とは同じものなのでしょうか? >全く違うものなのでしょうか? 「ファイルマッピング」は(共有メモリのことと限定すれば)、メモリ空間上に共有アクセス領域を作成することです。 「メモリマップドファイル」は上記により作成された、アクセス領域のことです。 >また、共有メモリのほうが、ソケット、パイプなどよりも高速アクセスできる様ですが、 >どのぐらい高速なのか紹介しているサイトがありましたら 環境により違いますから、厳密に比較しているサイトはないでしょう。 「ソケット」や「パイプ」と「共有メモリ」の一番大きな違いはデータのアクセス段数です。 イメージとして、 ソケットやパイプは 「プロセスA」→(ソケット)→メモリ→(ソケット)→「プロセスB」 共有メモリは 「プロセスA」→メモリ→「プロセスB」 となります。 間に別のプロセスが介在しない分、高速アクセスできる「可能性」があります。 (正確には、メモリコントローラーも解するのでもう少し複雑ですが) 尚、共有メモリはアクセスの高速化は規定できる半面、OSによっては利用を制限されたり、同時多重アクセスでのメモリ内容の正当性の保証等、対策すべき問題も多々あります。
お礼
ご回答有難うございます。 理解できました。 >>また、共有メモリのほうが、ソケット、パイプなどよりも高速アクセスできる様ですが、 >>どのぐらい高速なのか紹介しているサイトがありましたら >環境により違いますから、厳密に比較しているサイトはないでしょう。 厳密でなくても、構いません。 しかしながら、ソケットよりも高速な理由が分かりました。 有難うございました。