Hai mai aperto il tuo computer e iniziato a digitare la tua password solo per vedere un grande ritardo in quello che stai scrivendo? Questo ritardo avviene quando il processore del computer si sveglia e si rende conto che ha bisogno di iniziare a prendere i dati dal mini processore nella tastiera. Ma come vengono memorizzate queste informazioni se c’è solo un piccolo spazio nella memoria della tastiera?
Ecco dove entra in gioco il buffer circolare.
Il buffer circolare è un certo tipo di coda. Ora, se non avete familiarità con una coda, potreste conoscerla come una linea. (Questa coda è una struttura FIFO (first in, first out). Ciò significa che la prima persona che entra in una fila è la prima ad uscire. Cosa c’è di diverso in una coda circolare?
Un buffer circolare memorizza i dati in un array a dimensione fissa. Quindi, una volta che la dimensione è impostata e il buffer è pieno, l’elemento più vecchio nel buffer sarà spinto fuori se vengono aggiunti altri dati. Memorizzando due puntatori alla parte anteriore e posteriore della struttura, non c’è bisogno di manipolare dinamicamente l’array.
Tuttavia, se il buffer è pieno e avete bisogno di aggiungere qualcosa di nuovo, impostate semplicemente l’elemento della lista indicato dal puntatore posteriore al nuovo elemento e incrementate il puntatore posteriore di uno. Il fronte ora punterà all’elemento aggiunto più recentemente.
Questa tecnica di allocazione della memoria ha dei vantaggi quando si lavora con molti dati in tempo reale. Man mano che altri dati vengono aggiunti alla struttura, i vecchi dati verranno rimossi, quindi non ci sarà mai bisogno di spostare i dati. Come detto prima, i puntatori spostano solo le posizioni.
Ora torniamo alla tastiera e all’inserimento della password. Tutte le vostre battute sono tenute in un buffer circolare. Quindi, se digitate abbastanza velocemente, potreste potenzialmente perdere parte dell’input ricevuto dai tasti.