Skip to main content

Vad är en cirkulär buffert?

En cirkulär buffert är antingen en typ av hårdvarukrets eller ett område med datorminne som används för att lagra inkommande information.Det är en buffert med fast storlek och kan förstås som en datastruktur som använder en buffert som om den var kopplad från ena änden till den andra.Det kallas en cirkulär buffert eftersom den ger utseendet på cirkularitet.Att lägga till mer information när bufferten är full får den att skriva över det första elementet som lagras i bufferten.Det kallas också en ringbuffert eller en cyklisk buffert.

Ett enkelt sätt att förstå en cirkulär buffert är att föreställa sig en linje i en busstation.Data läggs alltid till i den ena änden av linjen och tas alltid bort från den andra änden.Linjens huvud är alltid den plats som information läggs till;Linjens svans ände är den plats från vilken information tas bort.Svansen och huvudet ger utseendet att vara bredvid varandra i implementeringen i denna typ av buffert, även om bufferten i själva verket bara är ett minneblock.Till skillnad från linjen i en busstation är dock storleken på bufferten fixerad, och den har en viss maximal kapacitet.

Detta betyder att när bufferten är full börjar den skriva över data i huvudet.Buffertens maximala kapacitet måste ställas in i förväg, och även om detta nummer kan ändras när som helst kommer alla befintliga data som finns i bufferten att gå förlorad.Vanligtvis använder sekventiella processer cykliska buffertar för att utbyta information, och de data som anges i den ena processen läses av den andra.Den första processen, kallad producenten, placerar data i bufferten och den andra processen, känd som konsumenten, tar ut den.Rutiner använder också cykliska buffertar för att lagra data tillfälligt.

Det mest fördelaktiga attributet för en cirkulär buffert är hur det lagrar data.Data blandas inte runt när ett objekt i slutet av linjen tas bort.Om bufferten var icke -cirkulär, måste alla dataelement som finns i bufferten flytta positioner när data togs bort.En cirkulär buffert kan betraktas som en första i första ut (FIFO) typ av buffert, medan en standardbuffert liknar en sista ut (LIFO) typ av buffert.

Eftersom den cirkulära bufferten lagrar data i sammanhängande minne regioner, möjliggör det slumpmässigt åtkomst av data snabbt.Denna typ av buffert är lätt att felsöka och är extremt effektiv.Det fungerar som ett cacheområde för att lagra ett visst antal av de senast inkluderade uppgifterna.Det är också möjligt att mycket snabbt infoga och ta bort data från båda ändarna, vilket gör det idealiskt för många applikationer.