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).
2. An electronic device to provide compatibility between two
signals, e.g. changing voltage levels or current capability.