버퍼는 무엇을 의미합니까?


151

나는 어디에서나 "BUFFER" 라는 단어를 보았지만 그것이 정확히 무엇인지 이해할 수는 없습니다.

  1. 아무도 평신도 언어의 버퍼가 무엇인지 설명해 주시겠습니까 ?
  2. 언제 사용됩니까?
  3. 어떻게 사용 되나요?

"버퍼"는 이름에 약간의 변형이 있으며, 실제 메모리가 무엇을 보유하고 있는지, 무엇을 위해 정확히 변경되는지에 따라 변화하는 경향이 있습니다. "그래픽 버퍼"는 비디오 메모리를위한 문자 배열 인 반면, 네트워크 버퍼는 일반 RAM에있을 수 있습니다. 이것이 표준인지 아니면 상황인지 확실하지 않습니다. 끝에 대한 Ailayna의 답변과 유사합니다.
Stephen J

답변:


269

그릇에서 사탕을 먹고 있다고 상상해보십시오. 정기적으로 한 장을 가져갑니다. 그릇이 떨어지지 않도록 다른 사람이 그릇을 비우기 전에 그릇을 채우면 다른 조각을 가져갈 때 그릇에 사탕이 생길 수 있습니다.

사발은 당신과 사탕 부대 사이에 완충 역할을합니다.

온라인으로 영화를보고있는 경우 웹 서비스는 다음 5 분 동안 계속 버퍼로 다운로드합니다. 이렇게하면 컴퓨터에서 영화를보고있는 동안 컴퓨터가 영화를 다운로드 할 필요가 없습니다 (정지 될 수 있음).


93
+1 : 생산자와 소비자가 서로 다른 속도로 작동 할 때 버퍼가 필요합니다. 사탕은 대량으로 제조되지만 소량으로 소비됩니다. 제조업체에서 입으로 공급되는 전체 공급망은 일련의 버퍼입니다.
S.Lott

30
최고의 비유. 나 설탕 갈망하게
카일 메이시

여기 웹 서비스 란 무엇입니까? 버퍼는 어디에 있습니까? 웹 서비스가 영화 호스트입니까?
Jwan622

확실한 정의. 비디오가 정지 될 때 비디오가 버퍼링되고 있고 영화를 볼 때 진행률 표시 줄이 표시되는 이유가 여기에 있습니다.
Red M

이것은 매우 좋고 실행 가능하며 간단합니다.
Jonas Grønbek

93

"버퍼"라는 용어는 매우 일반적인 용어이며 IT 또는 CS에만 국한되지 않습니다. 입력 속도와 출력 속도의 차이를 완화하기 위해 임시로 무언가를 저장하는 장소입니다. 생산자는 소비자보다 빠르지 만 생산자는 버퍼에 출력을 계속 저장할 수 있습니다. 소비자가 속도를 높이면 버퍼에서 읽을 수 있습니다. 틈을 메우기 위해 버퍼가 중간에 있습니다.


http://en.wiktionary.org/wiki/buffer 에서 정의를 평균화 하면 아이디어를 얻을 것이라고 생각합니다.

우리가 실제로 "학교에 갈 때 매일 눈이 10 마일을 걸어야한다고 생각했다"는 증거 는 책갈피 11-24의 TOPS-10 모니터 호출 매뉴얼 볼륨 1 , 섹션 11.9, "버퍼 I / O 사용 "을 참조하십시오 . 악몽을 겪고 있다면 읽지 마십시오.


1
+1이 설명이 더 좋습니다. 사탕을 좋아하는 것처럼 사탕 그릇의 예는 약간의 IMO였습니다.
무법자 프로그래머

10
예, "입력 속도와 출력 속도의 차이를 완화하기 위해 일시적으로 무언가를 저장하는 장소"가 완벽하게 요약합니다.
Chimp

1
간단한 설명 감사합니다. 그러나 첨부 된 PDF URL은 죽었습니다
hassan

20

버퍼는 단순히 데이터를 보유하는 데 사용되는 메모리 덩어리입니다. 가장 일반적인 의미에서, 일반적으로 한 번의 작업으로로드 된 다음 하나 이상의 Perchik의 "사탕 그릇"예에서 비워지는 단일 메모리 덩어리입니다. 예를 들어 C 프로그램에서 다음을 수행 할 수 있습니다.

#define BUFSIZE 1024
char buffer[BUFSIZE];
size_t len = ;

// ... later
while((len=read(STDIN, &buffer, BUFSIZE)) > 0)
    write(STDOUT, buffer, len);

... 최소 버전의 cp (1) 입니다. 여기에서 버퍼 배열은 read (2)읽을 때까지 읽은 데이터를 저장하는 데 사용됩니다 . 버퍼가 재사용됩니다.

보다 복잡한 버퍼 방식, 예를 들어 순환 버퍼 (circular buffer )가 있는데, 여기에는 몇 개의 유한 한 수의 버퍼가 사용됩니다. 버퍼가 모두 가득 차면 인덱스가 "랩핑"되어 첫 번째 버퍼가 재사용됩니다.


12

버퍼는 '임시 저장'을 의미합니다. 상호 연결된 장치와 시스템이 서로 '동기화되지'않기 때문에 버퍼는 컴퓨팅에 중요하므로 정보를 한 시스템에서 다른 시스템으로 전송할 때 수신자 시스템이 준비 될 때까지 대기해야합니다.


6

실제로 정의가 하나도 없으므로 각 상황에 따라 달라집니다. 그러나 매우 일반적으로 말하면 버퍼는 일시적으로 무언가를 보유하는 장소입니다. 내가 생각할 수있는 최고의 실제 비유는 대기 장소 일 것입니다. 컴퓨팅의 간단한 예는 버퍼가 데이터의 임시 저장에 사용되는 RAM의 일부를 참조하는 경우입니다.


2

버퍼는 데이터를 덤프 한 다음 처리 할 수있는 메모리 (ram / disk)의 임시 자리 표시 자 (많은 프로그래밍 언어의 변수)입니다.

버퍼링의 장점은 병렬로 발생하고 IO 성능을 향상시키는 등의 이점이 있습니다.

버퍼 오버플로, 버퍼 언더 플로 등과 같이 올바르게 사용하지 않으면 많은 단점이 있습니다.

C 문자 버퍼의 예.

char * buffer1 = calloc (5, sizeof (char));

char * buffer2 = calloc (15, sizeof (char));


2

버퍼는 하드웨어 장치 또는 프로그램 프로세스가 공유하는 데이터 영역으로, 다른 속도로 또는 다른 우선 순위 세트로 작동합니다. 버퍼는 각 장치 또는 프로세스가 다른 장치에 의해 유지되지 않고 작동 할 수 있도록합니다. 버퍼를 유효하게하기 위해, 버퍼의 크기 및 버퍼 내외부로 데이터를 이동시키기위한 알고리즘.

버퍼는 "중간 유지 장소"이지만 별도의 활동 조정을 지원하기 위해 활동 속도를 가속화하지는 않습니다.

이 용어는 프로그래밍과 하드웨어 모두에서 사용됩니다. 프로그래밍에서 버퍼링은 최종 파일 또는 데이터베이스로 이동하기 전에 편집하거나 처리 할 수 ​​있도록 최종 의도 된 위치에서 데이터를 스크리닝해야하는 경우가 있습니다.


1

버퍼는 데이터를 덤프 한 다음 처리 할 수있는 메모리 (ram / disk)의 임시 자리 표시 자 (많은 프로그래밍 언어의 변수)입니다.

"버퍼"라는 용어는 매우 일반적인 용어이며 IT 또는 CS에만 국한되지 않습니다. 입력 속도와 출력 속도의 차이를 완화하기 위해 임시로 무언가를 저장하는 장소입니다. 생산자는 소비자보다 빠르지 만 생산자는 버퍼에 출력을 계속 저장할 수 있습니다. 소비자가 속도를 높이면 버퍼에서 읽을 수 있습니다. 틈을 메우기 위해 버퍼가 중간에 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.