Difference between Buffering & Spooling


Buffering is a method of overlapping the computation of a job with its execution. It temporarily stores input or output data in an attempt to better match the speeds of two devices such as a fast CPU and a slow disk drive. If, for example, the CPU writes information to the buffer, it can continue in its computation while the disk drive stores the information. 

With spooling, the disk is used as a very large buffer. Usually complete jobs are queued on disk to be completed later. A typical example is the spooler for a printer. When a print job is issued, the spooler takes care of it, sending it to the printer if it is not busy, or storing it on disk otherwise. 

The main difference between buffering and spooling is that the latter allows the I/O of one job to overlap the computation of another. Buffering only allows the I/O of a job to overlap with its own computation. 

SPOOL(Simultaneous Peripheral Operations On Line)

Spooling is better than Buffering all the way... In Spooling,CPU Allows overlap of one Job with the computation and output of other job...whereas in Buffering,the CPU overlaps input,output and processing of a single Job. (Job = Program) 
Even in a simple system,the spooler may be reading the input of one job while printing the output of a different job.