Was bedeutet es mit Puffer?

150

Ich sehe das Wort "BUFFER" überall, aber ich kann nicht verstehen , was es genau ist.

  1. Würde jemand bitte erklären, was Puffer in der Sprache des Laien ist ?
  2. Wann wird es verwendet?
  3. Wie wird es benutzt?
Pratik Deoghare
quelle
Ich habe festgestellt, dass "Puffer" geringfügige Abweichungen im Namen aufweist und sich in der Regel basierend darauf ändert, welcher physische Speicher ihn enthält und wofür. Wie "Grafikpuffer" ist ein Zeichenarray für den Videospeicher, während sich der Netzwerkpuffer möglicherweise im normalen RAM befindet. Ich bin mir nicht sicher, ob dies Standard oder Zufall ist. Ähnlich wie Ailaynas Antwort gegen Ende.
Stephen J

Antworten:

267

Stellen Sie sich vor, Sie essen Süßigkeiten aus einer Schüssel. Sie nehmen regelmäßig ein Stück. Um zu verhindern, dass die Schüssel leer wird, kann jemand die Schüssel nachfüllen, bevor sie leer wird. Wenn Sie also ein weiteres Stück nehmen möchten, befinden sich Süßigkeiten in der Schüssel.

Die Schüssel fungiert als Puffer zwischen Ihnen und dem Bonbontüte.

Wenn Sie einen Film online ansehen, lädt der Webdienst die nächsten 5 Minuten kontinuierlich in einen Puffer herunter. Auf diese Weise muss Ihr Computer den Film nicht herunterladen, während Sie ihn ansehen (was zum Hängen führen würde).

Perchik
quelle
93
+1: Puffer sind erforderlich, wenn Hersteller und Verbraucher unterschiedlich schnell arbeiten. Süßigkeiten werden in großen Mengen hergestellt, aber in kleineren Mengen konsumiert - die gesamte Lieferkette vom Hersteller bis zum Mund besteht aus einer Reihe von Puffern.
S.Lott
30
Beste Analogie aller Zeiten. Ich sehne mich nach Zucker
Kyle Macey
Was ist der Webdienst hier? Wo ist der Puffer? Ist der Webdienst der Filmhost?
Jwan622
Solide Definition. Ich denke, deshalb sagen wir, dass das Video puffert, wenn es einfriert, und der Fortschrittsbalken wird angezeigt, wenn wir einen Film
Red M
Das ist so schön, machbar und einfach.
Jonas Grønbek
93

Der Begriff "Puffer" ist ein sehr allgemeiner Begriff und nicht spezifisch für IT oder CS. Hier können Sie etwas vorübergehend speichern, um Unterschiede zwischen Eingangs- und Ausgangsgeschwindigkeit zu verringern. Während der Produzent schneller als der Verbraucher ist, kann der Produzent die Ausgabe weiterhin im Puffer speichern. Wenn der Verbraucher schneller wird, kann er aus dem Puffer lesen. Der Puffer befindet sich in der Mitte, um die Lücke zu schließen.


Wenn Sie die Definitionen unter http://en.wiktionary.org/wiki/buffer herausrechnen , werden Sie auf die Idee kommen.

Einen Beweis dafür, dass wir wirklich "10 Meilen laufen mussten, um jeden Tag Schnee zu haben, um zur Schule zu gehen", finden Sie in TOPS-10 Monitor Calls Manual, Band 1 , Abschnitt 11.9, "Using Buffered I / O", unter Lesezeichen 11-24. Lesen Sie nicht, wenn Sie Albträumen ausgesetzt sind.

John Saunders
quelle
1
+1 Diese Erklärung gefällt mir besser. So sehr ich Süßigkeiten liebe, war das Beispiel der Süßigkeitenschale IMO ein bisschen langweilig.
Outlaw Programmer
10
Ja, "ein Ort, an dem etwas vorübergehend gespeichert werden kann, um Unterschiede zwischen Eingangsgeschwindigkeit und Ausgangsgeschwindigkeit zu verringern", fasst es perfekt zusammen.
Schimpanse
1
danke für die einfache erklärung. Die angehängte PDF-URL war jedoch tot
Hassan
20

Ein Puffer ist einfach ein Speicherblock, der zum Speichern von Daten verwendet wird. Im allgemeinsten Sinne ist es normalerweise ein einzelner Speicherklumpen, der in einem Vorgang geladen und dann in einem oder mehreren, Perchiks "Candy Bowl" -Beispiel, geleert wird. In einem C-Programm könnten Sie beispielsweise Folgendes haben:

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

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

... das ist eine minimale Version von cp (1) . Hier wird das Pufferarray verwendet, um die von read (2) gelesenen Daten zu speichern, bis sie geschrieben sind; dann wird der Puffer wiederverwendet.

Es werden kompliziertere Pufferschemata verwendet, beispielsweise ein kreisförmiger Puffer , bei dem eine endliche Anzahl von Puffern nacheinander verwendet wird; Sobald alle Puffer voll sind, wird der Index "umbrochen", so dass der erste wiederverwendet wird.

Charlie Martin
quelle
11

Puffer bedeutet "temporäre Speicherung". Puffer sind beim Rechnen wichtig, da miteinander verbundene Geräte und Systeme selten miteinander synchronisiert sind. Wenn also Informationen von einem System zu einem anderen gesendet werden, muss irgendwo gewartet werden, bis das Empfängersystem bereit ist.

karim79
quelle
6

Wirklich, es würde in jedem Fall vom Kontext abhängen, da es keine einzige Definition gibt - aber im Allgemeinen ist ein Puffer ein Ort, an dem vorübergehend etwas gespeichert werden kann. Die beste reale Analogie, die ich mir vorstellen kann, wäre ein Wartebereich. Ein einfaches Beispiel beim Rechnen ist, wenn sich Puffer auf einen Teil des RAM bezieht, der zum temporären Speichern von Daten verwendet wird.

Fraser
quelle
2

Der Puffer ist ein temporärer Platzhalter (Variablen in vielen Programmiersprachen) im Speicher (RAM / Disk), auf dem Daten gespeichert und anschließend verarbeitet werden können.

Das Puffern bietet viele Vorteile, da es ermöglicht, dass Dinge parallel ablaufen, die E / A-Leistung verbessern usw.

Es hat auch viele Nachteile, wenn es nicht richtig verwendet wird, wie Pufferüberlauf, Pufferunterlauf usw.

C Beispiel für einen Zeichenpuffer.

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

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

Santosh Gokak
quelle
2

Ein Puffer ist ein Datenbereich, der von Hardwaregeräten oder Programmprozessen gemeinsam genutzt wird, die mit unterschiedlichen Geschwindigkeiten oder mit unterschiedlichen Prioritäten arbeiten. Der Puffer ermöglicht es jedem Gerät oder Prozess, zu arbeiten, ohne vom anderen aufgehalten zu werden. Damit ein Puffer effektiv ist, müssen die Größe des Puffers und die Algorithmen zum Verschieben von Daten in den Puffer und aus dem Puffer entfernt sein.

Puffer ist ein "Mittelpunkt-Haltepunkt", existiert jedoch weniger, um die Geschwindigkeit einer Aktivität zu beschleunigen, als vielmehr, um die Koordination separater Aktivitäten zu unterstützen.

Dieser Begriff wird sowohl in der Programmierung als auch in der Hardware verwendet. Bei der Programmierung bedeutet das Puffern manchmal, dass Daten von ihrem endgültigen Verwendungsort überprüft werden müssen, damit sie bearbeitet oder auf andere Weise verarbeitet werden können, bevor sie in eine reguläre Datei oder Datenbank verschoben werden.

Ailayna Entarria
quelle
1

Der Puffer ist ein temporärer Platzhalter (Variablen in vielen Programmiersprachen) im Speicher (RAM / Disk), auf dem Daten gespeichert und anschließend verarbeitet werden können.

Der Begriff "Puffer" ist ein sehr allgemeiner Begriff und nicht spezifisch für IT oder CS. Hier können Sie etwas vorübergehend speichern, um Unterschiede zwischen Eingangs- und Ausgangsgeschwindigkeit zu verringern. Während der Produzent schneller als der Verbraucher ist, kann der Produzent die Ausgabe weiterhin im Puffer speichern. Wenn der Verbraucher schneller wird, kann er aus dem Puffer lesen. Der Puffer befindet sich in der Mitte, um die Lücke zu schließen.


quelle