Буфер (информатика)

В информатике бу́фер (от англ. buffer - «посредник»), мн. ч. буфера́[1][2][3], бу́феры[4][5] — это область памяти, используемая для временного хранения данных при вводе или выводе. Обмен данными (ввод и вывод) может происходить как с внешними устройствами, так и с процессами в пределах компьютера. Буферы могут быть реализованы в аппаратном или программном обеспечении, но подавляющее большинство буферов реализуется в программном обеспечении. Буферы используются, когда существует разница между скоростью получения данных и скоростью их обработки, или в случае, когда эти скорости переменны, например, при буферизации печати.

Буфер и кэш

Эти термины не являются взаимоисключающими, и их функции часто смешиваются, но существует различие в их предназначении. Буфер — временное хранилище, где большие блоки данных сливаются или разбиваются на части. Это необходимо для взаимодействия с запоминающим устройством, которое работает с большими блоками данных, или когда данные передаются в другом порядке чем тот, в котором они формируются, и лишь желательно — в том случае, когда использование мелких блоков неэффективно. Использование буфера приносит пользу, даже если буферизуемые данные пишутся в буфер и читаются из него однократно.

В свою очередь, использование кэша предполагает, что данные будут читаться из кэша чаще, чем записываться туда. Его назначение — уменьшить число обращений к запоминающему устройству, а не сделать их более эффективными.

Использование буферов

Метод организации обмена данными между устройствами или процессами с использованием буфера называется буферизацией. Один из наиболее известных для пользователей ПК примеров такого использования буфера — буфер обмена в ОС Microsoft Windows.

Также буферы используются в программировании для получения данных от функций. Функции Windows API, результатом работы которых является строковое значение (например, MultiByteToWideChar), принимают в качестве одного из аргументов указатель на буфер, куда производится вывод. Вот пример фрагмента исходного текста программы на C, преобразующего строку «Hello, World!» в Unicode:

// исходная строка
CHAR text[] = "Hello, World!";

// буфер для получения результата
WCHAR buffer[256];

// преобразование строки в Unicode
MultiByteToWideChar(CP_ACP, 0, text, strlen(text) + 1,
  buffer, sizeof(buffer)/sizeof(WCHAR));

См. также

Примечания

  1. Слово «буфер» в Викисловаре
  2. Большой толковый словарь русского языка / Гл. ред. С. А. Кузнецов. СПб.: Норинт, 1998.
  3. Слово «буфер» на сайте gramota.ru
  4. Буфер // Академический толковый словарь русского языка / под ред. Л. П. Крысина. — Институт русского языка им. В. В. Виноградова РАН, 2016. — Т. 2.
  5. Ваулина Е. Ю. Буфер // Информатика. Толковый словарь.. М.: Эксмо, 2005. — 480 с. — (Школьные словари). — ISBN 5-699-10277-9.
This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.