
コンピューティングにおいて、スプーリングは、異なるデバイス間でデータをコピーすることを目的とした、特殊なマルチプログラミングの一種です。現代のシステムでは、通常、コンピュータアプリケーションとプリンタなどの低速周辺機器との間の仲介に使用されます。スプーリングにより、プログラムは周辺機器に処理を「引き渡して」他のタスクに進んだり、入力が転記されるまで処理を開始しないようにすることができます。スプーラーと呼ばれる専用プログラムは、周辺機器用のジョブの順序を維持し、周辺機器自身の速度でデータを供給します。逆に、カードリーダーなどの低速入力周辺機器の場合、スプーラーはデータ待ちの計算ジョブのシーケンスを維持し、関連するすべての入力が利用可能になったときに各ジョブを開始できます(バッチ処理を参照)。スプール自体は、ジョブのシーケンス、またはジョブが格納されている記憶領域を指します。多くの場合、スプーラーは他の処理への影響を最小限に抑えながら、デバイスを定格速度で駆動することができます。
スプーリングは、バッファリングとキューイングを組み合わせたものです。
現在、スプーリングの最も一般的な用途は印刷です。印刷用にフォーマットされたドキュメントは、コンピュータの速度でキューに格納され、その後、プリンタの速度で取得および印刷されます。複数のプロセスは、待機することなくドキュメントをスプールに書き込むことができ、その後、「スプーラー」プロセスがプリンタを操作している間に他のタスクを実行できます。[ 1 ]
例えば、大企業が給与小切手を作成する場合、計算自体は数分、場合によっては数秒で済みますが、印刷には数時間かかることがあります。給与計算プログラムが小切手を直接印刷する場合、すべての小切手が印刷されるまで他の計算に進むことができません。同様に、PCオペレーティングシステムにスプーリング機能が追加される前は、ワープロソフトは印刷中にユーザーとのやり取りを含め、他の処理を一切行うことができませんでした。
スプーラーや印刷管理ソフトウェアには、印刷ジョブに優先順位を割り当てたり、ドキュメントが印刷されたときにユーザーに通知したり、複数のプリンター間で印刷ジョブを分散したり、各ドキュメントに適した用紙を選択したりするなど、さまざまな関連機能が含まれていることがよくあります。
プリントサーバーは、スプーリング技術を用いて、複数のコンピューターが同じプリンターまたはプリンターグループを共有できるようにする。

プリントスプーラー[ b ]は、各ドキュメントおよびジョブの先頭と末尾にバナーページ(バーストページ、ジョブシート、プリンタセパレータとも呼ばれる)を追加するように構成できます。これらのページはドキュメントを互いに区切り、各ドキュメントを識別し(タイトルなど)、多くの場合、誰が印刷したか(ユーザー名やジョブ名など)も示します。バナーページは、少数のプリンタを多くの人が共有するオフィス環境で役立ちます。また、1つのジョブで複数のドキュメントが生成される場合にも役立ちます。構成によっては、バナーページは各クライアントコンピュータ、中央プリントサーバー、またはプリンタ自体で生成される場合があります。
連続用紙を使用するプリンターでは、先頭のバナーページが2枚印刷されることが多く、印刷物を分離する際に常に1枚が表向きになるように配慮されていました。このページには折り目に沿って線が印刷されている場合があり、印刷物の束の端に沿って線が見えるため、オペレーターは印刷物を簡単に分離することができました。また、一部のシステムでは、各印刷物の最後にバナーページが印刷され、ユーザーがすべての印刷物を受け取ったことを確認できるようになっていました。
スプーリングは、パンチカードリーダーやパンチ、磁気テープドライブ、その他の低速なシーケンシャルI/Oデバイスへのアクセスを仲介するためにも使用されます。これにより、アプリケーションはCPUの速度で実行されながら、周辺機器は定格速度で動作させることができます。
バッチ処理システムは、スプーリングを使用して実行準備のできたタスクのキューを維持し、システムがそれらを処理するためのリソースを確保次第、すぐにタスクを開始できるようにします。
uucpなどの一部のストアアンドフォワード型メッセージングシステムでは、受信および送信メッセージキューを指すのに「スプール」という用語を使用しており、この用語は現在でも電子メールやUsenetソフトウェアのドキュメントに見られます。
周辺機器は常にコア処理ユニットよりもはるかに低速でした。これは初期のメインフレームにとって特に深刻な問題でした。例えば、パンチカードを読み取ったり、印刷出力を直接生成したりするジョブは、低速な機械式デバイスの速度で実行せざるを得ませんでした。IBMの「SPOOL System」(7070-IO-076)などの最初のスプーリングプログラムは、パンチカードから磁気テープにデータをコピーし、テープからパンチカードやプリンタにデータを戻しました。 より高速なI/O速度とランダムアクセスをサポートするハードディスクは、1960年代半ばにスプーリングに磁気テープを使用する代わりに使われ始め、1970年代までにはほぼ完全に取って代わりました。
1960年代初頭のIBMメインフレームに搭載されていたユニットレコード装置は処理速度が遅かったため、大規模システムではスプール処理の代わりにIBM 1401のような小型のオフラインコンピュータを使用するのが一般的だった。
「spool」という用語は、Simultaneous Peripheral Operations On-Line [ 2 ] [ 3 ] (SPOOL) ソフトウェアに由来する可能性があるが、[ 4 ]この由来は不確かであり、後付けの頭字語である可能性もある。[ 5 ]別の説明としては、磁気テープの「スプール」またはリール を指しているというものもあるが、「spool」という用法は一般的ではない。