To understand spooling, think of it as the process of reeling a document or task list onto a spool, like thread, so it can be unreeled at a more convenient time. Spooling is useful because devices access data at different rates. The spool buffer provides a waiting station where data can rest while a slower device, such as a printer, catches up. When the slower device is ready to handle a new job, it can read another batch of information from the spool buffer.
The term spool is actually an acronym - it stands for simultaneous peripheral operations online. The idea of spooling originated in the early days of computers, when input was read from punched cards for immediate printing (or for processing, followed by the immediate printing of the results).
Since computers operate at a much faster rate than I/O devices such as printers, it was more effective to store the read-in lines on a magnetic disk until they could be conveniently printed, when the printer was free and the computer wasn't so busy working on other tasks.
The most common form of spooling is print spooling. Documents that are to be printed are placed in a print queue and then printed one at a time as the printer becomes ready for them. Most often, they're printed on a first-come, first-served basis, but some systems allow documents to be prioritized so more important documents can be printed first. Modern printers do have memory buffers of their own, but frequently, they aren't large enough to hold entire documents (or multiple documents), requiring multiple I/O operations with the printer.
Print information for files containing pictures, color or complicated formatting can be very large and can take a long time to fully download to a printer. Since the print queue handles these multiple I/O operations in the background, a user can go on with other tasks while a document is still in the process of printing.
The spooling of documents for printing and batch job requests still goes on in mainframe computers where many users share a pool of resources. With the proliferation of low-cost printers, however, many users have printers of their own and need not share them with others. Even in this case, however, print spooling remains useful, because it allows users to continue working while printing in the background. Spooling even makes it possible to set up multiple print jobs at once without having to wait for each job to complete before starting the next.
In complex work environments where many different types of computers with different operating systems are networked together, it's often possible to set up shared print spooling to common printers. This can become fairly complicated, though, since the data will need to be translated to or from several different formats and often requires third-party software, hardware or consulting services to get everything working smoothly.
While the term spooling most often refers to print spooling, other kinds of data are also spooled in some applications.
Mail spoolers collect e-mail (or other data, such as Usenet newsgroup postings) for delivery at a later time so the sender doesn't need to be connected to the Internet just to compose an e-mail message.
Graphics applications may need to spool data to the hard disk if a computer's RAM can't hold an entire image at once. Similarly, video compression and decompression programs that require a lot of memory may spool data to disk.
There are even occasional applications for spooling input (as opposed to output), but these are relatively rare. Spooling data even occurs among some kinds of automated equipment used in high-tech factories.
Finally, coming full circle, the word spool is sometimes used in a technical context that's rather closer to normal English usage - referring to spools of magnetic tape used for data storage. Some kinds of data tape are unwound into a device before use and thus aren't physically connected to the reels that they're stored on. In this case, spooling refers to the act of winding the tape back onto the physical spool.