In computing, buffer underrun or buffer underflow is a state occurring when a
buffer used to communicate between two devices or processes is fed with data at a lower speed than the data is being
read from it. This requires the program or device reading from the buffer to pause its processing while the buffer refills. This
can cause undesired and sometimes serious side effects, since the data being buffered is generally not suited to stop-start
access of this kind.
General causes and solutions
The term should not be confused with buffer overflow, a condition where a portion of
memory being used as a buffer has a fixed size but is filled with more than that amount of data. Whereas buffer overflows
are usually the result of programming errors, and thus preventable, buffer underruns are often the result of transitory
issues on the "connection" which is being buffered—either a connection between two processes, with others competing for
CPU time; or a physical link, with devices competing for bandwidth.
The simplest guard against such problems is to increase the size of the buffer—if an incoming data stream needs to be read at 1 bit per second, a buffer of 10 bits would allow the connection to be
blocked for up to 10 seconds before failing, whereas one of 60 bits would allow a blockage of up to a minute. However, this
requires more memory to be available to the process or device, which can be expensive. It also assumes that the buffer starts
full—requiring a potentially significant pause before the reading process begins—and that it will always be full unless the
connection is currently blocked. This latter caveat means that if the data does not, on average, arrive significantly
faster than it is needed, any "blockages" on the connection will be cumulative—so that "dropping" one bit every minute on
our hypothetical connection would lead to the 60-bit buffer underrunning if the connection remained active for an hour.
CD and DVD recording issues
Buffer underruns can cause serious problems during CD/DVD burning, because
once the laser is on, it cannot stop and resume flawlessly; thus the pause needed by the underrun can cause the data on the disc
to become invalid, and thus unusable. Since the buffer is generally being filled from a relatively slow source, such as a
hard disk or another CD/DVD, a heavy CPU or memory load from other concurrent tasks can
easily exhaust the capacity of a small buffer. Therefore, a technique called buffer underrun protection was implemented by various individual CD/DVD writer
vendors, under various trademarks, such as Plextor BurnProof
and Yamaha SafeBurn. With this technique, the laser is indeed able to stop writing
for any amount of time and resume when the buffer is full again. The gap between successive writes is extremely small. [1]
Another way to protect against the problem, when using rewritable media (CD-RW, DVD-RW, DVD-RAM), is to use the
UDF file system, which organizes data in smaller "packets", referenced by a single, updated address table, which can therefore be written
in shorter bursts.
This entry is from Wikipedia, the leading user-contributed encyclopedia. It may not have been reviewed by professional editors (see full disclaimer)