What Is Spooling & Buffering?by Isobel Phillips
In order to process tasks most efficiently, computer systems use various methods to schedule tasks, speed up calculations and improve Web browsing. Spooling, buffering and caching are terms often used interchangeably to describe this type of resource scheduling, although computer science does differentiate between them. All three may be used at the same time with the aim of speeding up computer processes.
Spooling, an acronym of Simultaneous Peripheral Operation On-line (SPOOL), puts data into a temporary working area so it can be accessed and processed by another program or resource. For example, in situations where a resource such as a printer is shared between users, spooling control the tasks efficiently, placing the work to be printed in the temporary area so the printer can access it in the order it was sent. Once the work has been sent to the spooler, the computer is free to continue with other tasks without waiting for the printer to finish processing.
Buffering allows data to be stored temporarily into a reserved area of memory (the buffer). For example, CPUs operate more quickly than disk drives, so placing data into a reserved area of memory while a program is working on it means the program can access it more quickly than if it had to retrieve it from the disk drive every time. Buffering is also used to hold data temporarily while it's being moved from one place to another. For example, a keyboard buffer ensures that your letters appear onscreen in the order in which they were typed. Video buffering allows small sections of a video to download at a time, so you can start watching the video immediately without waiting for the entire movie to download.
Caching is a high-speed storage system that may be a special, reserved section memory (like a buffer) or a separate storage device. For example, when using a browser, Web caching saves elements of the page so that next time you visit the page it will load faster. A program that performs calculations may put the result of earlier calculations into a memory cache so it can be accessed more quickly.
In spooling, the input/output of one job can overlap the computations of another. Buffering allows the input/output of a task to overlap only its own computations and not those of other programs. Caching is used for high-speed data storage and retrieval, although it may access the reserved buffer space to do so.