プロが教えるわが家の防犯対策術!

バッファリングの意味は、以下のURLであっていますでしょうか?教えて頂けると幸いです。
https://wa3.i-3-i.info/word110442.html

質問者からの補足コメント

  • では、紙に印刷をするときも、色々なものを溜めておくバッファがあって、そのバッファが一杯になると、やっと、印刷されて、溜まってバッファは不要なので、空にして、また、バッファに溜めていくという事でしょうか?そうやって、1枚目、2枚目とプリンターで印刷していくという事でしょうか?教えて頂けると幸いです。

    No.5の回答に寄せられた補足コメントです。 補足日時:2023/11/24 17:47
  • では、紙に印刷をするときも、色々なものを溜めておくバッファがあって、そのバッファが一杯になると、やっと、印刷されて、溜まってバッファは不要なので、空にして、また、バッファに溜めていくという事でしょうか?そうやって、1枚目、2枚目とプリンターで印刷していくという事でしょうか?教えて頂けると幸いです。

    No.3の回答に寄せられた補足コメントです。 補足日時:2023/11/24 17:48
  • C言語のstdio.hですかね。standard input output、標準入出力のヘッダです。その中のバッファはキーボード入力のバッファです。

    「バッファリングしないと、ストリームに対し、文字を一字づつ読み込みまたは書き込みます。バッファリングすると、書き込みに対しては、文字を受け取り、バッファが満杯になると書き込みます。読み込みに対しては、文字を渡し、バッファが空になると、満たします。
    このバッファリングの意味は何でしょうか?教えて頂けると幸いです。

      補足日時:2023/11/24 17:58

A 回答 (8件)

まだこの話題やってるんだ。


トラックで荷台に小物を1個だけ載せて運ぶより
荷台に小物を満載して運ぶ方が効率がいいということ。

I/Oというのはデータ量に関係なくかかるコスト(仕事量)
が合って、1バイト単位の I/O はとても非効率。
ある程度まとめて扱わないと速度が出ない。

CPUのキャッシュも同じ話で、バッファリングは
至る所で使われている基本技術。
    • good
    • 0

>C言語のstdio.hですかね。



これはブロックI/Oのバッファですね。通常はBUFSIZE 4096バイトだったかと。
キャラクタI/Oはバッファ無しの1バイトI/Oですから、1byte受け取る→1byteの読み書き→・・・のループです。PC側にとても負荷がかかります。
    • good
    • 0

>では、紙に印刷をするときも、色々なものを溜めておくバッファがあって、そのバッファが一杯になると、やっと、印刷されて、溜まってバッファは不要なので、空にして、また、バッファに溜めていくという事でしょうか?そうやって、1枚目、2枚目とプリンターで印刷していくという事でしょうか?教えて頂けると幸いです。



プリンタ専用機と仮定します。

コンピュータからプリンタにデータを送るのは、ネットワークだったりUSBだったり無線だったり、古いものではパラレルケーブルだったりするのですが、大筋、印刷より早い速度です。
バッファがないと、プリンタはPCから受け取ったデータをそのまま印刷します。一発で印刷できずほんの少しです。PCはプリンタに次のデータを送るのですが、バッファが無いと、「待って!」とPCに返答します。プリンタにきた分だけ印刷が終わると、プリンタは「次をください」とPCに返答します。でも、印刷速度の方が遅いので、すぐに「待って!」になります。その繰り返しです。

プリンタにバッファがあると、そのバッファ分だけは受け取ってから「待って!」をします。印刷が進みバッファに空きが出ると、プリンタは「次をください」になります。これはバッファが一杯になるまでで、一杯になると「待って!」です。

仮に印刷に関するデータ量が2MBとしましょう。バッファが500KBだと500KB分だけ受け取り印刷、そこで例えば100KB印刷し終えると、100KB空くので、「100KBください」になります。500KBと100KB×15回のやり取りです。
バッファが2MB以上あると、全部受け取って印刷します。PCに対する「待って!」は発生しません。
    • good
    • 1

URLで解説されている例はストリーミング動画のバッファリングのことですね。

これは見た目にわかりやすいので例示されていると思いますが、単に「バッファリング」と言われた場合にはその目的に応じて様々な実装があります。

まず、bufferですが、bufferingというぐらいですから動詞ですね、辞書には次のように書いてあります。
if a computer buffers information, it holds it for a short while before using it
簡潔ですが、ほぼ完璧な説明であり、これを理解したことを以てバッファリングを理解したと言っても過言ではありません(URLの記事の中にも言葉を変えて書いてありますが)。もちろん、具体的なバッファリングの実装については一切言及されていませんが。

バッファリングする理由はいろいろあります。URLで解説されている例ではユーザが動画再生が妨げられることを嫌うために実装するバッファリングですが、他にもたとえば機械が一度に処理できる情報単位が決まっている(往々にして利用者や外部からの入力量はそのような情報単位より小さかったり、半端な量だったりする)ため、これを機械が処理しやすいように一時的に貯めておくといった実装もあります。あなたがこれまでしてきた一連の質問は、むしろこちらの理由で利用される「バッファ」のことでしょう。
この回答への補足あり
    • good
    • 0

>>結局、URLのサイトの感じで、バッファリングを理解したということでは、ダメなのでしょうか?



前にも書いた通り、半分です。
urlの解説は、タイミングを非同期にする為の方法で有って、メールやsnsは全てurlの解説の通りです。

が、バッファリングには、もう1個意味があります。
例えばディスク書き込み、読み込み。

1000バイトのデータを書き込む場合、
1バイトずつ書き込み命令を発すると、1秒間に数百回書き込み命令が出て、ディスヘッドが1秒間に数百回動く事になってしまって機器を壊してしまう。

そうならない様に、書き込みデータを纏めて256バイトずつ書き込みをやる様にしてます。

読み込みも同じです。
機器の入出力の基本処理部は、バッファリング処理が必須になってます。

何気無く使ってるプリンタ印字処理も、プリンタドライバ側がバッファリング処理を行なってます。
そうしないと、プリンタが壊れてしまうから。
    • good
    • 0
この回答へのお礼

では、紙に印刷をするときも、色々なものを溜めておくバッファがあって、そのバッファが一杯になると、やっと、印刷されて、溜まってバッファは不要なので、空にして、また、バッファに溜めていくという事でしょうか?そうやって、1枚目、2枚目とプリンターで印刷していくという事でしょうか?教えて頂けると幸いです。

お礼日時:2023/11/24 17:44

>結局、URLのサイトの感じで、バッファリングを理解したということでは、ダメなのでしょうか?教えて頂けると幸いです。



基礎としては十分。

そこから入力バッファ、出力バッファに別れ、キューの深さ、キューのサイズ、キューの検索(ハッシュ化とか)、FIFOとか、QoSに話と理解が広がって、ポリシングとかキューイングとか、ウェイティングキューとかに発展していく。
この回答への補足あり
    • good
    • 0

半分合ってます。


別に通信だけでなく、メモリやディスクのデータ読み書きもバッファリングなくしては成立しません。

そうしないと、機器が直ぐに壊れてしまう。
直ぐと言うのは、数分とかのレベルです。
    • good
    • 0
この回答へのお礼

結局、URLのサイトの感じで、バッファリングを理解したということでは、ダメなのでしょうか?教えて頂けると幸いです。

お礼日時:2023/11/23 20:47

コンピュータ用語としては、まぁ合っている。


そもそもの意味としては緩衝器で、入力と出力の間に介在して衝撃を弱めるもの。
    • good
    • 0
この回答へのお礼

結局、URLのサイトの感じで、バッファリングを理解したということでは、ダメなのでしょうか?教えて頂けると幸いです。

お礼日時:2023/11/23 20:47

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A