Co to znaczy bufor?

151

Wszędzie widzę słowo „BUFOR” , ale nie jestem w stanie pojąć, co to właściwie jest.

  1. Czy ktoś mógłby wyjaśnić, czym jest bufor w języku laika ?
  2. Kiedy jest używany?
  3. Jak to jest używane?
Pratik Deoghare
źródło
Zauważyłem, że „bufor” ma niewielkie różnice w nazwie i mają one tendencję do zmiany w zależności od tego, jaka dokładnie pamięć fizyczna go przechowuje i do czego. Podobnie jak „Bufor graficzny” jest tablicą znaków pamięci wideo, podczas gdy bufor sieciowy może znajdować się w normalnej pamięci RAM. Nie jestem pewien, czy to standard, czy przypadek. Podobna do odpowiedzi Ailayny pod koniec.
Stephen J

Odpowiedzi:

269

Wyobraź sobie, że jesz cukierki z miski. Regularnie bierzesz jedną sztukę. Aby zapobiec wyczerpaniu się miski, ktoś może napełnić miskę, zanim się opróżni, więc gdy chcesz wziąć kolejny kawałek, w misce są cukierki.

Miska działa jak bufor między tobą a torebką ze słodyczami.

Jeśli oglądasz film online, usługa internetowa będzie stale pobierać następne 5 minut do bufora, dzięki czemu komputer nie musi pobierać filmu podczas oglądania (co mogłoby spowodować zawieszenie).

Perchik
źródło
93
+1: Bufory są wymagane, gdy producenci i konsumenci działają w różnym tempie. Cukierki są produkowane w dużych partiach, ale konsumowane w mniejszych ilościach - cały łańcuch dostaw od producenta do ust to seria buforów.
S.Lott
30
Najlepsza analogia w historii. Mam ochotę na cukier
Kyle Macey
co to za usługa internetowa? Gdzie jest bufor? Czy usługa internetowa jest hostem filmów?
Jwan622
Solidna definicja. Myślę, że dlatego mówimy, że wideo się buforuje, gdy się zawiesza, a pasek postępu wyświetla się, gdy oglądamy film
Red M
To takie miłe, wykonalne i proste.
Jonas Grønbek
93

Termin „bufor” jest terminem bardzo ogólnym i nie jest specyficzny dla IT ani CS. Jest to miejsce do tymczasowego przechowywania czegoś w celu złagodzenia różnic między prędkością wejściową a wyjściową. Podczas gdy producent jest szybszy niż konsument, producent może nadal przechowywać dane wyjściowe w buforze. Gdy konsument przyspieszy, może odczytać z bufora. Bufor znajduje się pośrodku, aby wypełnić lukę.


Jeśli uśrednisz definicje na http://en.wiktionary.org/wiki/buffer , myślę, że zrozumiesz pomysł.

Dowód na to, że naprawdę „musieliśmy codziennie chodzić 10 mil, myśląc o śniegu, aby iść do szkoły”, zobacz TOPS-10 Podręcznik wywołań monitora, tom 1 , sekcja 11.9, „Korzystanie z buforowanych wejść / wyjść”, zakładka 11-24. Nie czytaj, jeśli masz koszmary.

John Saunders
źródło
1
+1 Bardziej podoba mi się to wyjaśnienie. Chociaż uwielbiam cukierki, przykład miski z cukierkami był trochę rozciągliwy IMO.
Outlaw Programmer
10
Tak, „miejsce do tymczasowego przechowywania czegoś w celu złagodzenia różnic między prędkością wejściową a wyjściową” podsumowuje to doskonale.
szympans
1
dziękuję za proste wyjaśnienie. Jednak załączony adres URL w formacie PDF jest martwy
hassan
20

Bufor to po prostu fragment pamięci używany do przechowywania danych. W najogólniejszym sensie jest to zwykle pojedyncza kropla pamięci, która jest ładowana podczas jednej operacji, a następnie opróżniana w co najmniej jednej misce z cukierkami Perchika. Na przykład w programie w języku C możesz mieć:

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

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

... który jest minimalną wersją cp (1) . Tutaj tablica buforów jest używana do przechowywania danych odczytanych przez read (2), dopóki nie zostaną zapisane; następnie bufor jest ponownie używany.

Stosowane są bardziej skomplikowane schematy buforów, na przykład bufor cykliczny , w którym używana jest skończona liczba buforów, jeden po drugim; gdy wszystkie bufory są pełne, indeks „zawija się”, tak że pierwszy z nich jest ponownie używany.

Charlie Martin
źródło
12

Bufor oznacza „tymczasowe przechowywanie”. Bufory są ważne w komputerach, ponieważ połączone ze sobą urządzenia i systemy rzadko są ze sobą „zsynchronizowane”, więc kiedy informacje są przesyłane z jednego systemu do drugiego, musi gdzieś czekać, aż system odbiorcy będzie gotowy.

karim79
źródło
6

Naprawdę zależałoby to od kontekstu w każdym przypadku, ponieważ nie ma jednej definicji - ale mówiąc ogólnie, bufor to miejsce, w którym można coś tymczasowo zatrzymać. Najlepsza analogia do świata rzeczywistego, jaką przychodzi mi do głowy, to poczekalnia. Prostym przykładem w obliczeniach jest sytuacja, w której bufor odnosi się do części pamięci RAM używanej do tymczasowego przechowywania danych.

Fraser
źródło
2

Bufor to tymczasowy symbol zastępczy (zmienne w wielu językach programowania) w pamięci (ram / dysk), na który można zrzucić dane, a następnie przeprowadzić ich przetwarzanie.

Buforowanie ma wiele zalet, na przykład pozwala na równoległe działanie, poprawia wydajność we / wy itp.

Ma również wiele wad, jeśli nie jest używany poprawnie, jak przepełnienie bufora, niedomiar bufora itp.

C Przykład bufora znaków.

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

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

Santosh Gokak
źródło
2

Bufor to obszar danych współdzielony przez urządzenia sprzętowe lub procesy programowe, które działają z różnymi prędkościami lub z różnymi zestawami priorytetów. Bufor pozwala każdemu urządzeniu lub procesowi działać bez utrzymywania go przez inne. Aby bufor był efektywny, rozmiar bufora i algorytmy przenoszenia danych do i z bufora.

bufor jest „miejscem zatrzymania w środku”, ale istnieje nie tyle w celu przyspieszenia tempa działania, ile w celu wspierania koordynacji oddzielnych działań.

Termin ten jest używany zarówno w programowaniu, jak i sprzęcie. W programowaniu buforowanie czasami pociąga za sobą konieczność odsiewania danych od ich ostatecznego zamierzonego miejsca, aby można je było edytować lub w inny sposób przetwarzać przed przeniesieniem do zwykłego pliku lub bazy danych.

Ailayna Entarria
źródło
1

Bufor to tymczasowy symbol zastępczy (zmienne w wielu językach programowania) w pamięci (ram / dysk), na który można zrzucić dane, a następnie przeprowadzić ich przetwarzanie.

Termin „bufor” jest terminem bardzo ogólnym i nie jest specyficzny dla IT ani CS. Jest to miejsce do tymczasowego przechowywania czegoś w celu złagodzenia różnic między prędkością wejściową a wyjściową. Podczas gdy producent jest szybszy niż konsument, producent może nadal przechowywać dane wyjściowe w buforze. Gdy konsument przyspieszy, może odczytać z bufora. Bufor znajduje się pośrodku, aby wypełnić lukę.


źródło