スプーリング
スプーリングとは、バッファ、メモリもしくはディスク装置上の特別な領域に出力内容を置き、出力装置が処理を受け付けできる状態になった時に、その領域から装置へと出力を行なう仕組みである。
これは、ミシンの糸繰り機構に似ている。ミシン使用者が糸繰り機構へ縫い糸を置いておくと、ミシンは必要に応じて必要なだけの糸を自動的に引っ張る。
スプーリングをしない場合、CPUは周辺装置にデータを少しずつ送り、周辺装置からの「遅い」応答を待ち続け、いわゆる「付きっ切り」になる状態であった。 スプーリングによって周辺機器が直接アクセスできる領域に出力データを置いておけば、周辺機器が自動的にその領域からデータを取り出し、自分のタイミングで処理するため、CPUが解放されるのである。
スプーリングは、複数の装置が異なる処理速度でデータにアクセスするのに役立つ。 処理速度の遅い装置(大抵は周辺装置)の動作が追い付くまでの間、バッファに出力データを置く。スプーリング対象となる出力データは、(ミシンで縫製作業を行なっている時の布地上の縫い糸目のように)処理待ち行列の端で追加や削除されているだけあり、参照順序の入れ換えや編集はなされていない。また、「CPUより遅い装置」が処理を行っている間、CPUはその処理を待ち続ける必要がなくなり、他の作業に取り組むことができる。
スプーリングは、テープ装置のような、巻き取り機構を備えた記憶装置にも適用できる。
もっとも一般的なスプーリングの適用例は、印刷スプーリングである。印刷スプーリングにおいては、印刷文書はバッファ(通常、ディスク上の領域)に格納され、プリンタは自身の処理できる速度でバッファから印刷文書を引き出す。印刷文書がプリンタから参照可能なバッファに格納されている為、表から目立たない場所で印刷処理が続行されている間、コンピュータ利用者は他のコンピュータ処理を自由に実行できる(プリントサーバを利用することでも、コンピュータ利用者は他のコンピュータ処理を自由に実行できるようになる)。また、スプーリングはコンピュータ利用者に対し、ひとつひとつの印刷ごとに終了を待ち合わせては次の印刷をするよう指定する代わりに、キューへ多数の印刷ジョブを登録できるようにする。
メール転送エージェントによって配達された電子メールおよび、メールユーザーエージェントによって運び上げてもらうのを待っているメールが一時的に格納される記憶域は、時にメールスプールと呼ばれる。同様に、Usenet配信記事の為の記憶領域も、ニューススプールという名称で言及されるもしれない。(UNIX系オペレーティングシステムにおいて、これらの領域は通常、/var/spool ディレクトリに配置される) 他のスプールとは異なり、メールやニュースのスプールは通常、個々のメッセージ単位の参照が可能である。