Un buffer circular este fie un tip de circuit hardware, fie o zonă de memorie a computerului care este utilizată pentru a stoca informațiile primite. Este un buffer de dimensiune fixă și poate fi înțeles ca o structură de date care utilizează un buffer ca și cum ar fi legat de la un capăt la altul. Se numește tampon circular pentru că dă aspectul circularității. Adăugarea mai multor informații atunci când buffer-ul este plin determină să suprascrie primul element stocat în buffer. Se mai numește și tampon inel sau tampon ciclic.
O modalitate ușoară de a înțelege un buffer circular este să vă imaginați o linie într-o stație de autobuz. Datele sunt întotdeauna adăugate la un capăt al liniei și sunt întotdeauna eliminate de la celălalt capăt. Capul liniei este întotdeauna slotul în care se adaugă informații; capătul de coadă al liniei este locul din care informațiile sunt îndepărtate. Coada și capul dau aspectul de a fi unul lângă celălalt în implementarea în acest tip de buffer, deși tamponul este, de fapt, doar un bloc de memorie. Spre deosebire de linia dintr-o stație de autobuz, totuși, dimensiunea tamponului este fixă și are o anumită capacitate maximă.
Aceasta înseamnă că, atunci când tamponul este plin, începe să suprascrie datele din cap. Capacitatea maximă a tamponului trebuie setată în prealabil și, deși acest număr poate fi modificat în orice moment, toate datele existente prezente în tampon se vor pierde. În mod obișnuit, procesele secvențiale folosesc buffer-uri ciclice pentru a face schimb de informații, iar datele introduse de un proces sunt citite de celălalt. Primul proces, numit producător, plasează datele în buffer, iar al doilea proces, cunoscut sub numele de consumator, le scoate. Rutinele folosesc, de asemenea, tampoane ciclice pentru stocarea temporară a datelor.
Cel mai avantajos atribut al unui buffer circular este modul în care stochează datele. Datele nu sunt amestecate atunci când un obiect de la sfârșitul liniei este eliminat. Dacă tamponul ar fi necircular, toate elementele de date prezente în tampon ar trebui să-și schimbe pozițiile atunci când datele au fost eliminate. Un buffer circular poate fi considerat ca un tip de buffer First In First Out (FIFO), în timp ce un buffer standard seamănă cu un tip de tampon Last In First Out (LIFO).
Deoarece bufferul circular stochează date în regiuni adiacente ale memoriei, acesta permite accesul aleatoriu la date rapid. Acest tip de buffer este ușor de depanat și este extrem de eficient. Acesta servește ca zonă cache pentru stocarea unui anumit număr de ultimele date incluse. De asemenea, este posibil să inserați și să eliminați foarte rapid date de la ambele capete, făcându-l ideal pentru numeroase aplicații.