Data Buffer

What is Data Buffer?

A Data Buffer or a Buffer is where data is stored for a short amount of time, typically in the computer's memory (RAM). The purpose of a buffer is to hold data right before it is used. For example, when you download an audio or video file from the Internet, it may load the first 20% of it into a buffer and then begin to play. While the clip plays back, the computer continually downloads the rest of the clip and stores it in the buffer. Because the clip is being played from the buffer, not directly from the Internet, there is less of a chance that the audio or video will stall or skip when there is network congestion.

Buffering is used to improve several other areas of computer performance as well. Most hard disks use a buffer to enable more efficient access to the data on the disk. Video cards send images to a buffer before they are displayed on the screen (known as a screen buffer). Computer programs use buffers to store data while they are running. If it were not for buffers, computers would run a lot less efficiently and we would be waiting around a lot more.[1]

For example, when a user downloads a video or audio file, a certain percentage of the downloaded file is placed in the buffer and then played. As the clip is played, the device continuously downloads the file and places it in the buffer. Because of this, there is less chance that the video or audio file will stall when network congestion occurs unless, of course, the download rate is so slow that the play speed catches up with it.

As another example, when printing a document, when the PRINT command is invoked by the system or the application, the print data is sent to the buffer and is then transferred to the printer. From there, the printer accesses the information. This frees the computer up to do other tasks while the PRINT command is being performed. One disadvantage to this system is that any data in the buffer during device failure is lost.[2]

Applications of Data Buffers

Buffers are often used in conjunction with I/O to hardware, such as disk drives, sending or receiving data to or from a network, or playing sound on a speaker. A line to a rollercoaster in an amusement park shares many similarities. People who ride the coaster come in at an unknown and often variable pace, but the roller coaster will be able to load people in bursts (as a coaster arrives and is loaded). The queue area acts as a buffer—a temporary space where those wishing to ride wait until the ride is available. Buffers are usually used in a FIFO (first in, first out) method, outputting data in the order it arrived.

Buffers can increase application performance by allowing synchronous operations such as file reads or writes to complete quickly instead of blocking while waiting for hardware interrupts to access a physical disk subsystem; instead, an operating system can immediately return a successful result from an API call, allowing an application to continue processing while the kernel completes the disk operation in the background. Further benefits can be achieved if the application is reading or writing small blocks of data that do not correspond to the block size of the disk subsystem, allowing a buffer to be used to aggregate much smaller read or write operations into block sizes that are more efficient for the disk subsystem, or in the case of a read, sometimes to completely avoid having to physically access a disk.[3]

How Data Buffering Works

One of the basic mechanisms found with a data buffer is the fact that information is processed in a logical sequence. This is sometimes referred to as a first in first out or FIFO buffering. Rather than allowing the system to be overwhelmed by multiple requests, the buffer essentially lines up all requests in the order they are received, processes the first request, and then moves on to the next request in the queue. End users are rarely aware of this process since the requests are managed so rapidly that the system appears to be managing several different tasks simultaneously.

As part of the process, a data buffer performs two key tasks at one time. One task involves writing data into the buffer zone of the memory in preparation for responding to a query. The second task is focused on reading the data, using protocols that aid in making sure the stream of information is arranged properly. Typically, the writing function proceeds at one rate while the reading function takes place at a different rate which helps the two processes to work in tandem without causing any transfer issues.

The use of a data buffer is common with many types of computer-based functions. In the world of telecommunications, buffers help to process audio and other data streams between points, using the read and write functions to keep the transmissions organized and concise. With data communications within a company network, the buffers aid in managing huge amounts of data without corruption of any information as it transmits from a storage area of the memory to the end user. Even with simple tasks such as retrieving documents saved on a hard drive, the data buffer is making sure the information contained in that saved file is protected from corruption during the transfer, and the user will be able to view and work with the document with no trouble.[4]

See Also