/home/dkramer

David Kramer’s high-entropy blog

Ring Buffers By Example

A ring buffer is a way of storing information from a continuous stream in a fixed-size container.  It’s called a ring buffer (or circular buffer) because conceptually, the two ends are joined.  There’s no beginning or end of the storage.  Imagine you hav a circular table.  There’s a pointer to where on the ring the next bit of data should be added by the data producer, and that pointer works its way around the ring.  But there’s also a pointer to where on the ring the next bit of data should be read by the data consumer, and that pointer works its way around the ring in the same direction, always consuming the oldest data and working its way to the newest data.  If the producer adds data and moves its pointer, and it hits the consumer’s pointer, you have a buffer overrun. The producer gets stressed out and forgetful. There’s data to store and nowhere to put it.  If the consumer reads data and moves its pointer, and it hits the producer’s pointer, you have a buffer underrun.  The consumer has read all the data there is and is starting to get bored and cranky.

In the world of computers, ring buffers are often used to hold data that comes in from an input device for a very short time until it can be processed.  It has the advantage of never needing to dynamically allocate or free memory, which is time-consuming.  The big disadvantage is that “full is full”.  You can’t easily make the ring larger without funky chaining and lookup tables, and then you’ve lost your performance advantage over keeping a pool of memory blocks around and reusing them.

Want to see how this relates to a really cool restaurant? Read on…

Share

Cloud Computing: No Silver Bullet

But first, a rant about silver bullets.  CEOs love them.  Shareholders love them.  Politicians love them.  It’s too bad they are hardly ever real.  The world has a way of keeping itself in balance by using opposing forces and feedback loops (you know, like our government used to).  Sure, we find disruptive advancements in technology, math, and even anthropology, but even these usually have some sort of cost or downside.  While you keep trying to make alchemy work, we’ll just keep on finding significant, but incremental, improvements, and we’ll see who wins.

Read on…

Share

Site info