In computing, SPOOL is a type of buffering. It is used to cater for the speed mismatch between a device and a processor. The most common spooling application is print spooling, which places a task (or 'print job') into a queue for extended or later processing.
Origin of the term
According to Tanenbaum, "SPOOL" is an acronym for simultaneous peripheral operations on-line; for printers: simultaneous peripheral output on line. Possibly the term is influenced by the reel (or spool) of a magnetic tape, the part on which tape is wound for later use. A more modern interpretation of SPOOL comes from the flowchart drawing icon of a spool of thread, which, in IBM terminology, represents the (perhaps) temporary storage of data on a magnetic disk drive, under the control of an operating system task.
In a computer system peripheral equipment such as printers and punched card readers and punches are very slow relative to the performance of the rest of the system. Getting input into and output from the system was quickly seen to be a bottleneck. For example a job which read punched cards or generated printed output directly was forced to run at the speed of the slow mechanical devices.
In the late 1950s and early 1960s, computers used SPOOL software, e.g., IBM "SPOOL System", 7070-IO-076, to copy files from one medium to another: punch card to tape, tape to punch card and tape to printer, with occasional use for card-to-card copying. The introduction of the relatively inexpensive IBM 1401 led to a temporary reduction in the use of SPOOL software, since many large computer installations used a stand-alone 1401 to drive printers and card equipment and process tapes for a larger computer system.
Early mainframe computers had no disk drives and slightly more recent ones had, by current standards, small and expensive hard disks; in later systems offline tape handling and SPOOL use of tape disappeared in favor of disks. Software such as IBM's Attached Support Processor allowed a smaller System/360 to process spool files on disk for one or more larger systems.
The most common spooling application is print spooling: documents formatted for printing are usually stored into an area on a disk and retrieved and printed by a printer at its own rate. Printers typically can print only a single document at a time and require seconds to minutes to do so. With spooling, multiple processes can write documents to a print queue without waiting. As soon as a process has written its document to the spool device, the process can perform other tasks, while a separate printing process operates the printer.
For example, when a city prepares payroll checks, the actual computation may take a matter of minutes or even seconds, but the printing process might take hours. If the program printed directly, computing resources (CPU, memory, peripherals) would be tied up until the program was able to finish. The same is true of personal computers. Without spooling, a word processor would be unable to continue until printing finished. Without spooling, most programs would be relegated to patterns of fast processing and long waits, an inefficient paradigm.
Spooler or print management software allow priorities to be assigned to jobs, notify users when their output has been printed, distribute jobs among several printers, allow forms or paper to be changed, or select it automatically, generate banner pages to identify and separate print jobs, etc.
A batch processing system uses spooling to maintain a queue of ready-to-run jobs which can be started as soon as the system has the resources to process them.
A banner page (also called a burst page, job sheet, or a printer separator), is used in computerized printing in order to separate documents (or "print jobs") from each other and to identify, e.g., the originator of the print request by username, an account number, a bin for pickup. These pages are typically used in office environments where many people share a small number of printers. In some cases, print jobs are sent to a central processing area where messengers take the printouts back to the owner, but the usual practice in modern office environments is for the user to retrieve his or her own documents. The banner page makes it clear who printed each job.
Depending upon the configuration, the banner page may be generated by the print spooler—software running on a computer which buffers and prioritizes print jobs— by a print server—a computer or device that is connected to one or more printers and to client computers over a network— or by the printer itself.
On printers using fanfold continuous forms a leading banner page would often be printed twice, so that one copy could always be face-up when the jobs were separated. The page might include lines printed over the fold, which would be visible along the edge of a stack of printed output, allowing the operator to easily separate the jobs. Some systems would also print a banner page at the end of the job, assuring the user that he had the complete job.
Uses and advantages
The temporary storage area to which E-mail is delivered by a Mail Transfer Agent and in which it waits to be picked up by a Mail User Agent is sometimes called a mail spool. Likewise, a storage area for Usenet articles may be referred to as a news spool. (On Unix-like systems, these areas are usually located in the /var/spool directory.) Mail and news spools usually allow random access to individual messages.
In the later 1960s and early 1970s, computers handled punch cards, and spooling systems such as HASP, FIDO, PATCHES, SHADOW & SHADOW II (primarily teleprocessing, but control program same as PATCHES), POWER, GRASP, and The Spooler found they could benefit batch programs by spooling card input and output. (Some centers directed punch card and printed output to tape for later processing. The term 'spooling' may derive from these reels or 'spools' of tape, although the terms normally used for tape were reel or tape volume; this etymology has not been sourced.)
|Look up spool or spooling in Wiktionary, the free dictionary.|
- Tanenbaum, Andrew S. Modern Operating Systems. 3rd Ed. Pearson Education, Inc., 2008. ISBN 978-0-13-600663-3
- Lundin, Leigh; Stoneman, Don (1977). The Spooler User Guide (2 ed.). Harrisonburg: DataCorp of Virginia.
- "IBM 1401 Restoration Project". Ibm-1401.info. Retrieved 2014-03-29.
- IBM (February 26, 1971). The HASP System, February 26, 1971 HASP II (360D-05.1-014) V3M1. Version 3 Modification Level 1.
- IBM. z/OS V1R9.0 JES2 Introduction. SA22-7535-06.
- DOS/VS POWER/VS Installation and Operations, GC33-5403-1[dead link]
- Virtual Storage Extended / Priority Output Writers, Execution Processors and Input Readers; VSE/POWER - 5686-CF9-03