- ベストアンサー
C/Sでのメモリの共有
クライアントからの指示でそれに応じてサーバの処理を行わせようとしたいのですが、以前はファイル書き込みでやろうとしていました。が、速度の問題等があるらしくて、メモリを参照するほうがよいのではということで考えております。 まだ初心者なもので、知識がありません。クライアントとサーバ間でメモリの共有をする一般的な方法を教えていただきたいのですが。よろしくお願いいたします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
クライアントサーバシステムというのは要はマシンを複数用意して処理を分散させて効率化を図ろうというものですから、当然、通常はクライアントとサーバは別のハードウェアと言うことになります。 しかし、メモリというものはそれぞれのハードウェアに張り付いているもので、設置場所が同じで物理的につながっている等でない限り他のマシンのメモリを自マシンのメモリとして扱うというのは不可能です。 それでも他マシンのメモリを参照したいということになると、結局はネットワーク越しにメモリ内容を転送するという処理になってしまい、最終的にはファイルによるやりとりとほとんどパフォーマンスは変わらないでしょう。 つまり、ファイル(外部記憶)よりメモリが早いというのはあくまでひとつのマシン内で完結する場合に限った話だというわけです。 ですから、そのままファイルによるデータ共有としてください。パフォーマンスを改善したい場合は別の視点から検討してみてください。
その他の回答 (2)
- muyoshid
- ベストアンサー率72% (230/318)
こんにちわ。 > クライアントとサーバ間でメモリの共有をする一般的な方法 クライアント/サーバが同一マシン上にあるなら、 プロセス間通信の機能を使うのが一般的です。 Unix/Linux であれば、共用メモリ, Windows であれば、マップファイルになります。 クライアント/サーバが別マシンなら、 #1 の方の言われているように、クライアント側で更新した メモリの内容をサーバ側に送ってやるしかありません。 → この場合、ソケットなんか使う事が多いと思います。 (共有と言うより同期ですね) 通常はサーバ側とのメモリの同期はさせずに、リクエストの内容を送信する事が多いと思います。
- ranx
- ベストアンサー率24% (357/1463)
> クライアントとサーバ間でメモリの共有をする一般的な方法 一般的にはそんなことはできないと思いますが...。 「情報」を共有するということであれば、一方で更新された情報を 他方に送って、そちらも更新するとか...。 ご質問のケースでは、単にファイルに書き込むのをやめてメモリー上に 確保された領域(予めとっておくとか、malloc()で獲得するとか) 展開すればよいのではないかと思います。共有する必要は無いように 思います。