What is the difference between spooling and buffering, and how are they related, if at all?
Spooling comes from “Simultaneous Peripheral Operation On-line”, which is self-explanatory. Buffering is a general idea which involves using an intermediate entity between two mismatched interacting components in order to reduce the effects of the mismatch. Thus, data buffering uses a storage between two components operating at different speeds to allow both of them to operate without waiting for each other (upto an extent, of course). Buffering is used to implement spooling.