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?

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).


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.


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.


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.


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.


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));


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.


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ę.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.