Skip to main content

Buffer

버퍼(Buffer)는 메모리 블록으로, 데이터를 효율적으로 처리하기 위해 존재한다. 데이터를 하나씩 보내는 것보다 일정량의 데이터를 모아 한꺼번에 전달하는 것이 효율적이기 때문이다. 만약 데이터를 1 Byte씩 처리하게 되면, 매 입력마다 데이터를 처리해야 하므로 CPU 사용 횟수와 메모리 접근 횟수가 많아질 것이다. API 호출의 횟수를 줄이는 것이 목적이다.


구조

Queue(FIFO 구조)로 저장 돼 있으며, 입력으로 들어온 데이터를 버퍼라는 곳에 저장해 둔다. 이후 프로그램이 버퍼에서 데이터를 가져와 사용할 수 있다.

키보드 --- (입력 버퍼) --- 프로그램 --- (출력버퍼) --- 모니터

사용자가 데이터를 입력 → 문자를 입력 버퍼에 저장 → 엔터 키(\n)가 입력되면 해당 변수(메모리 주소)로 데이터가 옮겨짐(버퍼 비워짐) → 출력 버퍼에 문자 저장 → 버퍼가 비워지면서 화면에 출력됨

프로그램이 미처 처리하지 못한 버퍼 속 데이터는 버퍼에 쌓여 있다가, 이후 프로그램이 여유로울 때 가져온다. 즉, 입력과 출력의 속도를 완전하게 일치시키기 힘든 경우 해결할 수 있는 임시저장소인 셈이다.

Related Links