본문 바로가기
기타

버퍼 개념 정리

by 꾀돌이 개발자 2022. 4. 3.
반응형

[정의]
버퍼란?
: 컴퓨팅에서 버퍼(buffer)는 데이터를 한 곳에서 다른 한 곳으로 전송하는 동안 일시적으로 그 데이터를 보관하는 메모리의 영역이다.


출처: 위키피디아

https://ko.wikipedia.org/wiki/%EB%B2%84%ED%8D%BC_(%EC%BB%B4%ED%93%A8%ED%84%B0_%EA%B3%BC%ED%95%99

 


[요약]
버퍼는 "임시 데이터 보관소"  이다.
데이터 전송과정 : [ 장치 A ] -> [ 버퍼 ] -> [ 장치 B ]

 

 

[사용 목적]

1. 입출력 장치 간 전송속도차이 문제를 해결한다.

      - 입력 장치에 비해 출력 장치의 전송속도가 매우 느릴 때 사용함

      - 예를 들어

            데이터 전송 속도에 대해

                  출력 장치는 1 초당 10개의 데이터를 전송받을 수 있고

                  입력 장치는 1 초당 100개의 데이터를 전송할 수 있을 때

            버퍼가 없다면?

                  물리적으로 출력 장치의 데이터 전송 속도를 입력 장치에 맞출 수 없고

                  입력 장치의 속도를 출력 장치의 속도에 맞출 경우 입력 장치의 효율을 크게 낮추게 된다.

                  (입력 장치가 1초에 100개 데이터를 전송시킬 수 있는데 10개만 전송시키는 꼴)

      -즉 입력장치에서 버퍼로 데이터를 빠르게 보낸 뒤,

                  버퍼에 저장된 데이터를 출력장치 속도에 맞춰 사용하게 된다.

 

2. 대용량 데이터 전송 시, 버퍼의 크기만큼 데이터를 나눠서 보냄으로써 장치의 부하를 낮춘다.

      - 만약 1,000개의 데이터를 보낼 때,

            입출력 장치가 한 번에 다룰 수 있는 데이터 수가 1,000개 보다 작다면 데이터를 나눠서 보내야 한다.

            이 때 입출력 장치가 처리할 수 있게 데이터를 나눠 보내는 역할을 버퍼가 수행하게 된다.

      - 만약 입력장치에 데이터가 들어오자마자 바로 출력장치에 보내게 되면 

            메모리 엑세스 횟수가 많아지면서 장치에 큰 부하가 걸리게 된다.

            따라서 입력 장치에서 들어오는 값을 버퍼에서 보관하고

                  버퍼에 충분한 크기의 데이터가 쌓인다면 출력 장치로 데이터를 전송함으로써

                  메모리 엑세스 및 기타 작업 횟수를 줄여주고, 장치의 부하를 낮춰준다.

 

2.1 이 때 버퍼를 채우는 과정 및 버퍼를 활용하는 방법을 버퍼링(buffering)이라고 정의한다.

 

2.2 버퍼에 충분한 크기의 데이터가 채워지기 전에 데이터를 출력하는 것을 플러시(flush)라고 정의한다.

      flush는 입력된 데이터를 바로 사용한 뒤 버릴 수 있지만

      그만큼 많은 자원이 투자되기 때문에 효율적이라고 하긴 어렵다.

 

 

반응형