バッファ

バッファ

はじめに

この記事は下記の参考資料を元にした筆者の解釈の記述です。

正確さについては保証されませんので詳しくは下記の参考元をご参照ください。

バッファとは

コンピュータ内部や外部のネットワークには物理的な制約によって処理速度や転送速度のギャップが数多く存在している。

これらのギャップが解消されないまま処理を行おうとするとボトルネックとなる処理でデータが溢れて消えてしまうことになる。

そこで速度差が生じる部分にはそれを吸収・変換する仕組みが必要となる。 そのもっとも一般的な方法がバッファである。

例えばCPU(速い)とRAM(遅い)の間にはキャッシュメモリと呼ばれるバッファ記憶装置が置かれている。

バッファにも当然サイズがあるはずなので変換しきれない量のデータが速い装置から遅い装置に流れるとバッファが溢れる状態になることがある。

フロー制御

バッファが溢れてデータが失われることのないようにフロー制御を行うことがある。 バッファが一杯になった時にフローを中断する仕組みである。 この場合でもどこかにはデータをバッファする必要はあると思う。

TCP/IPの場合はTCPがフロー制御を行う。

TCPのフロー制御

TCPはデータを送る先のコンピュータの状態を見て処理が追いつかなそうな場合にそいつがデータを溢れさせることが無いように制御しながらパケットを送信している。

この場合にTCPがデータを保管しているのはバッファではなく、テンポラリ(tmp)と呼ばれる領域で後で使用するデータを一時保管するための場所である。