토픽 49 / 66·확률적 자료구조
원형 버퍼 (Circular Buffer, Ring Buffer)
원형 버퍼 (Circular Buffer, Ring Buffer)
고정 크기 배열을 순환 구조로 사용하는 FIFO 큐로, 끝에 도달하면 처음으로 돌아가며 읽기/쓰기 포인터로 관리하여 공간을 재사용
목적: 고정 크기 버퍼, 공간 재사용, 생산자-소비자 패턴, 실시간 스트리밍
특징: 고정 크기, 순환 구조, 덮어쓰기 가능, O(1) 연산, 락프리 가능
구성요소: ① 배열(고정 크기) ② 헤드(읽기 포인터) ③ 테일(쓰기 포인터) ④ 크기/용량
동작
- •enqueue: buffer[tail] = item, tail = (tail+1) % capacity
- •dequeue: item = buffer[head], head = (head+1) % capacity
- •Full: (tail+1) % capacity == head
- •Empty: head == tail
시간 복잡도: enqueue/dequeue 모두 O(1)
공간 복잡도: O(capacity) - 고정
장점: O(1) 연산, 공간 재사용, 캐시 효율, 락프리 구현 가능, 예측 가능한 메모리
단점: 고정 크기, 오버플로우 시 덮어쓰기 또는 에러, 용량 관리 필요
적용사례: 네트워크 패킷 버퍼, 오디오/비디오 스트리밍, 임베디드 시스템, 로그 버퍼, 생산자-소비자 큐
비교: 원형 버퍼(고정/빠름/순환) vs 동적 큐(가변/재할당/선형)
연관: 큐, 생산자-소비자, 락프리, 스트리밍