バッファとはどういう意味ですか?


151

「BUFFER」という言葉はいたるところに見かけますが、正確には何なのかわかりません。

  1. 誰かが素人の言葉でバッファとは何か説明してくれませんか?
  2. いつ使用されますか?
  3. 使い方は?

「バッファ」の名前には若干の違いがあり、物理メモリが保持している物理メモリとその内容に基づいて変化する傾向があることに気付きました。「グラフィックバッファ」のように、ビデオメモリ用の文字配列ですが、ネットワークバッファは通常のRAMにある場合があります。これが標準的なのか、偶然なのかはわかりません。終わりに向かってアイライナの答えに似ています。
スティーブンJ

回答:


268

ボウルからお菓子を食べているとします。定期的に1枚を服用しています。ボウルが空になるのを防ぐため、ボウルが空になる前に誰かがボウルに補充する場合があります。そのため、別のピースを取りたいときは、ボウルにキャンディーが入っています。

ボウルは、あなたとキャンディーバッグの間のバッファーとして機能します。

オンラインで映画を視聴している場合、Webサービスは次の5分程度を継続的にバッファーにダウンロードします。これにより、コンピューターは映画を視聴しているときに映画をダウンロードする必要がなくなります(ハングアップの原因になります)。


93
+1:プロデューサーとコンシューマーが異なるレートで動作する場合、バッファーが必要です。キャンディーは大量に作られますが、少量で消費されます。メーカーから口までのサプライチェーン全体が一連のバッファーです。
S.Lott、2009年

30
史上最高のアナロジー。砂糖を欲しがらせます
カイルメイシー

ここのWebサービスは何ですか?バッファはどこにありますか?Webサービスは映画のホストですか?
Jwan622 2016年

確かな定義。私たちは、それがフリーズしたときにビデオがバッファリングされると言う理由だと思う、と私たちは映画を見ている時にプログレスバーが表示される
レッドM

これはとても素晴らしく、実行可能でシンプルです。
JonasGrønbek

93

「バッファ」という用語は非常に一般的な用語であり、ITまたはCSに固有のものではありません。入力速度と出力速度の違いを緩和するために、一時的に何かを保存する場所です。プロデューサーはコンシューマーよりも高速ですが、プロデューサーは出力を引き続きバッファーに格納できます。コンシューマがスピードアップすると、バッファから読み取ることができます。ギャップを埋めるために、バッファーが中央にあります。


http://en.wiktionary.org/wiki/bufferで定義を平均化すると、そのアイデアは理解できると思います。

「学校に行くには、毎日雪で10マイル歩く必要がある」と本当に証明したことについては、TOPS-10 Monitor Calls Manual Volume 1のセクション11.9「Using Buffered I / O」をブックマーク11-24で参照してください。悪夢に見舞われている場合は読んではいけません。


1
+1この説明の方が好きです。私がキャンディーを愛しているのと同じくらい、キャンディーボウルの例は少しストレッチIMOでした。
アウトロープログラマ

10
はい、「入力速度と出力速度の違いを緩和するために一時的に何かを保存する場所」はそれを完全に要約しています。
チンパンジー

1
簡単な説明ありがとうございます。ただし、添付されているPDFのURLは
無効になっ

20

バッファは、データを保持するために使用されるメモリのチャンクです。最も一般的な意味では、通常、1回の操作で読み込まれ、1つ以上のPerchikの「キャンディボウル」の例で空にされるのは、メモリの単一の塊です。たとえば、Cプログラムでは、次のようになります。

#define BUFSIZE 1024
char buffer[BUFSIZE];
size_t len = ;

// ... later
while((len=read(STDIN, &buffer, BUFSIZE)) > 0)
    write(STDOUT, buffer, len);

... cp(1)の最小バージョンです。ここで、バッファ配列は、read(2)によって読み取られたデータが書き込まれるまで格納するために使用されます。その後、バッファは再利用されます。

より複雑なバッファスキームが使用されています。たとえば、循環バッファでは、有限数のバッファが次々に使用されます。バッファがすべて一杯になると、インデックスが「循環」し、最初のものが再利用されます。


12

バッファとは「一時的なストレージ」を意味します。相互接続されたデバイスとシステムが互いに「同期」していることはめったにないため、バッファはコンピューティングで重要です。したがって、あるシステムから別のシステムに情報が送信されるとき、受信側システムの準備が整うまで待機する必要があります。


6

定義は1つではないため、実際にはそれぞれの状況に依存しますが、一般的に言えば、バッファは一時的に何かを保持する場所です。私が考えることができる最も現実的な世界の類推は、待合室でしょう。計算の簡単な例の1つは、バッファがデータの一時的な保存に使用されるRAMの一部を参照する場合です。


2

バッファは、メモリ(ram / disk)内の一時的なプレースホルダ(多くのプログラミング言語では変数)であり、データをダンプして処理を実行できます。

バッファリングには、並列処理の実行、IOパフォーマンスの向上など、多くの利点があります。

また、バッファオーバーフロー、バッファアンダーフローなど、正しく使用しないと多くの欠点があります。

C文字バッファの例。

char * buffer1 = calloc(5、sizeof(char));

char * buffer2 = calloc(15、sizeof(char));


2

バッファは、さまざまな速度で、またはさまざまな優先度のセットで動作するハードウェアデバイスまたはプログラムプロセスによって共有されるデータ領域です。バッファにより、各デバイスまたはプロセスは、他のデバイスまたはプロセスに遅れることなく動作できます。バッファを効果的にするために、バッファのサイズとデータをバッファに出し入れするためのアルゴリズム。

バッファは「中間点保持場所」ですが、個別のアクティビティの調整をサポートするほどアクティビティの速度を加速するために存在しません。

この用語は、プログラミングとハードウェアの両方で使用されます。プログラミングでは、バッファリングは、通常のファイルまたはデータベースに移動する前に編集またはその他の方法で処理できるように、最終的な目的の場所からデータを選別する必要があることを意味します。


1

バッファは、メモリ(ram / disk)内の一時的なプレースホルダ(多くのプログラミング言語では変数)であり、データをダンプして処理を実行できます。

「バッファ」という用語は非常に一般的な用語であり、ITまたはCSに固有のものではありません。入力速度と出力速度の違いを緩和するために、一時的に何かを保存する場所です。プロデューサーはコンシューマーよりも高速ですが、プロデューサーは出力を引き続きバッファーに格納できます。コンシューマがスピードアップすると、バッファから読み取ることができます。ギャップを埋めるために、バッファーが中央にあります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.