It is normal for buffers to be used when dealing with hardware. When a keyboard key is pressed, a interrupt is sent. However sometimes the CPU may not be ready to deal with the keyboard stroke and the user hits another key. Instead of loosing that key stroke there is a small buffer. If that buffer over flows, the motherboard will warn the user by making a beep. This beep informs the user that the CPU is not ready to deal with more text. Hard drives also have buffers. One for requests and one for responses. This way the CPU does not have to do things one at a time, but can do things in bulk. These optimizations are necessary to improve overall system performance.

When a hard drive needs to save data the CPU will fill the hard drives buffer. The buffer will be running at a much faster speed than the hard drive. Over time the hard drive will empty the buffer and save the required data. Once the buffer is empty it will send an interrupt to the CPU asking for more data. The CPU will then fill the buffer back up again and so the cycle continues.

When the CPU checks for interrupts it will always run the one with the highest priority. This could be the currently running process.