ecsimsw

Buffer / Cache 본문

Buffer / Cache

JinHwan Kim 2019. 1. 9. 04:03

<Buffer / Cache>


  Buffer와 Cache 모두 처리 속도가 다른 두 장치에서 효율을 위해 사용하는 장치라고 이해했으나 둘의 명확한 차이가 궁금해 공부했다. 사실 검색으로 그 둘의 개념을 같게 설명하는 페이지가 매우 많았고, 나는 그중에서 나무 위키, 상주시 사이버 캠퍼스 , 다음 오픈 지식 를 주로 참고하였다.


<Cache>


  Cache와 Buffer는 모두 처리 속도가 다른 두 기기를 더 효율적으로 사용하기 위한 임시 메모리이다. 그중 cache는 속도 향상에 더 집중하여 사용되는데 예를 들어 Cpu가 HDD에서 데이터를 가져와 처리할 때, 처리 속도가 느린 HDD의 데이터를 보조기억장치보다는 빠른 주기억 장치(RAM)에 할당된 임시 메모리(cache)에 저장한다면 CPU는 이 임시 메모리가 가득 찼나만 확인하고 일정 양이 쌓이면 처리해주면 되는 것으로 다른 task와 진행할 수 있는 것이다.


  더 직접적으로 예를 들어 처리해야할 데이터가 2000이고 Cpu의 일률이 100, hdd의 일률의 1이라고 가정하자. Cpu가 아무리 성능이 좋아도 데이터를 hdd에서 가져오는데만 2000이 필요하고 그때 동안 Cpu는 hdd의 데이터를 기다리고 있을 수 밖에 없을 것이다 . 이때 Cpu의 일률 100에 따라 Cpu와 Hdd 사이(Ram)에 100의 크기로 임시 메모리를 만들고 Cpu는 다른 Task를 진행하다가 그 작업이 끝나면 임시 메모리를 확인하여 한번에 처리하고, 또 다른 Task를 하다가도 임시 메모리에 100이 가득차면 한번에 처리하여, 또는 자주 처리하는 데이터를 보다 가까운 곳에, 보다 빠른 장치에 저장함으로서 처리 효율을 높이는 것이 가능해지는 것이다.


<Buffer>


  Buffer는 Cache의 속도 향상에 집중한 것보다 데이터 손실에 집중한 것이라고 공부하였다. 빠른 장치에서 느린 장치로의 데이터 전송에서 만약 직접 데이터의 전달이 이뤄진다면 cache에서와 마찬가지로 속도가 느리거나 한 task에 잡혀 비효율적일 뿐만아니라 빠른 전송과 달리 느린 수신 장치의 처리 속도에의해 데이터를 다 처리하지 못하여 데이터가 유실될 수 도 있어, 이를 중간 임시 메모리에 저장하는 것이다. 


  처리 속도의 예로 컴퓨터가 프린터기에 인쇄 데이터를 전송할 때, 직접 데이터를 전송한다면 컴퓨터는 프린터기의 느린 인쇄 속도에 맞춰 작업을 처리해야하는 반면 임시 데이터를 이용해서 한번에 일정양의 데이터를 전송해두고 프린터기는 자체 처리 속도에따라 그 메모리에서 데이터를 가져다 작업을 처리하면 되는 것이다. 


  또, 데이터 유실을 막는 예로, 콘솔에서 키보드로 입력받을 때, 콘솔 화면 처리보다 키보드의 입력이 빨라 abcdefg에서 채 다 입력받지 못하고 다음 타이핑으로 이어져 abdfg로 데이터가 중간 중간 유실될 경우를 방지하여 사용자가 타이핑하는 대로 버퍼에 키를 받았다가 콘솔이 처리 후 버퍼에서 데이터를 가져다가 사용할 수 있는 것이다.


  

Comments