Spooling and buffering are techniques used in operating systems to improve performance. Spooling overlaps the input of one job with the computation of other jobs using a disk as a buffer between programs and input/output devices. Buffering stores data temporarily in memory during input and output to allow the CPU and I/O devices to work more efficiently by overlapping their activities. This increases overall system performance.