En informática , el spooling es una forma especializada de multiprogramación con el fin de copiar datos entre diferentes dispositivos. En los sistemas contemporáneos, [a] generalmente se usa para mediar entre una aplicación informática y un periférico lento , como una impresora . El spooling permite que los programas "entreguen" el trabajo que debe realizar el periférico y luego procedan a otras tareas, o que no comiencen hasta que se haya transcrito la entrada. Un programa dedicado, el spooler , mantiene una secuencia ordenada de trabajos para el periférico y le suministra datos a su propio ritmo. Por el contrario, para periféricos de entrada lentos , como un lector de tarjetas , un administrador de trabajos de cola puede mantener una secuencia de trabajos computacionales esperando datos, iniciando cada trabajo cuando toda la entrada relevante está disponible; ver procesamiento por lotes . El carrete en sí se refiere a la secuencia de trabajos o al área de almacenamiento donde se llevan a cabo. En muchos casos, el administrador de trabajos de cola puede controlar los dispositivos a su máxima velocidad con un impacto mínimo en otros procesos.
El spooling es una combinación de almacenamiento en búfer y cola .
Hoy en día, el uso más común del spooling es la impresión: los documentos formateados para imprimir se almacenan en una cola a la velocidad de la computadora, luego se recuperan e imprimen a la velocidad de la impresora. Varios procesos pueden escribir documentos en el spool sin esperar y luego pueden realizar otras tareas, mientras el proceso "spooler" opera la impresora. [1]
Por ejemplo, cuando una organización grande prepara cheques de nómina, el cálculo sólo lleva unos minutos o incluso segundos, pero el proceso de impresión puede llevar horas. Si el programa de nómina imprimiera cheques directamente, no podría realizar otros cálculos hasta que se imprimieran todos los cheques. De manera similar, antes de que se agregara el spooling a los sistemas operativos de PC , los procesadores de texto no podían hacer nada más, ni siquiera interactuar con el usuario, mientras imprimían.
El software de gestión de impresión o cola de impresión suele incluir una variedad de funciones relacionadas, como permitir asignar prioridades a los trabajos de impresión, notificar a los usuarios cuando se han impreso sus documentos, distribuir los trabajos de impresión entre varias impresoras, seleccionar el papel adecuado para cada documento, etc.
Un servidor de impresión aplica técnicas de cola para permitir que muchas computadoras compartan la misma impresora o grupo de impresoras.
Las colas de impresión [b] se pueden configurar para agregar una página de encabezado , también llamada página de ráfaga , hoja de trabajo o separador de impresora , al principio y al final de cada documento y trabajo. Estos documentos separan entre sí, identifican cada documento (por ejemplo, con su título ) y, a menudo, también indican quién lo imprimió (por ejemplo, por nombre de usuario o nombre del trabajo ). Las páginas de banner son valiosas en entornos de oficina donde muchas personas comparten una pequeña cantidad de impresoras. También son valiosos cuando un solo trabajo puede producir varios documentos. Dependiendo de la configuración, las páginas de banner pueden generarse en cada computadora cliente, en un servidor de impresión centralizado o en la propia impresora.
En las impresoras que utilizaban formularios continuos plegados en acordeón , una página de título inicial a menudo se imprimía dos veces, de modo que una copia siempre estaría boca arriba cuando se separaran los trabajos. La página podría incluir líneas impresas sobre el pliegue, que serían visibles a lo largo del borde de una pila de resultados impresos, lo que permitiría al operador separar fácilmente los trabajos. Algunos sistemas también imprimirían una página de banner al final de cada trabajo, asegurando a los usuarios que habían recogido toda la impresión.
El spooling también se utiliza para mediar en el acceso a lectores y perforadoras de tarjetas perforadas , unidades de cinta magnética y otros dispositivos de E/S lentos y secuenciales. Permite que la aplicación se ejecute a la velocidad de la CPU mientras opera dispositivos periféricos a su máxima velocidad.
Un sistema de procesamiento por lotes utiliza spooling para mantener una cola de tareas listas para ejecutar, que se pueden iniciar tan pronto como el sistema tenga los recursos para procesarlas.
Algunos sistemas de almacenamiento y reenvío de mensajes, como uucp , utilizaban "spool" para referirse a sus colas de mensajes entrantes y salientes, y esta terminología todavía se encuentra en la documentación del correo electrónico y del software Usenet .
Los dispositivos periféricos siempre han sido mucho más lentos que las unidades de procesamiento centrales. Este fue un problema especialmente grave para los primeros mainframes . Por ejemplo, un trabajo que leía tarjetas perforadas o generaba resultados impresos directamente se veía obligado a ejecutarse a la velocidad de los lentos dispositivos mecánicos. Los primeros programas de cola, como el "Sistema SPOOL" de IBM (7070-IO-076), copiaban datos de tarjetas perforadas a cintas magnéticas y de cintas a tarjetas perforadas e impresoras. Los discos duros , que ofrecían velocidades de E/S más rápidas y soporte para acceso aleatorio , comenzaron a reemplazar el uso de cinta magnética para el spooling a mediados de los años 1960, y en los años 1970 ya lo habían reemplazado en gran medida por completo.
Debido a que el equipo de registro unitario en las computadoras centrales IBM de principios de la década de 1960 era lento, era común que los sistemas más grandes usaran una pequeña computadora fuera de línea, como una IBM 1401, en lugar de spooling.
El término "spool" puede tener su origen en el software de Operaciones Periféricas Simultáneas en Línea [2] [3] (SPOOL); [4] Sin embargo, esta derivación es incierta. Las operaciones periféricas simultáneas en línea pueden ser un backronym . [5] [ verificación necesaria ] Otra explicación es que se refiere a "carretes" o carretes de cinta magnética, aunque "carrete" es un uso poco común.