Что это значит под буфером? - PullRequest
124 голосов
/ 15 марта 2009

Я вижу слово "БУФЕР" повсюду, но я не могу понять, что это такое.

  1. Кто-нибудь, пожалуйста, объясните, что такое буфер на языке непрофессионала ?
  2. Когда это используется?
  3. Как это используется?

Ответы [ 8 ]

227 голосов
/ 15 марта 2009

Представьте, что вы едите конфеты из миски. Вы берете одну часть регулярно. Чтобы не допустить вытекания миски, кто-то может наполнить ее до того, как она опустеет, поэтому, когда вы захотите взять еще один кусок, в миске окажется конфетка.

Чаша действует как буфер между вами и конфетным пакетом.

Если вы смотрите фильм онлайн, веб-служба будет непрерывно загружать следующие 5 минут или около того в буфер, таким образом, ваш компьютер не будет загружать фильм во время его просмотра (что может привести к висит).

81 голосов
/ 15 марта 2009

Термин «буфер» является очень общим термином и не является специфическим для IT или CS. Это место для временного хранения чего-либо, чтобы уменьшить разницу между скоростью ввода и скоростью вывода. Пока производитель работает быстрее, чем потребитель, он может продолжать сохранять выходные данные в буфере. Когда потребитель ускоряется, он может читать из буфера. В середине находится буфер, чтобы преодолеть разрыв.


Если вы усредните определения в http://en.wiktionary.org/wiki/buffer, Я думаю, вы поймете идею.

В качестве доказательства того, что нам действительно «приходилось идти 10 миль, чтобы снег шел каждый день, чтобы идти в школу», см. TOPS-10 Monitor Calls Manual Том 1 , раздел 11.9, «Использование буферизованного ввода-вывода О ", в закладке 11-24. Не читайте, если вы подвержены кошмарам.

18 голосов
/ 15 марта 2009

Буфер - это просто кусок памяти, используемый для хранения данных. В самом общем смысле, это обычно один блок памяти, который загружается за одну операцию, а затем очищается в одной или нескольких, например, в «Перчатке» Перчика. Например, в программе на Си вы можете иметь:

#define BUFSIZE 1024
char buffer[BUFSIZE];
size_t len = ;

// ... later
while((len=read(STDIN, &buffer, BUFSIZE)) > 0)
    write(STDOUT, buffer, len);

... минимальная версия cp (1) . Здесь, буферный массив используется для хранения данных, считанных read (2) , до тех пор, пока они не будут записаны; затем буфер используется повторно.

Используются более сложные схемы буферов, например, циклический буфер , где используется некоторое конечное число буферов, один за другим; когда все буферы заполнены, индекс «оборачивается», так что первый снова используется.

8 голосов
/ 15 марта 2009

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

5 голосов
/ 15 марта 2009

Действительно, это будет зависеть от контекста в каждом случае, так как нет единого определения - но, говоря очень часто, буфер - это место для временного хранения чего-либо. Лучшая аналогия в реальном мире, о которой я могу подумать, это место ожидания. Один простой пример в вычислениях - когда буфер относится к части оперативной памяти, используемой для временного хранения данных.

1 голос
/ 11 октября 2014

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

Буфер является «средним местом удержания», но существует не столько для ускорения скорости действия, сколько для поддержки координации отдельных действий.

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

1 голос
/ 10 июня 2009

Буфер - это временная метка-заполнитель (переменные во многих языках программирования) в памяти (оперативная память / диск), на которую можно записать данные и затем выполнить обработку.

Термин «буфер» является очень общим термином и не является специфичным для ИТ или CS. Это место для временного хранения чего-либо, чтобы уменьшить разницу между скоростью ввода и скоростью вывода. Пока производитель работает быстрее, чем потребитель, он может продолжать сохранять выходные данные в буфере. Когда потребитель ускоряется, он может читать из буфера. Посередине находится буфер для преодоления разрыва.

1 голос
/ 15 марта 2009

Буфер - это временная метка-заполнитель (переменные во многих языках программирования) в памяти (оперативная память / диск), на которую можно записать данные и затем выполнить обработку.

Есть много преимуществ буферизации, так как она позволяет вещам происходить параллельно, улучшать производительность ввода-вывода и т. Д.

Он также имеет много недостатков, если не используется правильно, например, переполнение буфера, переполнение буфера и т. Д.

C Пример символьного буфера.

char * buffer1 = calloc (5, sizeof (char));

char * buffer2 = calloc (15, sizeof (char));

...