Введение

Память, используемая временно при передаче данных

В информатике буфер данных (или просто буфер) — это область памяти, используемая для временного хранения данных во время их перемещения из одного места в другое. Обычно данные сохраняются в буфере при получении от устройства ввода (например, микрофона) или непосредственно перед отправкой на устройство вывода (например, динамики). Однако буфер может использоваться и при перемещении данных между процессами внутри компьютера, что сопоставимо с буферами в телекоммуникациях. Буферы могут быть реализованы в фиксированном месте памяти аппаратно или с помощью виртуального буфера данных в программном обеспечении, указывающего на область в физической памяти. Во всех случаях данные, хранящиеся в буфере, располагаются на физическом носителе. Большинство буферов реализованы программно, обычно используя более быструю оперативную память для временного хранения данных из-за значительно меньшего времени доступа по сравнению с жесткими дисками. Буферы обычно применяются, когда существует разница между скоростью получения данных и скоростью их обработки, или когда эти скорости непостоянны, например, в спулере принтера или при онлайн-видеопотоковой передаче. В распределённых вычислительных системах буфер данных часто реализуется в виде burst buffer, предоставляющего распределённую буферную службу. Буфер часто корректирует временные характеристики, реализуя алгоритм очереди (или FIFO) в памяти, одновременно записывая данные в очередь с одной скоростью и считывая их с другой.

Приложения

Буферы часто используются совместно с вводом/выводом к аппаратному обеспечению, такому как дисковые накопители, отправка или прием данных по сети, или воспроизведение звука через динамик. Аналогию можно провести с очередью на аттракцион в парке развлечений. Люди приходят в неизвестном и часто непостоянном темпе, но аттракцион способен загружать посетителей группами (по мере прибытия и загрузки вагонов). Зона ожидания выполняет роль буфера – временного пространства, где желающие покататься ждут, пока аттракцион будет свободен. Буферы обычно используются по принципу FIFO (первый пришел – первый ушел), выдавая данные в порядке их поступления. Буферы могут повысить производительность приложений, позволяя синхронным операциям, таким как чтение или запись файлов, завершаться быстро, вместо блокировки в ожидании аппаратных прерываний для доступа к физической подсистеме диска. Вместо этого операционная система может немедленно вернуть успешный результат вызова API, позволяя приложению продолжить обработку, пока ядро завершает операцию с диском в фоновом режиме. Дополнительные преимущества достигаются, когда приложение читает или записывает небольшие блоки данных, не соответствующие размеру блока подсистемы диска. В этом случае буфер может использоваться для объединения множества небольших операций чтения или записи в блоки, более эффективные для подсистемы диска, или, в случае чтения, для полного исключения необходимости физического доступа к диску.

Примеры

Команда/инструкция BUFFERS в CONFIG.SYS операционной системы DOS. Буфер между последовательным портом (UART) и модемом. Скорость COM-порта может составлять 38400 бит/с, в то время как скорость передачи данных модемом может быть ограничена 14400 бит/с. Интегрированный дисковый буфер на жестком диске, твердотельном накопителе или приводе BD/DVD/CD. Интегрированный буфер SRAM на сетевом адаптере Ethernet. Фреймбуфер на видеокарте.