処理待ちのデータを一時的にディスクへ蓄えて順番に処理する仕組み
スプーリング(spooling)とは、処理待ちのデータをいったんディスク(補助記憶)の専用領域にためておき、装置が空いた順に取り出して処理する仕組みのことです。この一時保管場所をスプール領域、並んだ処理待ちの列をキュー(待ち行列)と呼びます。
身近な例で考えると、銀行の番号札に似ています。窓口(=プリンタ)は1つしかありませんが、来た人は番号札を取れば、その場でずっと立って待たなくても座って別のことができます。窓口は番号順に1人ずつ呼んで対応します。番号札の列がスプールのキューにあたります。
上のツールで▶ボタンを押すと、3人がそれぞれ印刷を依頼し、ジョブがディスク上のキューに並び、プリンタが先頭から1つずつ取り出して印刷していく流れが見られます。依頼した人は待たずに作業へ戻れる点に注目してください。
スプーリングは「いったんデータをためる」点でバッファリングとよく似ており、混同しやすい用語です。バッファリングとは、速度の違う2つの装置の間にメモリ上のバッファを置き、速度差を吸収する仕組みでした。両者の違いを整理します。
| 項目 | スプーリング | バッファリング |
|---|---|---|
| 置き場所 | 補助記憶(ディスク) | 主記憶(メモリ) |
| 扱う対象 | 複数のジョブ | 1対1のデータの流れ |
| 主な目的 | 装置の共有・順次処理 | 速度差の吸収 |
| 代表例 | プリンタの印刷キュー | CPUとプリンタ間の出力バッファ |
違いを3点でまとめると次の通りです。
・置き場所:スプーリングはディスク、バッファリングはメモリを使う
・扱う対象:スプーリングは複数のジョブ(依頼)、バッファリングは1対1のデータの流れ
・主な目的:スプーリングは装置の共有と順次処理、バッファリングは速度差の吸収
なぜスプーリングはディスクを使うのでしょうか。印刷データは大きく、しかも複数人ぶんが同時にたまる可能性があります。容量の小さいメモリでは溢れてしまうため、大容量のディスクに保存するのです。さらにディスクに保存しておけば、依頼した人がパソコンを閉じても印刷を続けられるという利点もあります。
スプーリングの最も代表的な用途が印刷キュー(プリントスプーラ)です。1台のプリンタを複数の人やアプリで共有するとき、それぞれの印刷データをスプール領域に並べ、依頼した順(先入れ先出し)に印刷します。これにより、印刷内容が混ざることなく、誰も長時間待たされずに済みます。
スプーリングが活躍する場面には次のようなものがあります。
・印刷キュー:複数のジョブを並べて1台のプリンタで順次印刷する
・バッチ処理のジョブ管理:夜間にまとめて実行する処理を順番待ちさせる
・メールの送信待ち:送るメールをいったんためて、サーバが順に送信する
スプーリングの大きな利点は、依頼した側が処理の完了を待たずにすぐ次の作業へ移れることです。印刷ボタンを押した瞬間にデータがスプール領域へ書き出されるので、プリンタが遅くても、依頼した人のパソコンは止まりません。遅い装置に速い装置の足を引っ張らせないという考え方は、バッファリングと共通する大切な発想です。