• ベストアンサー

キャッシュとバッファの違いは?

はじめまして キャッシュとバッファの違いがよくわからないので 教えてください。 初歩的な質問だと思いますがこちらの方の方がわかる方が多いと思いますのでよろしくお願いします。

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

  • ベストアンサー
回答No.1

両方、物理的にいえばメモリです 意味合いとしても両方、記憶領域になります。 キャッシュは、使用頻度の高いデーターを蓄えておき、即時実行できるようにするメモリ バッファは、処理速度や転送速度の差を補うためにデータを一時的に保存しておくメモリ

netgogo
質問者

お礼

みなさんのおかげで理解ができました。どうもありがとうございました。m(__)m

その他の回答 (7)

  • ultraCS
  • ベストアンサー率44% (3956/8947)
回答No.8

手元に資料がなく記憶だよりなので、自信無しと言うことで、ちょっと別の方向から キャッシュとバッファ、どちらもIBMが起源で、本来は、制御するアルゴリズムが違います。 ただ、キャッシュについては、初期にはIBMがパテントを有していたんだか、非公開だったかしたために、同様の動作をバッファにさせようとしたホストメーカーもあったため、動作や用途が混ざってしまったのです。 IBMのパテントが切れるまでは、キャッシュという名称を使えなかった(と聞く)のが混乱の原因かもしれません。

netgogo
質問者

お礼

みなさんのおかげで理解ができました。どうもありがとうございました。m(__)m

  • a-saitoh
  • ベストアンサー率30% (524/1722)
回答No.7

必ずしも厳密に区別して使われていないですが、本来の(?)区別を言うなら、こういうことかな。 ・読み出しバッファからデータを読み出したら、そのデータはバッファから削除される。がキャッシュからデータを取り出しても、そのデータはキャッシュに残っている(事もあり得る)。 ・バッファはシーケンシャルアクセス、キャッシュはランダムアクセス指向。つまり、バッファは「次のデータを(XXバイト)取り出す」あるいは「データをXXバイト書き込む」という操作しかない。それにたいして、キャッシュは「○○の位置のデータを(XXバイト)読み出す」とか「(XXバイトの)データを位置○○に書き込む」というように位置指定を伴った操作になる。 つまり、キャッシュでは同じ位置のデータを2回読み出すということがあり得て、その場合は、本来の記録装置へのアクセスは1回しか起きないことがあり得ます(2回アクセスすると言っても2回のアクセスの間の時間が長く空いたらキャッシュにデータが残ってないこともある)。

netgogo
質問者

お礼

みなさんのおかげで理解ができました。どうもありがとうございました。m(__)m

回答No.6

元の英単語はこれです。 buffer http://dictionary.goo.ne.jp/search.php?MT=buffer&kind=ej cache http://dictionary.goo.ne.jp/search.php?MT=cache&kind=ej&mode=0&base=1&row=0 で、一時保管ということに関しては同じことですが、buffer の方には緩衝の意味があります。つまりデータがどんどん来るが処理速度が遅いので一時的に貯めておいて後でそこから取り出して処理をする、というような使い方になっている場合が buffer です(PCとプリンタの間に入れるプリンタバッファというのが昔ありましたが、あんな感じです)。 キャッシュの方は一時的に入れておいてすぐに出し入れできるようにしておく場合に使われています(ディスクキャッシュとかキャッシュメモリとか)。これは主に低速なデバイスとの間に作っておいて、OSがそのデバイスとやりとりをする時に一時的にデータを入れておいて、2回目以降もデータが変化していなければキャッシュにあるデータを使用するなどの使用法です。 どちらにしても低速なデバイスとの間に作ることに関しては同じなので愛昧ではありますが、緩衝剤的な使われ方の場合は buffer と呼んでいいと思います。

netgogo
質問者

お礼

みなさんのおかげで理解ができました。どうもありがとうございました。m(__)m

回答No.5

キャッシュは、次に使うかもしれないデータを、速く使えるようにためておくものなので、キャッシュされたデータは「使われないこともあります」 気持ちとしては、「データを使う側」の必要性から確保されるものです。 バッファは、データの準備ができているのに、受け手側が処理できないので、使うはずのデータを一時ためておくところ。 なので、バッファにためられたデータは、エラーでもない限り「使われます」 気持ちとしては、「データを生み出す側」の必要性から確保されるものです。

netgogo
質問者

お礼

みなさんのおかげで理解ができました。どうもありがとうございました。m(__)m

  • a-saitoh
  • ベストアンサー率30% (524/1722)
回答No.4

UNIXではディスクキャッシュのことをバッファキャッシュと呼んだりするくらい両者は似通っているのですが、強いて違いを言うなら、バッファはFIFO動作をするがキャッシュはそうではない、ということかなぁ。

netgogo
質問者

お礼

みなさんのおかげで理解ができました。どうもありがとうございました。m(__)m

noname#25358
noname#25358
回答No.3

 用途は違いますが、考え方や使い方は全く同じです。  キャッシュは、ある特定のデータを一時保管する領域で、比較的小規模な領域を指します。つまり、「必要なデータを必要だから保管する」という意味合いが強いです。  対してバッファは、システムなどがオーバーフローを起こさないように、溢れたデータを保管しておく領域で、比較的大規模な領域を指します。なので「データ量が多すぎるから仕方なく保管する」という意味合いが強くなります。  ゆえに、「ある特定の種類のデータを保管する大規模な領域」という場合、キャッシュもバッファも同じ意味で使われます。

netgogo
質問者

お礼

みなさんのおかげで理解ができました。どうもありがとうございました。m(__)m

回答No.2

http://e-words.jp/w/E38390E38383E38395E382A1.html http://e-words.jp/w/E382ADE383A3E38383E382B7E383A5.html 例えるなら、バッファってのはバケツで、キャッシュってのはコップかな? トイレを流すのに水道の水を流してたんじゃいつまでたっても流れない。「一度に大量に欲しい」。だからバケツに溜めるてから使う。 水を飲むのにいちいちペットボトルに入れてたら「時間がかかってしょうがない」。だからコップを使う。

netgogo
質問者

お礼

みなさんのおかげで理解ができました。どうもありがとうございました。m(__)m