Что это значит под буфером?

151

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

  1. Кто-нибудь, пожалуйста, объясните, что такое буфер в языке непрофессионала ?
  2. Когда это используется?
  3. Как это используется?
Пратик Деогхаре
источник
Я заметил, что у «буфера» есть небольшие изменения в имени, и они имеют тенденцию меняться в зависимости от того, какая именно физическая память его держит и для чего. Как и «Графический буфер», это массив символов для видеопамяти, тогда как сетевой буфер может находиться в обычном ОЗУ. Я не уверен, является ли это стандартным или случайным. Похоже на ответ Айлайны в конце.
Стивен Дж

Ответы:

269

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

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

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

Перчик
источник
93
+1: буферы требуются, когда производители и потребители работают с разной скоростью. Конфеты производятся большими партиями, но потребляются в меньших количествах - вся цепочка поставок от производителя до рта представляет собой серию буферов.
S.Lott
30
Лучшая аналогия. Заставляет меня жаждать сахара
Кайл Мейси
что здесь за веб сервис? Где буфер? Является ли веб-сервис хозяином фильма?
Jwan622
Твердое определение. Я думаю, именно поэтому мы говорим, что видео буферизируется, когда оно зависает, и индикатор прогресса показывает, когда мы смотрим фильм
Red M
Это так мило, выполнимо и просто.
Йонас Гронбек
93

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


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

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

Джон Сондерс
источник
1
+1 Мне больше нравится это объяснение. Столько, сколько я люблю леденец, пример леденца был немного натянутым IMO.
Outlaw Programmer
10
Да, «место для временного хранения чего-либо для уменьшения различий между входной скоростью и выходной скоростью» прекрасно подводит итог.
шимпанзе
1
спасибо за простое объяснение. Тем не менее, прикрепленный URL-адрес PDF был мертв
Хасан
20

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

#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), до тех пор, пока они не будут записаны; затем буфер используется повторно.

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

Чарли Мартин
источник
12

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

karim79
источник
6

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

Фрейзер
источник
2

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

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

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

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

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

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

Сантош Гокак
источник
2

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

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

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

Айлайна Энтарриа
источник
1

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

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


источник