# Spooling

En informatique, le spooling est une technique qui consiste à mettre des informations dans une file d'attente (spool) avant de les envoyer à un périphérique. Les informations sont mises en attente par un premier processus en même temps qu'un deuxième processus (le spooler) les lit et les envoie au périphérique. Cette technique est utilisée depuis 1960 pour exploiter des périphériques lents tels que les imprimantes, lecteurs de carte perforée, modems,etc..
Le mot spool est à l'origine l'acronyme de simultaneous processing operations on line. Il a été introduit par IBM en 1960, puis est devenu un mot du vocabulaire informatique. Par extension, le spool d'impression désigne le fichier d'édition envoyé au périphérique d'impression. Il regroupe l'ensemble des ordres que l'imprimante doit exécuter pour mener à bien l'impression d'un ou plusieurs documents.
La technique du spooling a été mise en œuvre la première fois dans l'ordinateur IBM 7070. En 2011 de nombreux systèmes d'exploitation comportent un spooler pour les imprimantes. Certaines imprimantes (Hewlett-Packard, Apple) ont un spooler incorporé$^,$.

## La technique

La technique du spooling date de la fin des années 1950 : un processus crée des fichiers, et les met dans une file d'attente (le spool) en même temps qu'un autre processus - le spooler - les envoie au périphérique. Plusieurs processus peuvent créer des fichiers simultanément. Les processus qui créent les fichiers peuvent ainsi effectuer d'autres calculs pendant que les fichiers sont envoyés, ce qui diminue les temps de latence et accélère les opérations.
Les ordinateurs étant beaucoup plus rapides que les périphériques tels que les imprimantes, le fait que les fichiers soient enregistrés temporairement sur le disque dur ou dans une mémoire tampon (anglais buffer) évite que le processus qui crée les fichiers connaisse de longues périodes d'inactivité durant lesquelles il attend sur le périphérique. En 2011 les imprimantes contemporaines comportent souvent une mémoire tampon dans laquelle est retenu le document à imprimer, cette mémoire peut cependant être insuffisante pour retenir la totalité du document et le reste est alors retenu dans le spool.
Le spool d'impression est une file d'attente des documents, généralement enregistrés sur disque dur. Les documents sont envoyés à l'imprimante dans l'ordre de leur arrivée premier entré - premier sorti (anglais first in-first out abr. FIFO), et cet ordre peut être modifié si nécessaire, par exemple un document peut être retenu en vue d'être imprimé en dehors des heures de travail. EMF et Postscript sont des formats de données utilisés pour les documents en attente dans les spool. Les documents peuvent également être enregistrés dans des formats de données propres aux imprimantes tels que PCL ou HPGL des imprimantes Hewlett-Packard.

## Utilisations

Les premières utilisations du spooling avec les imprimantes remontent à 1960. Les différents utilisateurs travaillaient simultanément sur les terminaux d'un même mainframe qui ne comportait qu'une seule imprimante. Plusieurs utilisateurs pouvaient demander d'imprimer en même temps, sans que les pages soient mélangées.
Le spooling est mis en œuvre dans tous les systèmes d'exploitation multitâches pour manipuler les imprimantes. Le spooling permet l'utilisation simultanée de l'imprimante par plusieurs processus en même temps - diverses applications émettent des documents à imprimer, qu'un processus unique, le spooler transmet l'un après l'autre à l'imprimante. LPR et CUPS sont des logiciels de spooler pour les systèmes d'exploitation Unix.
Le spooling est un des services offerts par les serveurs d'impression. Ces serveurs comportent souvent plusieurs files d'attente relatives à différentes imprimantes. Les usagers envoient les documents à imprimer via le réseau puis ceux-ci sont placés dans les files d'attente du serveur. Le serveur d'impression fait ainsi l'intermédiaire unique entre les usagers et les imprimantes.
Le spooling était utilisé avec les lecteurs de cartes perforées. Le spooler lisait en continu les cartes et enregistrait le contenu de chaque carte dans le spool avant que celles-ci soient utilisées par un programme. Le programme lisait alors le contenu de chaque carte depuis le spool. Le spooler et le programme consommateur de cartes étaient exécutés simultanément, ce qui réduisait les temps de latence dus à la lecture des cartes.
Le spooling est également utilisé pour le courrier électronique. Le bureau de poste électronique récupère les messages qui arrivent, puis les place dans des spool où ils resteront jusqu'à ce que le destinataire se connecte pour récupérer son courrier et l'envoyer dans sa boîte postale. Procmail est un spooler pour le courrier électronique