こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

【c++】共有メモリについて

【c++】共有メモリについて

いつもお世話になっています。

共有メモリについて勉強していて、いろいろと調べていて気になったのですが、
「ファイルマッピング」と「メモリマップドファイル」とは
同じものなのでしょうか?全く違うものなのでしょうか?
(ちなみに、これらは共有メモリを使用するための1つの方法である、という
認識で宜しいのでしょうか。)

また、共有メモリのほうが、ソケット、パイプなどよりも高速アクセスできる
様ですが、どのぐらい高速なのか紹介しているサイトがありましたら
教えて頂けませんでしょうか。

投稿日時 - 2010-04-14 23:31:29

QNo.5826720

困ってます

質問者が選んだベストアンサー

>「ファイルマッピング」と「メモリマップドファイル」とは同じものなのでしょうか?
>全く違うものなのでしょうか?
「ファイルマッピング」は(共有メモリのことと限定すれば)、メモリ空間上に共有アクセス領域を作成することです。
「メモリマップドファイル」は上記により作成された、アクセス領域のことです。

>また、共有メモリのほうが、ソケット、パイプなどよりも高速アクセスできる様ですが、
>どのぐらい高速なのか紹介しているサイトがありましたら
環境により違いますから、厳密に比較しているサイトはないでしょう。
「ソケット」や「パイプ」と「共有メモリ」の一番大きな違いはデータのアクセス段数です。
イメージとして、
ソケットやパイプは
「プロセスA」→(ソケット)→メモリ→(ソケット)→「プロセスB」
共有メモリは
「プロセスA」→メモリ→「プロセスB」
となります。
間に別のプロセスが介在しない分、高速アクセスできる「可能性」があります。
(正確には、メモリコントローラーも解するのでもう少し複雑ですが)

尚、共有メモリはアクセスの高速化は規定できる半面、OSによっては利用を制限されたり、同時多重アクセスでのメモリ内容の正当性の保証等、対策すべき問題も多々あります。

投稿日時 - 2010-04-15 09:43:52

お礼

ご回答有難うございます。

理解できました。

>>また、共有メモリのほうが、ソケット、パイプなどよりも高速アクセスできる様ですが、
>>どのぐらい高速なのか紹介しているサイトがありましたら
>環境により違いますから、厳密に比較しているサイトはないでしょう。
厳密でなくても、構いません。
しかしながら、ソケットよりも高速な理由が分かりました。
有難うございました。

投稿日時 - 2010-04-18 20:43:07

このQ&Aは役に立ちましたか?

4人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問