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


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

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


6

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


2

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

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

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

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

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

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


2

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

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

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


1

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

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.