Content deleted Content added
m lc common nouns, adjusted wikilinks Tags: Visual edit Mobile edit Mobile web edit Advanced mobile edit |
m →Examples: Tag Bare URL PDFs using AutoWikiBrowser |
||
(29 intermediate revisions by 25 users not shown) | |||
Line 1:
{{
{{redirect distinguish|Memory buffer|memory buffer register}}
In [[computer science]], a '''data buffer''' (or just '''buffer''') is a region of a physical memory storage used to temporarily store [[data]] while it is being moved from one place to another. Typically, the data is stored in a buffer as it is retrieved from an [[input device]] (such as a microphone) or just before it is sent to an output device (such as speakers). However, a buffer may be used when moving data between [[Process (computing)|processes]] within a computer. This is comparable to buffers in telecommunication. Buffers can be implemented in a fixed memory ___location in hardware—or by using a virtual data buffer in software, pointing at a ___location in the physical memory. In all cases, the data stored in a data buffer are stored on a [[computer data storage|physical storage medium]]. A majority of buffers are implemented in [[software]], which typically use the faster [[Random-access memory|RAM]] to store temporary data, due to the much faster access time compared with [[hard disk drive]]s. Buffers are typically used when there is a difference between the rate at which data is received and the rate at which it can be processed, or in the case that these rates are variable, for example in a printer spooler or in [[Video hosting service|online video]] [[Streaming media|streaming]]. In the [[distributed computing]] environment, data buffer is often implemented in the form of [[burst buffer]] that provides distributed buffering service.▼
In [[computer science]], a '''data buffer''' (or just '''buffer''') is a region of memory used to store [[data]] temporarily while it is being moved from one place to another. Typically, the data is stored in a buffer as it is retrieved from an [[input device]] (such as a microphone) or just before it is sent to an output device (such as speakers); however, a buffer may be used when data is moved between [[process (computing)|processes]] within a computer, comparable to buffers in telecommunication. Buffers can be implemented in a fixed memory ___location in hardware or by using a virtual data buffer in software that points at a ___location in the physical memory.
A buffer often adjusts timing by implementing a [[Queue (data structure)|queue]] (or [[FIFO (computing and electronics)|FIFO]]) algorithm in memory, simultaneously writing data into the queue at one rate and reading it at another rate.▼
▲
▲A buffer often adjusts timing by implementing a [[
==Applications==
Buffers are often used in conjunction with [[I/O]] to [[computer hardware|hardware]], such as [[disk drives]], sending or receiving data to or from a [[Computer network|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 (computing and electronics)|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,
==Telecommunication buffer==
A buffer [[Subroutine|routine]] or [[data storage device|storage]] [[Recording medium|medium]] used in telecommunications compensates for a difference in rate of flow of [[data]]
Buffers are used for many purposes, including:
* Interconnecting two [[Digital data|digital]] circuits operating at different rates
* Holding data for later use
* Allowing timing corrections to be made on a [[data stream]]
* Collecting [[Binary numeral system|binary]] data bits into groups that can then be operated on as a unit
* Delaying the transit time of a
==Examples==
*The [[BUFFERS (CONFIG.SYS directive)|BUFFERS]] command/statement in [[CONFIG.SYS]] of [[DOS]].
*The buffer between a serial port ([[Universal asynchronous receiver-transmitter|UART]]) and a [[modem]]. The [[COM port]] speed may be 38400 bit/s while the modem may have only a 14400 bit/s [[carrier wave|carrier]].
*The integrated [[disk buffer]] on a hard disk drive,
*The integrated [[Static random-access memory|SRAM]] buffer on an [[Ethernet adapter]].<ref> https://www.intel.com/content/dam/www/public/us/en/documents/datasheets/82576eb-gigabit-ethernet-controller-datasheet.pdf {{Bare URL PDF|date=August 2025}}</ref>
*The [[Windows NT kernel]] also manages a portion of [[main memory]] as the buffer for slower devices such as [[sound card]]s and [[network interface controller]]s.<ref>{{cite web | url=https://learn.microsoft.com/en-us/windows-hardware/drivers/netcx/network-data-buffer-management | title=Network data buffer management - Windows drivers }}</ref><ref>https://learn.microsoft.com/en-us/previous-versions/windows/desktop/ee416820%28v=vs.85%29</ref>
*The [[framebuffer]] on a video card.
==History==
An early mention of a print buffer is the "Outscriber" devised by image processing pioneer Russel A. Kirsch for the [[SEAC (computer)|SEAC computer]] in 1952:<ref>{{Cite journal
| title = SEAC Maintenance Manual: The Outscriber
| journal = National Bureau of Standards Report
| volume = 2794
| date = July 1953
| url = https://www.nist.gov/msidlibrary/doc/kirsch_1953_nbs2794.pdf
| access-date = 2017-07-13
| archive-date = 2020-02-15
| archive-url = https://web.archive.org/web/20200215063219/https://www.nist.gov/msidlibrary/doc/kirsch_1953_nbs2794.pdf
| url-status = dead
}}</ref>
<blockquote>
One of the most important
problems in the design of automatic digital computers is that of getting the calculated results out of the machine rapidly enough to avoid delaying the further progress of the calculations. In many of the problems to which a general-purpose computer is applied the amount of output data is relatively big
</blockquote>
==See also==
* [[Buffer overflow]]
* [[Buffer underrun]]
Line 51 ⟶ 59:
* [[Variable length buffer]]
* [[Optical buffer]]
* [[MissingNo.]], the result of buffer data not being cleared properly in [[Pokémon Red and Blue|''Pokémon Red'' and ''Blue'']]
* [[16550 UART#The 16550 FIFO|UART buffer]]
* [[ENOBUFS]], [[POSIX]] error caused by lack of memory in buffers
|