O que significa buffer?

151

Eu vejo a palavra "BUFFER" em todos os lugares, mas não consigo entender exatamente o que é.

  1. Alguém poderia explicar o que é buffer na linguagem dos leigos ?
  2. Quando é usado?
  3. Como isso é usado?
Pratik Deoghare
fonte
Notei que "buffer" tem pequenas variações no nome e elas tendem a mudar com base exatamente na memória física que a contém e para quê. Como "Buffer de gráficos", é uma matriz de caracteres para memória de vídeo, enquanto o Buffer de Rede pode estar na RAM normal. Não tenho certeza se isso é padrão ou casual. Semelhante à resposta de Ailayna no final.
Stephen J

Respostas:

268

Imagine que você está comendo doces em uma tigela. Você pega uma peça regularmente. Para impedir que a tigela se esgote, alguém pode encher a tigela antes que ela fique vazia, para que quando você quiser pegar outra peça, haja doces na tigela.

A tigela atua como um amortecedor entre você e a sacola de doces.

Se você estiver assistindo a um filme on-line, o serviço da Web fará o download contínuo dos próximos 5 minutos ou mais em um buffer, para que seu computador não precise fazer o download do filme enquanto estiver assistindo (o que causaria interrupção).

Perchik
fonte
93
+1: Buffers são necessários quando produtores e consumidores operam a taxas diferentes. Os doces são feitos em grandes lotes, mas consumidos em quantidades menores - toda a cadeia de suprimentos, do fabricante à boca, é uma série de tampões.
315/09 S.Lott
30
Melhor analogia de todos os tempos. Me faz desejar açúcar
Kyle Macey
qual é o serviço da web aqui? Onde está o buffer? O serviço da web é o host do filme?
Jwan622
Definição sólida. Eu acho que é por isso que dizemos que o vídeo está armazenando buffer quando congela e a barra de progresso é exibida quando estamos assistindo a um filme
Red M
Isso é tão legal, viável e simples.
Jonas Grønbek
93

O termo "buffer" é um termo muito genérico e não é específico para TI ou CS. É um local para armazenar algo temporariamente, a fim de diminuir as diferenças entre a velocidade de entrada e a velocidade de saída. Enquanto o produtor está sendo mais rápido que o consumidor, ele pode continuar armazenando a saída no buffer. Quando o consumidor acelera, pode ler do buffer. O buffer está lá no meio para preencher a lacuna.


Se você calcular a média das definições em http://en.wiktionary.org/wiki/buffer , acho que você entenderá.

Para a prova de que realmente "tivemos que andar 16 quilômetros pensando na neve todos os dias para ir à escola", consulte o Manual 1 de Chamadas para Monitor TOPS-10, Volume 1 , seção 11.9, "Usando E / S tamponada", no marcador 11-24. Não leia se estiver sujeito a pesadelos.

John Saunders
fonte
1
+1 Gosto mais desta explicação. Por mais que eu goste de doces, o exemplo da tigela de doces foi um IMO um tanto exagerado.
Outlaw Programmer
10
Sim, "um local para armazenar algo temporariamente, a fim de atenuar as diferenças entre a velocidade de entrada e a velocidade de saída" resume perfeitamente.
chimpanzé
1
obrigado pela explicação simples. No entanto, o URL do PDF anexado está morto
hassan
20

Um buffer é simplesmente um pedaço de memória usado para armazenar dados. No sentido mais geral, geralmente é um único blob de memória carregado em uma operação e depois esvaziado em uma ou mais, o exemplo da "tigela de doces" de Perchik. Em um programa C, por exemplo, você pode ter:

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

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

... que é uma versão mínima do cp (1) . Aqui, o buffer array é usado para armazenar os dados lidos por read (2) até que sejam gravados; então o buffer é reutilizado.

Existem esquemas de buffer mais complicados usados, por exemplo, um buffer circular , em que um número finito de buffers é usado, um após o outro; quando todos os buffers estiverem cheios, o índice "se volta" para que o primeiro seja reutilizado.

Charlie Martin
fonte
12

Buffer significa 'armazenamento temporário'. Os buffers são importantes na computação porque os dispositivos e sistemas interconectados raramente estão "sincronizados" entre si; portanto, quando as informações são enviadas de um sistema para outro, há um local para aguardar até que o sistema destinatário esteja pronto.

karim79
fonte
6

Realmente, isso dependeria do contexto em cada caso, pois não há uma definição - mas, falando de maneira geral, um buffer é um local para guardar algo temporariamente. A melhor analogia do mundo real que consigo pensar seria uma área de espera. Um exemplo simples de computação é quando buffer se refere a uma parte da RAM usada para armazenamento temporário de dados.

Fraser
fonte
2

O buffer é um espaço reservado temporário (variáveis ​​em várias linguagens de programação) na memória (ram / disco) na qual os dados podem ser despejados e o processamento pode ser feito.

Existem muitas vantagens do Buffer, pois ele permite que as coisas aconteçam em paralelo, melhorem o desempenho de IO, etc.

Ele também tem muitas desvantagens se não for usado corretamente, como buffer overflow, buffer underflow, etc.

C Exemplo de buffer de caracteres.

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

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

Santosh Gokak
fonte
2

Um buffer é uma área de dados compartilhada por dispositivos de hardware ou processos de programa que operam em velocidades diferentes ou com diferentes conjuntos de prioridades. O buffer permite que cada dispositivo ou processo opere sem ser sustentado pelo outro. Para que um buffer seja eficaz, o tamanho do buffer e os algoritmos para mover dados para dentro e para fora do buffer.

o buffer é um "ponto de apoio do ponto médio", mas não existe tanto para acelerar a velocidade de uma atividade, como para apoiar a coordenação de atividades separadas.

Este termo é usado tanto na programação quanto no hardware. Na programação, o armazenamento em buffer às vezes implica a necessidade de rastrear dados do local final pretendido, para que possam ser editados ou processados ​​antes de serem movidos para um arquivo ou banco de dados regular.

Ailayna Entarria
fonte
1

O buffer é um espaço reservado temporário (variáveis ​​em várias linguagens de programação) na memória (ram / disco) na qual os dados podem ser despejados e o processamento pode ser feito.

O termo "buffer" é um termo muito genérico e não é específico para TI ou CS. É um local para armazenar algo temporariamente, a fim de diminuir as diferenças entre a velocidade de entrada e a velocidade de saída. Enquanto o produtor está sendo mais rápido que o consumidor, ele pode continuar armazenando a saída no buffer. Quando o consumidor acelera, pode ler do buffer. O buffer está lá no meio para preencher a lacuna.


fonte