194

「BUFFER」という言葉をあちこちで見かけますが、それが何であるかを正確に把握することはできません。

  1. 素人の言葉でバッファとは何か説明してください。
  2. いつ使用されますか?
  3. どのように使用されますか?
4

8 に答える 8

358

ボウルからキャンディーを食べていると想像してください。あなたは定期的に1枚を服用します。ボウルがなくなるのを防ぐために、ボウルが空になる前に誰かがボウルを補充するかもしれません。

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

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

于 2009-03-15T18:50:03.657 に答える
115

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


http://en.wiktionary.org/wiki/bufferの定義を平均化すると、アイデアが得られると思います。

私たちが実際に「学校に行くために毎日雪の中を 10 マイルも歩かなければならなかった」という証拠については、TOPS-10 Monitor Calls Manual Volume 1のセクション 11.9「Using Buffered I/O」のブックマーク 11-24 を参照してください。悪夢にうなされている方は読まないでください。

于 2009-03-15T18:46:13.603 に答える
24

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

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

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

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

より複雑なバッファ スキームが使用されています。たとえば、いくつかの有限数のバッファが次から次へと使用される循環バッファです。バッファがすべていっぱいになると、最初のものが再利用されるようにインデックスが「ラップアラウンド」します。

于 2009-03-15T18:58:22.030 に答える
18

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

于 2009-03-15T19:22:05.123 に答える
7

実際には、1 つの定義がないため、それぞれの場合のコンテキストに依存しますが、非常に一般的に言えば、バッファーは何かを一時的に保持する場所です。私が考えることができる最も現実的な例えは、待合室でしょう。コンピューティングにおける単純な例の 1 つは、バッファがデータの一時的な保存に使用される RAM の一部を指す場合です。

于 2009-03-15T18:57:18.927 に答える
2

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

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

于 2009-06-10T07:46:37.023 に答える
2

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

バッファリングには、物事を並行して実行できるようにしたり、IO パフォーマンスを向上させたりするなど、多くの利点があります。

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

C 文字バッファーの例。

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

char *buffer2 = calloc(15, sizeof(char));
于 2009-03-15T18:53:12.260 に答える