circular buffer

An area of memory used to store a continuous
stream of data by starting again at the beginning of the
buffer after reaching the end. A circular buffer is usually
written by one process and read by another. Separate read and
write pointers are maintained. These are not allowed to
pass each other otherwise either unread data would be
overwritten or invalid data would be read.