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

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

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


답변

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

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

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


답변

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


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

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


답변

버퍼는 단순히 데이터를 보유하는 데 사용되는 메모리 덩어리입니다. 가장 일반적인 의미에서, 일반적으로 한 번의 작업으로로드 된 다음 하나 이상의 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 )가 있는데, 여기에는 몇 개의 유한 한 수의 버퍼가 사용됩니다. 버퍼가 모두 가득 차면 인덱스가 “랩핑”되어 첫 번째 버퍼가 재사용됩니다.


답변

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


답변

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


답변

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

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

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

C 문자 버퍼의 예.

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

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


답변

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

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

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