버퍼링은 버퍼 메모리영역에 사용 예정 데이터를 임시로 저장하여 처리속도 차이를 완화하기 위한 기술이다. 장치 사이의 속도 차이 개선 및 전송 크기 차이를 극복하기 위해 사용.
그렇다면 버퍼란? 버퍼는 컴퓨터 안의 프로세스 사이에서 데이터를 이동시킬 때 사용된다. 보통 데이터는 키보드와 같은 입력장치로부터 받거나 프로터와 같은 출력 장치로 내보낼 때 버퍼 안에 저장된다. 버퍼는 하드웨어나 소프트웨어에 추가될 수 있지만 상당수가 소프트웨어에 추가된다. 버퍼는 보통 속도가 계속 바뀔 수 있으므로 데이터 수신, 처리 속도에 차이가 있다.
그렇다면 버퍼링이란 자신의 계산과 함께 한 작업의 입출력을 동시에 수행한 것을 말한다. 자료를 입력한 후 cpu가 그들을 연산하려고 하는 순간, 입력장치는 바로 다음 입력을 시작 이때 cpu와 입력장치는 함께 동작한다.
cpu가 다른 자료 항목을 준비하고 있을때 입력장치는 다음 자료를 읽기 시작, 출력도 마찬가지로 수행할 수 있다. 이러한 경우 cpu는 출력장치가 그들을 받아들이고 있을 동안 버퍼에 자료를 넣게 된다.
cpu와 집출력 장치 둘 중에서 어느 하나가 먼저 종류할 수 있기 때문에 항상 cpu와 입출력 장치와 동시에 수행하지 못한다.
cpu가 먼저 종료하면 입력장치가 종료할 때까지 cpu는 기다려야한다. 즉 다음 레코드를 읽어서 처리하기 위하여 기억장치에 준비되어 있을때까지 처리될 수 없다. 그러나 cpu가 아주 오랫동안 유휴상태에 놓이지 않는다. 최악의 경우에도 버퍼링이 없을 경우보다 더 오랫동안 유휴 상태가 되지는 않는다. 만약 입력장치가 먼저 종료되면 입력장치는 다음레코드를 읽으려고 준비하거나 기달여야한다.
읽기는 했지만 아직 처리되지 않은 레코드를 가지고 있는 버퍼는 몇 개의 레코드를 저장할 수 있는 만큼 상당히 클 수가 있다. 따라서 입력 장치는 cpu 수행 전에 몇 개의 레코드를 읽을 수 있다. 만약 입력장치가 계속해서 cpu보다 아주 빠르면, 버퍼는 궁극적으로 가득 차게 되고 입력장치는 대기 상태로 된다.
요약하자면