Mémoire tampon

Un buffer Intel sur une barrette de mémoire vive.

En informatique, une mémoire tampon, couramment désignée par le terme anglais buffer, est une zone de mémoire vive ou de disque utilisée pour entreposer temporairement des données, notamment entre deux processus ou matériels ne travaillant pas au même rythme.

Description[modifier | modifier le code]

Du fait de la différence de vitesse entre le processeur et le périphérique, les données envoyées vers un périphérique (interne ou externe) sont le plus souvent stockées dans des mémoires tampon en attente de leur envoi effectif vers le périphérique, pour épargner à l’ordinateur l'attente due à la différence de débits entre le microprocesseur interne et les différents périphériques souvent lents[1]. De même, les données reçues de l'extérieur sont le plus souvent rassemblées dans des tampons, en attente de leur traitement par l'ordinateur (pour des raisons d'efficacité, et aussi pour éviter qu'une réception de données trop rapprochées fasse que certaines, non traitées, ne soient perdues).

Les périphériques tels que les ports séries sont le plus souvent munis de tampons file d'attente : les données émises ou reçues en premier sont traitées en premier. Une émission trop rapide peut remplir le tampon ; on bloque alors généralement le processus émetteur. Une réception trop rapide peut, elle aussi, bloquer le tampon, avec risque de perte de données ; aussi utilise-t-on souvent un dispositif de contrôle de flux disant à l'émetteur d'arrêter son émission quand le tampon est dangereusement près de la limite, et de recommencer quand le niveau est redevenu acceptable.

Utilisation[modifier | modifier le code]

Dans certains langages de programmation comme le C, des tampons sont systématiquement utilisés pour réguler les Entrées-Sorties, par exemple la lecture ou l'écriture dans un fichier[2],[3]. Concrètement, le tampon est une chaîne de caractères accompagnée d'un indice ou d'un pointeur désignant la position de lecture courante. Dans le cas d'une écriture, le contenu du tampon est partiellement ou intégralement recopié dans la sortie, puis il est mis à jour, et le processus est répété un certain nombre de fois; dans le cas d'une lecture, à chaque étape, une partie de l'entrée est copiée dans le tampon pour être utilisée. Ce système permet de limiter les appels système read et write, qui sont beaucoup plus lents que les autres types d'instructions. Le programmeur qui voudra forcer la vidange du tampon dans un but particulier fera bien d'examiner la commande fflush de la bibliothèque standard[4].

Notes et références[modifier | modifier le code]

  1. Cf. par ex. J. M. Helary et R. Pedrono, Recherche opérationnelle : Travaux dirigés, Paris, Hermann, coll. « Méthodes », , 352 p. (ISBN 2-7056-5955-2), p. 16, 83, 269
  2. (en) Brian Kernighan et Dennis Ritchie, The C Programming Language [détail des éditions], pp. 246-247
  3. Cf. Claude Delannoy, Programmer en langage C : Cours et exercices corrigés, Eyrolles, (réimpr. 5e, 2009) (ISBN 978-2-212-11072-2), p. 57
  4. Cf. P. J. Plauger, The Standard C Library, Prentice Hall, , 498 p. (ISBN 0-13-838012-0), « 12. stdio.h », p. 236-237

Voir aussi[modifier | modifier le code]

Articles connexes[modifier | modifier le code]