• ベストアンサー

C/Sでのメモリの共有

クライアントからの指示でそれに応じてサーバの処理を行わせようとしたいのですが、以前はファイル書き込みでやろうとしていました。が、速度の問題等があるらしくて、メモリを参照するほうがよいのではということで考えております。 まだ初心者なもので、知識がありません。クライアントとサーバ間でメモリの共有をする一般的な方法を教えていただきたいのですが。よろしくお願いいたします。

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

  • ベストアンサー
  • shige_70
  • ベストアンサー率17% (168/946)
回答No.3

クライアントサーバシステムというのは要はマシンを複数用意して処理を分散させて効率化を図ろうというものですから、当然、通常はクライアントとサーバは別のハードウェアと言うことになります。 しかし、メモリというものはそれぞれのハードウェアに張り付いているもので、設置場所が同じで物理的につながっている等でない限り他のマシンのメモリを自マシンのメモリとして扱うというのは不可能です。 それでも他マシンのメモリを参照したいということになると、結局はネットワーク越しにメモリ内容を転送するという処理になってしまい、最終的にはファイルによるやりとりとほとんどパフォーマンスは変わらないでしょう。 つまり、ファイル(外部記憶)よりメモリが早いというのはあくまでひとつのマシン内で完結する場合に限った話だというわけです。 ですから、そのままファイルによるデータ共有としてください。パフォーマンスを改善したい場合は別の視点から検討してみてください。

その他の回答 (2)

  • muyoshid
  • ベストアンサー率72% (230/318)
回答No.2

こんにちわ。 > クライアントとサーバ間でメモリの共有をする一般的な方法 クライアント/サーバが同一マシン上にあるなら、 プロセス間通信の機能を使うのが一般的です。 Unix/Linux であれば、共用メモリ, Windows であれば、マップファイルになります。 クライアント/サーバが別マシンなら、 #1 の方の言われているように、クライアント側で更新した メモリの内容をサーバ側に送ってやるしかありません。 → この場合、ソケットなんか使う事が多いと思います。 (共有と言うより同期ですね)   通常はサーバ側とのメモリの同期はさせずに、リクエストの内容を送信する事が多いと思います。

  • ranx
  • ベストアンサー率24% (357/1463)
回答No.1

> クライアントとサーバ間でメモリの共有をする一般的な方法 一般的にはそんなことはできないと思いますが...。 「情報」を共有するということであれば、一方で更新された情報を 他方に送って、そちらも更新するとか...。 ご質問のケースでは、単にファイルに書き込むのをやめてメモリー上に 確保された領域(予めとっておくとか、malloc()で獲得するとか) 展開すればよいのではないかと思います。共有する必要は無いように 思います。

関連するQ&A

  • 共有メモリについて

    Linux関連でプログラムの作成をしているのですが、 共有メモリについての知識がほとんどありません。 それで 1.共有メモリの最大サイズ(カーネルの設定によると思いますが、デフォルトの値など) 2.共有メモリを使用するさいの排他処理について などがわかる方、もしくは解説したHPなどがありましたらどうか教えてください。 よろしくお願いします。

  • プリンターの共有

     家庭内でサーバ型LANを構築したのですが、クライアントパソコンからプリントすることができなくて困っています。現在完了している設定を下記に書いておきますのでアドバイスください。  [現在の設定状況など] (1)ケーブルなどのは正しく接続されています。 (2)ファイルの共有は正常で、クライアントパソコンからもサーバパソコンからも開くことができます。 (3)サーバのOSはXPでクライアントのOSはMEです。 (4)プリンタドライバはサーバにもクライアントにもインストールし、共有設定も行っています。 (5)各パソコンともワークグループ名など同一に設定してあります。  プリンターは、サーバに直接USB接続しております。サーバからは直接プリントできるのですが、クライアントからは指示をかけることができません。  当方、あまりネットワークの知識がないので困っています。どなたかアドバイスください。

  • 共有メモリをつかうときに・・

    ・共有メモリに入れるデータ(標準入力)をgetchar関数で得ることの問題点ってなんでしょうか。 共有メモリを使う上で注意することは、参照したいデータが他のプロセスによって変えられたりしないこと・・だと習ったのですがそこまではいいでしょうか。 となると、一文字一文字読み込んでいると、その途中でデータが更新されてしまう恐れがある・・ということですかね??

  • 1個のメモリを2個のCPUで共有する方法

    お世話になります。 1個のメモリを2個のCPUで共有する方法について、参考例教えてください。 メモリに画像を取り込み認識するのですが、処理速度向上のため、画像取り込みその他の仕事と、認識を分けてと考えています。 メモリを共有するときに気おつけ無ければならないことも御願いします。 よろしく御願いします。

  • 1個のメモリを2個のCPUで共有する方法

    お世話になります。 1個のメモリを2個のCPUで共有する方法について、参考例教えてください。 メモリに画像を取り込み認識するのですが、処理速度向上のため、画像取り込みその他の仕事と、認識を分けてと考えています。 メモリを共有するときに気おつけ無ければならないことも御願いします。 よろしく御願いします。

  • ファイル共有でXPと7が混在すると7が優先される?

    以下の環境でネットワークを構築しています。  サーバ:Windows Server 2008 R2  クライアント:Windows7とWindowsXPの混在 ファイル共有でサーバーにアクセスし書込み等の処理を行うシステムですが、Windows7とWindowsXPを同時に使用している状況で何らかの処理を実行しようとすると、Windows7で実行する処理が優先されるようで、WindowsXPからの書込みが後回しになってしまいます。 その影響なのかWindows7での処理が完了するまでWindowsXPの画面が砂時計のままフリーズしたような現象になります。 (Windows7の処理が完了するとすぐにWindowsXPも処理が終わる) Windows7を使用せず、WindowsXPのみ使用した場合はそのような現象は起きません。 ファイル共有でWindows7の処理を優先的に書込むような設定などあるのでしょうか? もしお解りになる方がいらっしゃいましたら御教示ください。宜しくお願いします。

  • サーバの共有ファイルを参照

    お聞きしたいのですが、 ローカル環境でサーバの共有ファイルをクライアントが見に行くときにIPアドレスを認識してサーバのファイルを見にいくにはどのように設定すればいいでしょうか? 今はサーバの共有ファイル選択するとユーザ名・パスワードのダイアログが出てサーバのアカウントを入力してから見にいってます。 知識がなくてすいません

  • windowsでのファイル共有

    windows間で以下の方法でファイル共有を試みたのですが、 うまく認識できませんでした。 winxp(クライアント) - win2003Server(サーバー) クライアント ユーザー:user1登録済み サーバ ユーザー:user1登録済み 共有フォルダ:folder1 user1セキュリティ許可済 クライアント側のAとゆうソフトウェアを user1で実行してfolder1内データを編集していた。 今回クライアント/サーバー共にuser2を作成、folder1のセキュリティ許可 を行ったが、user2では参照はできるが編集ができない。user1だと問題ない。 1.サーバの再起動はしていない。(必要でしょうか?) 2.共有フォルダセキュリティはuser1,user2とも許可フルコントロールチェックがついている。 少ない情報で申し訳ありませんが、もし対処方法ご存知の方おりましたら 助言お願いいたします。

  • Accessファイルの共有について

    一台のサーバーPCと数十台クライアントPCでLANを組んでいます。サーバーPCのOSはWindows2003でクライアントはWindoesXP若しくはWindows2000です。 ここで、質問はAccess2000のmdbファイルの共有についてです。 サーバーの共有フォルダーにあるmdbファイルをクライアントで共有で使っているのですがうまく開かないことがあります。具体的には数台のクライアントPCからはサーバーの共有フォルダーをクリックするとログオンパスワードを聞いてきますので入力するとそのフォルダーが開き、mdbファイルをダブルクリックするとファイルが開きます。しかし、他のクライアントPCからはこの方法では開きません。クライアントPCで先にAccess2000を起動させえておき、そこからファイル→開く→マイネットワークと進みます。そしてパスワードを入力してログオン完了後、該当のmdbをクリックすると開きます。 なぜ、このようなことが起こるのかわかりません。後者の方法だとショートカットも張れないし不便を感じています。すべてのクライアントPCから前者の方法でmdbファイルを開きたいのですが何か設定が必要なのでしょうか。 各クライアントPCからサーバーへはPingが通りますのでネットワーク的にも問題はないように思えるのですが、アドバイスお願いできますでしょうか?

  • プリンタの共有ができなくなってしまいました。

    以前はプリンタ、ファイルの共有が出来ていたのにいつの間にかできなくなっていました。 何から直して良いかも分かりません。 どなたかご教授お願いします。 サーバー XP クライアント 98E 有線でルーターにて接続しています。

専門家に質問してみよう