# Spooling

Spooling (zu engl. spool „[auf]spulen“; Letzteres zugleich Abkürzung für engl. simultaneous peripheral operations online oder simultaneous peripheral operation on-line – siehe Wortherkunft) ist ein Vorgang z. B. in Betriebssystemen, bei welchem zu bearbeitende Aufträge (etwa Druckaufträge) in einem Puffer oder auf einem externen Datenspeicher gelagert werden, bevor sie der eigentlichen Verarbeitung zugeleitet werden.
Die Grundidee besteht darin, dass der Hauptprozessor durch zusätzliche Hardware für Ein- und Ausgabeoperationen entlastet wird, da durch die Nebenläufigkeit der Ein- und Ausgabeprozesse der Hauptprozessor besser ausgelastet werden kann.

## Weitere Einzelheiten

Die Abarbeitung der im Puffer gehaltenen Druckaufträge durch das verarbeitende System erfolgt als Stapelverarbeitung. Spooling wird vor allem dann verwendet, wenn die Datenausgabe deutlich schneller erzeugt wird, als das Zielgerät die Verarbeitung vornehmen kann.
Durch diese Trennung von Produktion und Weiterverarbeitung oder Ausgabe der Daten ist es möglich, die Auslastung der Teilsysteme zu verbessern. So können die produzierenden Prozesse ohne Verzögerung weiterarbeiten (solange Speicherplatz im Puffer vorhanden ist), obwohl die Verarbeitung der Ausgabe langsamer erfolgt. Das verarbeitende System erledigt dann zurückliegende Aufträge, während das produzierende System bereits neue Aufgaben erledigt.
Typisches Beispiel ist hier die Druckerwarteschlange, in der Druckaufträge gesammelt und nacheinander abgearbeitet werden. Auch Mailserver sammeln zu versendende Mails üblicherweise in einem Spool-Verzeichnis, von dem aus sie dann verschickt werden.
Spooling bietet mehrere Vorteile:

### Geschwindigkeit

    Meist ist die Festplatte schneller als das Ausgabegerät. Dadurch kann die Anwendung zügig fortgesetzt werden, indem der Druckjob auf die Festplatte geschrieben wird, ohne auf die Ausgabe warten zu müssen.

### Mehrfachnutzung von Geräten

    Ein Spooler kann zahlreiche Aufträge für ein Gerät zwischenspeichern. Dadurch können sich z. B. mehrere Personen bzw. Prozesse einen Drucker teilen, ohne sich gegenseitig zu behindern.

### Persistenz

    Ein Spooler löscht seinen Zwischenspeicher nicht zwangsläufig, wenn der Auftrag abgearbeitet ist. Dadurch kann z. B. ein Ausdruck wiederholt werden, wenn das Farbband schlecht war, ohne das Anwendungsprogramm erneut zu starten.

### Spooler

Als Spooler bezeichnet man ein Systemprogramm oder einen Dienst, welcher Aufgaben (z. B. Druckaufträge) von Anwendungsprogrammen in eine Warteschlange setzt und von dort aus an das Ziel (z. B. Drucker) übergibt. Zum Beispiel werden Druckaufträge nicht direkt an einen Drucker geschickt, sondern an den Spooler. Dieses Systemprogramm nimmt die Aufträge der Benutzer entgegen und wartet, bis das Gerät wieder einen Ausdruck verarbeiten kann. Wenn das zugehörige Gerät frei ist, wird im Regelfall der älteste Druckauftrag verarbeitet, bis schließlich alle wartenden Aufträge abgearbeitet sind. Ein guter Spooler ermöglicht es dem Benutzer, die Reihenfolge von Aufträgen in der Warteschlange zu ändern oder Aufträge abzubrechen.
In der Informationstechnik kennt man sowohl den Druckerspooler als auch den Plotterspooler.

### Wortherkunft

Spool wird meist als Abkürzung – oder genauer als Initialwort – der englischen Bezeichnung Simultaneous Peripheral Operation On-Line angesehen (etwa „Gleichzeitiger Gerätebetrieb während der Verarbeitung“). In der Tat war auf Großrechnern der Speicherplatz auf Festplatten und im Hauptspeicher wesentlich teurer als der Speicherplatz auf Magnetbändern, sodass Druckaufträge auf ein Band (oder auf Spulen, engl. spools) geschrieben wurden, das dann vom Drucksystem gelesen wurde. Der Begriff zielt in seiner Bedeutung jedoch auf die Datenausgabe im Hintergrund, also Auf- bzw. Abspulen im übertragenen Sinne, nicht auf physisches Spulen.