バッファ(buffer)

分類
テクノロジ系 ソフトウェア
出る試験
ITパスポート基本情報応用情報
重要度
★★★☆☆

速さの違うもののあいだに置く一時的な置き場。速い側が遅い側を待たずに済む。

もう少し詳しい説明

バッファは、速さや都合の違うもののあいだに置く、一時的な置き場です。

buffer は英語で「衝撃をやわらげるもの」という意味です。鉄道の車両の端に付いている緩衝器も buffer と呼ばれます。じかにぶつけず、あいだで受け止めるところが共通しています。

何が困るのか

バッファが無いとどうなるかから見ます。

印刷を考えてください。プロセッサ(命令を実行する部品)は1秒間に何億回も命令を進められます。いっぽうプリンタは、1枚印刷するのに何秒もかかります。

ここでじかにつなぐと、プロセッサはプリンタが1行受け取るのを待つことになります。待っているあいだ、ほかの仕事は止まります。速い側が、遅い側に合わせることになります。

あいだに置き場を作る

まとめて置く少しずつ印刷プロセッサ速い。待たせたくないバッファいったん置く場所プリンタ遅い。順に受け取る
真ん中の置き場があることで、左は右を待たなくて済みます。左は置き場へ書いたらすぐ次の仕事へ移り、右は置き場から自分のペースで取り出します。速さの違う2つのあいだに挟むのがバッファです。

そこで、あいだに置き場を作ります。

速い側が待たなくなる、これがバッファを置く理由です。

印刷の場合、この置き場に印刷の内容をためておく仕組みをスプーリングと呼びます。印刷を指示したあとすぐに別の作業へ戻れるのは、これが働いているためです。

身のまわりの例

同じ仕組みは、いろいろな場所に入っています。

場面速い側遅い側
印刷プロセッサプリンタ
動画の再生画面に出す処理回線からの受け取り
ファイルの保存プログラムハードディスク
キーボード入力打つ人の手受け取るプログラム

動画を見ているときに出る「読み込み中」は、先の分をバッファにためているところです。回線の速さは一定ではないので、少し先まで貯めておいて、遅くなった瞬間を貯金で乗り切ります。

キーボードの例は、速い側と遅い側が入れ替わっています。プログラムが別の処理で忙しいときに打った文字も、バッファに入っているので消えません。どちらが速いかは、場面によって変わります。

まとめて渡せる、という効き方

待たせないことのほかに、もう1つ利点があります。1回あたりの受け渡しを大きくできることです。

ハードディスクは、1バイト(8ビットぶんのまとまり。半角1文字ぶんにあたる)書くのと1,000バイト書くのとで、かかる時間がほとんど変わりません。読み書きの位置を合わせる動作に時間がかかるためです。

1バイトずつ1,000回渡すと、位置合わせが1,000回起きます。バッファに1,000バイトたまるまで待ってから1回で渡すと、位置合わせは1回で済みます。

キャッシュとの違い

ここが試験で問われるところです。どちらも「あいだに置く」のに、目的が違います。

何のために置くか中身
バッファ速さの差を埋めるため通り過ぎていくデータ
キャッシュメモリまた使うため取っておくデータ

バッファのデータは、渡したら用済みです。印刷し終わった内容を、置き場に残しておく意味はありません。

キャッシュ(一度使ったものを近くに置いておき、次に備える仕組み)のデータは、渡したあとも残します。同じものをまた読むかもしれないためです。

通り道か、置き場か。 ここで分かれます。

中身の並び方

バッファの中では、たいてい入れた順に取り出します。印刷を指示した順に紙が出てこないと困ります。

この「先に入れたものから先に出す」並べ方がキュー(先入先出のデータ構造)です。バッファは場所の話、キューは順番の話で、組み合わせて使われます。

あふれたときに起きること

バッファには決まった大きさがあります。入れる側が速すぎて取り出しが追いつかないと、いっぱいになります。

まともに作られたプログラムは、いっぱいになったら入れる側を待たせます。

いっぽう、大きさを確かめずに書き込んでしまう作りだと、置き場の外まではみ出して書くことになります。これがバッファオーバフローです。はみ出した先には別のデータが置かれているので、プログラムの動きを乗っ取る攻撃に使われます。セキュリティの分野で出てくる用語です。

試験ではこう出る

科目A(旧・午前)のソフトウェア分野(OSの入出力の管理)で出ます。ITパスポートでも出ます。

いちばん多いのは、キャッシュと並べて説明を選ばせる問題です。「速度差を吸収するために一時的にデータを保持する」が答えの向きになります。再利用と書かれていればキャッシュです。

スプーリング(印刷の内容をいったんためておき、装置の空き具合に合わせて送り出す仕組み)は、単独でも出ます。「低速な装置への出力を補助記憶にためて、プログラムを待たせない」という表現が答えになります。

セキュリティの分野では、バッファオーバフローとして出ます。対策は「入力の長さを確かめる」です。バッファそのものの話ではなく、大きさを確かめない作りが原因だと押さえてください。

関連する用語

キュー
先に入れたものから先に出す構造。バッファの中身は、たいていこの形で並ぶ
キャッシュメモリ
よく使うものを近くに置いておく仕組み。目的が「速さの差」ではなく「再利用」の点で違う
オーバーヘッドと多重度
本来の仕事ではない手間。待ち時間を減らす工夫という点でつながる
ターンアラウンドタイムとレスポンスタイム
速さの測り方。バッファを挟むと、全体で片づく量と1件あたりの速さが分かれる

ミニクイズ

バッファの役割の説明として、最も適切なものはどれか。

正解は 3番:速度や処理の間隔が異なる装置やプログラムのあいだにデータを一時的に蓄え、待ち時間を減らす

バッファは、速さや都合の違うもののあいだに置く一時的な置き場です。速い側はバッファへ渡した時点で次の仕事に移れるので、遅い側を待たずに済みます。一度使ったものを近くに置いて次に備えるのはキャッシュで、目的が再利用である点が違います。主記憶を大きく見せるのは仮想記憶、誤りを検出する符号を付けるのはパリティなどの誤り検出で、いずれも別の仕組みです。

間違えた用語の復習リストを見る →

この分野をまとめて解く → システム構成要素とソフトウェアのミニテスト(全28問)

最終更新:2026-11-05