スプールとバッファリングの主な違いは、スプールがデータを一時的にメモリ領域に格納して装置やプログラムが利用できるようにする方式であるのに対し、バッファリングはデータをメモリ領域に一時的に格納しながら他の残りのデータを処理する方式であることです。
スプールでは、あるジョブのIO処理が他のジョブの実行と重なります。
一方、バッファリングでは、あるジョブのIO処理が、同じジョブの実行と重なります。
スプーリングとバッファリングは、どちらもシステム性能の向上に役立ちます。
スプールとは
スプーリングとは、Simultaneous Peripheral Operations onlineの略です。
各種IO(Input-Output)ジョブのデータをバッファに入れる仕組みです。
つまり、デバイスがジョブを受け付けられる状態になるまで、バッファを使ってジョブを保持するのです。
バッファとは、入出力データの転送時にデータを保持するメインメモリ内の領域のことです。
スプールでは、あるジョブの入力を読み出しながら、別のジョブの出力を印刷することが可能である。
図1:スプーリング
例えば、カードリーダーからデータを読み取り、印刷する例を考えてみよう。
まず、カードリーダーである高速デバイスとプリンターである低速デバイスの間にディスクなどのデバイスが存在する。
この2つのデバイスの間には、直接の通信はない。
カードリーダーがデータを送り、プリンターがディスクを経由してデータを受け取る。
ディスクはスプール・バッファとして働く。
遅いデバイスが追いつくまでの間、データを置くための待機所です。
全体として、スプーリングは複数の利点をサポートしています。
それは、システムの性能を向上させます。
CPUとIOデバイスを効率的に働かせることができる。
さらに、マルチプログラミングをサポートします。
バッファリングとは
バッファリングとは、データをメモリ領域に一時的に格納しながら、他の残りのデータを処理することです。
具体的には、以下のようになります。
図2:バッファリング
音楽や映像のストリーミングなど、オンラインバッファリングの状況を想定する。
ファイルの一部をダウンロードし、残りの映像のダウンロードを続けながら再生することで、ユーザーはメディアを見たり聞いたりすることができます。
インターネット接続が高速であれば、メディアを再生する前に数秒間だけバッファリングが必要です。
インターネット接続が十分に高速でない場合は、しばらくバッファリングを使用する必要があります。
全体として、バッファリングは、データストリームの生産者と消費者の間の速度のミスマッチを処理するのに役立ちます。
スプーリングとバッファリングの違い
定義
スプールとは、異なるデバイス間でデータをコピーすることを目的としたマルチプログラミングの特殊な形態です。
これに対し、バッファリングとは、データをメモリ領域に一時的に保存しながら、他の残りのデータを処理することである。
基本情報
スプーリングでは、あるジョブのIO処理が他のジョブの実行と重なります。
バッファリングでは、あるジョブのIO処理が、同じジョブの実行と重なります。
これがスプーリングとバッファリングの主な違いです。
サイズ
スプーリングとバッファリングのもう一つの違いは、サイズです。
スプーリングは巨大なバッファを使用し、バッファリングは限られたメモリ領域を使用します。
効率性
さらに、スプーリングはバッファリングよりも効率的です。
使用方法
さらに、スプーリングは、さまざまなデータアクセス速度を持つ異なるデバイス間でデータを交換するのに役立ちます。
バッファリングは、データストリームの生成者と消費者の間の速度の不一致に適応するのに役立ちます。
したがって、この点もスプーリングとバッファリングの違いと言えます。
結論
スプールとバッファリングの違いは、スプールはデータを一時的にメモリ領域に格納し、デバイスやプログラムが使用できるようにする方法であり、バッファリングはデータを一時的にメモリ領域に格納し、他の残りのデータを処理する方法であることである。
スプールもバッファリングも、全体としてシステムの性能向上に役立っている。