Structures de données : Votre introduction rapide aux buffers circulaires

2 mai, 2019 – 4 min de lecture

.

Photo de James Thomas sur Unsplash

Vous avez déjà ouvert votre ordinateur et commencé à taper votre mot de passe pour constater un décalage important dans ce que vous tapez ? Ce décalage se produit lorsque le processeur de l’ordinateur se réveille et réalise qu’il doit commencer à récupérer les données du mini processeur du clavier. Mais comment ces informations sont-elles stockées s’il n’y a qu’un tout petit peu d’espace dans la mémoire du clavier ?

C’est là qu’intervient le tampon circulaire.

Le tampon circulaire est un certain type de file d’attente. Maintenant, si vous n’êtes pas familier avec une file d’attente, vous pouvez la connaître comme une ligne. (Comme lorsque vous faites la queue pour utiliser les toilettes.) Cette file est une structure FIFO (first in, first out). Cela signifie que la première personne à entrer dans une file est la première à en sortir. Alors qu’est-ce qui est différent dans une file d’attente circulaire ?

Un tampon circulaire stocke les données dans un tableau de taille fixe. Ainsi, une fois que la taille est définie et que le tampon est plein, l’élément le plus ancien du tampon sera poussé vers l’extérieur si d’autres données sont ajoutées. En stockant deux pointeurs vers l’avant et l’arrière de la structure, il n’est pas nécessaire de manipuler dynamiquement le tableau.

Toutefois, si le tampon est plein et que vous devez ajouter quelque chose de nouveau, il suffit de définir l’élément de la liste pointé par le pointeur arrière sur le nouvel élément et d’incrémenter le pointeur arrière de un. Le front pointera maintenant sur l’élément le plus récemment ajouté.

Cette technique d’allocation de mémoire présente des avantages lorsque vous travaillez avec beaucoup de données en temps réel. Au fur et à mesure que des données sont ajoutées à la structure, les anciennes données seront supprimées, de sorte qu’aucune donnée n’aura jamais besoin d’être décalée. Comme indiqué précédemment, les pointeurs ne font que déplacer les positions.

Maintenant, revenons à votre clavier et à la saisie du mot de passe. Toutes vos frappes au clavier sont conservées dans un tampon circulaire. Donc, si vous tapez assez vite, vous pourriez potentiellement perdre une partie de l’entrée reçue des frappes de touches.

Un restaurant à tampon circulaire mal dessiné.

Pour aider à imaginer le tampon circulaire, construisons un restaurant automatisé. Ce restaurant possède une seule fenêtre de retrait (l’arrière du tampon) où un client à la fois peut retirer son repas (les données). Derrière la fenêtre se trouve une table circulaire rotative qui contient 8 repas (le tampon). Il y a également une lumière qui pointe vers l’avant de la table (ou l’avant du tampon). Chaque fois qu’un repas est pris par la fenêtre, la table tourne d’un point dans le sens des aiguilles d’une montre.

Lorsque le chef a fini de cuisiner un repas, il le place d’un point devant l’endroit qui est éclairé. La lumière éclaire alors le plat nouvellement placé. Si le tampon est plein et qu’un repas est prêt à sortir du fourneau, le repas à la fenêtre sera jeté à la poubelle. La table tournera, et le nouveau repas sera placé à l’endroit vide.

Use Cases

Un instructeur m’a un jour parlé d’une entreprise technologique de réalité augmentée qui utilisait un tampon circulaire pour conserver les images des mouvements saisis par l’utilisateur. Ils enregistraient les mouvements de la main et du corps de l’utilisateur et les diffusaient sur un écran en temps réel. Si un utilisateur entrait beaucoup de mouvements dans un court laps de temps, les mouvements étaient stockés.

Lorsque vous rembobinez quelques minutes d’un film ou d’une émission de télévision en streaming, ces images précédentes ont été stockées dans un tampon circulaire afin qu’elles soient accessibles rapidement. Si vous rembobinez plus d’images que celles stockées dans le tampon, il faudra plus de temps pour recharger les images que vous recherchez.

En conclusion, si vous devez accéder rapidement à des données en streaming qui ont déjà été observées ou utilisées, un tampon circulaire pourrait être une bonne solution !

.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.