Dolphins의 HelloWorld

캐싱, 버퍼링 본문

전공지식 정리/운영체제와 컴퓨터구조

캐싱, 버퍼링

돌핀's 2019. 7. 30. 20:43

캐싱(Caching)


캐싱이라고 하면 캐시라고 하는 더 빠른 메모리 영역으로 데이터를 가져와서 접근하는 방식을 말한다.


만약 프로세서가 어떤 프로세스를 처리하기 위해 특정 메모리가 필요하다면 L1, L2캐시 그리고 데이터가 


없다면 main memory에 접근하여 데이터를 찾을 것이다. 계속해서 이런 과정을 수행하면 오버헤드가 


발생하기 때문에 자주 사용할 것 같은 데이터를 미리 캐시에 넣어두게 된다.


디스크 파일에서 메인 메모리로 데이터를 읽어올 때도 캐싱이 이루어 지는데 이 때 하드 디스크에서 


연속된 블록을 버퍼에 올려줌으로써 디스크 입출력의 횟수를 줄인다.



캐시에는 공간 지역성과 시간 지역성이 존재하는데 공간 지역성은 한번 접근한 데이터의 인근에 저장되어 있는


데이터가 다시 접근할 가능성이 높은것을 의미하며 시간 지역성은 한번 접근된 데이터가 가까운 시간내에


다시 접근될 가능성이 높음을 의미한다. 이러한 지역성이라는 특성을 이용하여 자주 접근될 데이터를 더 빠른


속도의 메모리상으로 가져와 연산을 수행을 하여 성능을 높이는것이 캐싱의 목적이다.



참조하고자 하는 캐시가 캐시 메모리에 있는 경우를 cache hit, 없는 경우를 cache miss라고 한다.



버퍼링(Buffering)


버퍼는 장치들 사이 혹은 서로 다른 속도로 동작하는 프로세스들 사이에서 데이터를 전송할 때 일시적으로


데이터를 보관하는 저장 영역이다.


버퍼는 일단 생산자와 소비자 사이의 속도차이를 대처하기 위해 사용된다. 데이터의 처리 속도나 처리단위,


데이터 사용시간이 서로 다른 두 장치나 프로그램 사이에서 데이터를 주고받고자 할 때 버퍼에서 데이터를


모아서 한꺼번에 처리하게 되면 보다 효율적으로 작업을 수행할 수 있다. 이를테면 빠른 장치에서 느린 


장치의 연산이 끝날 때까지 기다릴 필요가 없다.


즉 버퍼를 통해 소프트웨어와 하드웨어 장치들이 데이터를 비동기적으로 전송하게 함으로써 시스템 성능을


향상시킬 수 있다.

'전공지식 정리 > 운영체제와 컴퓨터구조' 카테고리의 다른 글

폴링과 인터럽트  (0) 2019.07.30
커널이란?  (0) 2019.07.30
운영체제의 유형별 특징  (0) 2019.07.26
폰노이만 구조  (0) 2019.07.26
p2p시스템과 클라이언트 서버 방식  (0) 2019.07.26
Comments