Hvad er en cirkulær buffer?
En cirkulær buffer er enten en type hardwarekredsløb eller et område af computerhukommelse, der bruges til at gemme indgående oplysninger. Det er en buffer med fast størrelse og kan forstås som en datastruktur, der bruger en buffer, som om den var knyttet fra den ene ende til den anden. Det kaldes en cirkulær buffer, fordi det giver udseendet af cirkularitet. Tilføjelse af flere oplysninger, når bufferen er fuld, får den til at overskrive det første element, der er gemt i bufferen. Det kaldes også en ringbuffer eller en cyklisk buffer.
En nem måde at forstå en cirkulær buffer er at forestille sig en linje i en busstation. Data føjes altid til den ene ende af linjen og fjernes altid fra den anden ende. Linjens hoved er altid det slot, hvori oplysninger tilføjes; halens ende af linjen er det sted, hvorfra information fjernes. Halen og hovedet ser ud til at være ved siden af hinanden i implementeringen i denne type buffer, skønt bufferen faktisk er bare en hukommelsesblok. I modsætning til linjen i en busstation er buffertens størrelse dog fast, og den har en vis maksimal kapacitet.
Dette betyder, at når bufferen er fuld, begynder den at overskrive data ved hovedet. Den maksimale kapacitet på bufferen skal indstilles på forhånd, og selv om dette nummer kan ændres til enhver tid, vil alle de eksisterende data, der findes i bufferen, gå tabt. Typisk bruger sekventielle processer cykliske buffere til at udveksle information, og de data, der indtastes ved den ene proces, læses af den anden. Den første proces, kaldet producenten, placerer data i bufferen, og den anden proces, kendt som forbrugeren, tager dem ud. Rutiner bruger også cykliske buffere til midlertidig lagring af data.
Den mest fordelagtige egenskab ved en cirkulær buffer er den måde, den lagrer data på. Data blandes ikke rundt, når et objekt i slutningen af linjen fjernes. Hvis bufferen var ikke-cirkulær, ville alle dataelementerne, der findes i bufferen, skulle skiftes positioner, når data blev fjernet. En cirkulær puffer kan tænkes som en første i første ud (FIFO) type puffer, mens en standard puffer ligner en sidste i første ud (LIFO) type puffer.
Da den cirkulære buffer gemmer data i sammenhængende hukommelsesregioner, muliggør den hurtig adgang til data hurtigt. Denne type buffer er let at fejlsøge og er ekstremt effektiv. Det fungerer som et cacheområde til lagring af et vist antal af de sidst inkluderede data. Det er også muligt meget hurtigt at indsætte og fjerne data fra begge ender, hvilket gør det ideelt til adskillige applikationer.