Qu'est-ce que cela signifie par tampon?

151

Je vois le mot "BUFFER" partout, mais je suis incapable de comprendre ce que c'est exactement.

  1. Quelqu'un pourrait-il expliquer ce qu'est un tampon en langage profane ?
  2. Quand est-il utilisé?
  3. Comment est-ce utilisé?
Pratik Deoghare
la source
J'ai remarqué que "buffer" a de légères variations de nom, et ils ont tendance à changer en fonction de la mémoire physique qui le contient et de quoi. Comme "Graphics buffer" est un tableau de caractères pour la mémoire vidéo, alors que Network Buffer peut être dans la RAM normale. Je ne sais pas si c'est normal ou fortuit. Similaire à la réponse d'Ailayna vers la fin.
Stephen J

Réponses:

269

Imaginez que vous mangez des bonbons dans un bol. Vous prenez un morceau régulièrement. Pour éviter que le bol ne s'épuise, quelqu'un peut remplir le bol avant qu'il ne se vide, de sorte que lorsque vous voulez prendre un autre morceau, il y a des bonbons dans le bol.

Le bol agit comme un tampon entre vous et le sac de bonbons.

Si vous regardez un film en ligne, le service Web téléchargera continuellement les 5 prochaines minutes environ dans une mémoire tampon, de cette façon votre ordinateur n'aura pas à télécharger le film pendant que vous le regardez (ce qui entraînerait un blocage).

Perchik
la source
93
+1: Des tampons sont nécessaires lorsque les producteurs et les consommateurs fonctionnent à des taux différents. Les bonbons sont fabriqués en gros lots mais consommés en plus petites quantités - toute la chaîne d'approvisionnement, du fabricant à la bouche, est une série de tampons.
S.Lott
30
Meilleure analogie de tous les temps. Me donne envie de sucre
Kyle Macey
quel est le service Web ici? Où est le tampon? Le service Web est-il l'hôte du film?
Jwan622
Définition solide. Je suppose que c'est pourquoi nous disons que la vidéo est mise en mémoire tampon lorsqu'elle se fige et que la barre de progression s'affiche lorsque nous regardons un film
Rouge M
C'est tellement agréable, faisable et simple.
Jonas Grønbek
93

Le terme «tampon» est un terme très générique, et n'est pas spécifique à IT ou CS. C'est un endroit pour stocker quelque chose temporairement, afin d'atténuer les différences entre la vitesse d'entrée et la vitesse de sortie. Alors que le producteur est plus rapide que le consommateur, le producteur peut continuer à stocker la sortie dans la mémoire tampon. Lorsque le consommateur accélère, il peut lire à partir du tampon. Le tampon est là au milieu pour combler l'écart.


Si vous faites la moyenne des définitions sur http://en.wiktionary.org/wiki/buffer , je pense que vous aurez l'idée.

Pour la preuve que nous avons vraiment "dû marcher 10 miles en pensant à la neige tous les jours pour aller à l'école", voir TOPS-10 Monitor Calls Manual Volume 1 , section 11.9, "Using Buffered I / O", au signet 11-24. Ne lisez pas si vous êtes sujet à des cauchemars.

John Saunders
la source
1
+1 J'aime mieux cette explication. Autant j'aime les bonbons, autant l'exemple de bol de bonbons était un peu extensible IMO.
Programmeur hors
10
Oui, "un endroit pour stocker quelque chose temporairement, afin d'atténuer les différences entre la vitesse d'entrée et la vitesse de sortie" résume parfaitement la situation.
chimpanzé
1
merci pour l'explication simple. Cependant, l'url PDF ci-jointe est morte
hassan
20

Un tampon est simplement un morceau de mémoire utilisé pour contenir des données. Dans le sens le plus général, il s'agit généralement d'une seule goutte de mémoire chargée en une seule opération, puis vidée dans un ou plusieurs exemples de «bol de bonbons» de Perchik. Dans un programme C, par exemple, vous pourriez avoir:

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

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

... qui est une version minimale de cp (1) . Ici, le tableau de tampons est utilisé pour stocker les données lues par read (2) jusqu'à ce qu'elles soient écrites; puis le tampon est réutilisé.

Il y a des schémas de tampons plus compliqués utilisés, par exemple un tampon circulaire , où un certain nombre fini de tampons est utilisé, l'un après l'autre; une fois que les tampons sont tous pleins, l'index «s'enroule» afin que le premier soit réutilisé.

Charlie Martin
la source
12

Buffer signifie «stockage temporaire». Les tampons sont importants en informatique car les dispositifs et les systèmes interconnectés sont rarement «synchronisés» les uns avec les autres, de sorte que lorsque les informations sont envoyées d'un système à un autre, elles doivent attendre que le système destinataire soit prêt.

karim79
la source
6

En réalité, cela dépendrait du contexte dans chaque cas car il n'y a pas de définition unique - mais en termes très généraux, un tampon est un endroit pour contenir temporairement quelque chose. La meilleure analogie du monde réel à laquelle je puisse penser serait une zone d'attente. Un exemple simple en informatique est celui où le tampon fait référence à une partie de la RAM utilisée pour le stockage temporaire des données.

Fraser
la source
2

Le tampon est un espace réservé temporaire (variables dans de nombreux langages de programmation) en mémoire (RAM / disque) sur lequel les données peuvent être vidées puis le traitement peut être effectué.

La mise en mémoire tampon présente de nombreux avantages, comme cela permet aux choses de se produire en parallèle, d'améliorer les performances d'E / S, etc.

Il présente également de nombreux inconvénients s'il n'est pas utilisé correctement, comme le dépassement de tampon, le dépassement de tampon, etc.

C Exemple de tampon de caractères.

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

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

Santosh Gokak
la source
2

Un tampon est une zone de données partagée par des périphériques matériels ou des processus de programme qui fonctionnent à différentes vitesses ou avec différents ensembles de priorités. Le tampon permet à chaque appareil ou processus de fonctionner sans être retenu par l'autre. Pour qu'un tampon soit efficace, la taille du tampon et les algorithmes pour déplacer les données dans et hors du tampon.

Le tampon est un «lieu de maintien du point médian» mais n'existe pas tant pour accélérer la vitesse d'une activité que pour soutenir la coordination d'activités séparées.

Ce terme est utilisé à la fois en programmation et en matériel. En programmation, la mise en mémoire tampon implique parfois la nécessité de filtrer les données à partir de leur emplacement final prévu afin qu'elles puissent être modifiées ou traitées d'une autre manière avant d'être déplacées vers un fichier ou une base de données normal.

Ailayna Entarria
la source
1

Le tampon est un espace réservé temporaire (variables dans de nombreux langages de programmation) en mémoire (RAM / disque) sur lequel les données peuvent être vidées puis le traitement peut être effectué.

Le terme «tampon» est un terme très générique, et n'est pas spécifique à IT ou CS. C'est un endroit pour stocker quelque chose temporairement, afin d'atténuer les différences entre la vitesse d'entrée et la vitesse de sortie. Alors que le producteur est plus rapide que le consommateur, le producteur peut continuer à stocker la sortie dans la mémoire tampon. Lorsque le consommateur accélère, il peut lire à partir du tampon. Le tampon est là au milieu pour combler l'écart.


la source