Category: 

What Is a Circular Buffer?

Article Details
  • Written By: Lakshmi Sandhana
  • Edited By: PJP Schroeder
  • Last Modified Date: 07 November 2016
  • Copyright Protected:
    2003-2016
    Conjecture Corporation
  • Print this Article
Free Widgets for your Site/Blog
President Richard Nixon had an entire speech prepared in case the Apollo 11 astronauts became stranded on the Moon.  more...

December 8 ,  1965 :  Pope Paul VI promulgated Vatican II into ecumenical law.  more...

A circular buffer is either a type of hardware circuit or an area of computer memory that is used to store incoming information. It is a fixed-size buffer and can be understood as a data structure that uses a buffer as if it were linked from one end to the other. It is called a circular buffer because it gives the appearance of circularity. Adding more information when the buffer is full causes it to overwrite the first element stored in the buffer. It is also called a ring buffer or a cyclic buffer.

An easy way to understand a circular buffer is to imagine a line in a bus station. Data is always added to one end of the line and is always removed from the other end. The head of the line is always the slot into which information is added; the tail end of the line is the place from which information is removed. The tail and head give the appearance of being next to each other in the implementation in this type of buffer, though the buffer is, in actuality, just a block of memory. Unlike the line in a bus station, though, the size of the buffer is fixed, and it has a certain maximum capacity.

Ad

This means, when the buffer is full, it begins to overwrite data at the head. The maximum capacity of the buffer has to be set beforehand, and while this number might be altered at any time, all the existing data present in the buffer will be lost. Typically, sequential processes use cyclic buffers to exchange information, and the data entered by the one process is read by the other. The first process, called the producer, places data into the buffer, and the second process, known as the consumer, takes it out. Routines also use cyclic buffers for storing data temporarily.

The most advantageous attribute of a circular buffer is the way it stores data. Data isn't shuffled around when an object at the end of the line is removed. If the buffer were noncircular, all the data elements present in the buffer would have to shift positions when data was removed. A circular buffer can be thought of as a First In First Out (FIFO) type of buffer, while a standard buffer resembles a Last In First Out (LIFO) type of buffer.

As the circular buffer stores data in contiguous regions of memory, it enables random access of data quickly. This type of buffer is easy to debug and is extremely efficient. It serves as a cache area for storing a certain number of the last-included data. It's also possible to very quickly insert and remove data from both ends, making it ideal for numerous applications.

Ad

You might also Like

Recommended

Discuss this Article

Post your comments

Post Anonymously

Login

username
password
forgot password?

Register

username
password
confirm
email