1. An area of memory used for storing messages. Typically, a buffer will have other attributes such as an input pointer (where new data will be written into the buffer), and output pointer (where the next item will be read from) and/or a count of the space used or free. Buffers are used to decouple processes so that the reader and writer may operate at different speeds or on different sized blocks of data.
There are many different algorithms for using buffers, e.g. first-in first-out (FIFO or shelf), last-in first-out (LIFO or stack), double buffering (allowing one buffer to be read while the other is being written), cyclic buffer (reading or writing past the end wraps around to the beginning).