CS/운영체제

[운영체제] 버퍼와 캐시 차이점

happy_life 2022. 7. 26. 11:36

목차

1. 버퍼

2. 캐시

3. 버퍼와 캐시의 차이

 

버퍼

버퍼

 

 

1) 개념

데이터를 한 곳에서 다른 곳으로 전송할 동안 일시적으로 데이터를 보관하는 메모리 영역. 예를들어 CPU는 1초에 100개의 데이터를 처리할 수 있지만 정작 처리할 데이터를 가지고 있는 보조 기억 장치는 데이터를 1초에 세 개밖에 보내주지 않는다. CPU입장에서는 아무리 일을 열심히 하고 싶어도 데이터를 보내주지 않기 때문에 능력에 비해 97 개 만큼 효율성을 잃게 된다. 따라서 entire block 단위로 읽기 쓰기를 하지 않고, 작은 block 단위로 buffer에 데이터를 모아두고, CPU는 다른 일을 하다가 돌아와서 buffer의 데이터를 연산한다. 이를 위해 임시 저장소인 buffer가 있는 것이다.

 

2) 특징

1. 일시적으로 데이터를 보관하는 영역이기 때문에 사용 후 데이터를 폐기한다.

 

2. 캐시에 비해 필요한 리소스 크기가 큰 편이기 때문에, 모든 데이터를 저장할 수 없다. 따라서 모든 버퍼는 특정 데이터를 

담았다가 처리가 끝나면 데이터를 모두 폐기한다.

 

3. 버퍼는 특정 block device(하드 디스크, cd 등 정해진 단위로 데이터를 전송하는 기기)와 연관되어 있다. 저장된 파일의 메타데이터의 캐싱과 현재 페이지의 tracking까지 담당한다.

 

 

 

캐시(Cache)

캐시

 

1) 개념

자주 사용하는 데이터나 값을 복사해 놓는 임시 저장소라고 할 수 있다.  

 

2) 특징

1. 캐시는 속도가 빠른 CPU와 느린 저장장치 사이에서 속도 차이에 의한 병목현상을 줄이기 위해 사용된다. 

 

2. 저장공간이 작고 비싸지만 빠른 성능을 제공한다. 또한 L1, L2, L3 캐시로 나뉘며 CPU에 가까울수록 작고 비싸고 빠르다. 

 

3. 캐시는 프로그램에서 직접적으로 읽거나 쓸 수 없고, MMU(메모리 관리 하드웨어)가 내부적으로 제어한다.

 

4. 레지스터는 CPU의 캐시이다. L1은 레지스터의 캐시이다 ... 메인 메모리는 L3의 캐시이다.

 

5. 메모리와 CPU 사이에 있는 하드웨어이다.

 

 

 

버퍼와 캐시의 차이점

1. 캐시에 비해 버퍼의 리소스 크기가 크다.

 

2. 캐시는 한 번 저장한 것은 계속 가지고 있으면서 접근 요청이 발생할 때마다 반환할 수 있지만, 버퍼는 데이터를 사용하고 나면 폐기한다.

 

3. 버퍼는 두 프로세스의 시간차이를 줄이기 위해 있는 것이지만, 캐시는 자주 참조되는 것을 더 빠르게 접근하기 위해 있는 것이다.

 

4. 버퍼는 input / output 프로세스에 주로 사용되고, 캐시는 프로세스를 디스크에서 읽고 쓰는데 자주 사용된다.

 

5. 버퍼는 메모리에 있는 임시 저장소이고, 캐시는 CPU와 메모리 사이에 있는 임시 저장소이다. 

 

6. 버퍼는 디렉토리에 있는 내용, 파일 권한이 무엇인지, 특정 block device에 대해 어떤 메모리에서 쓰거나 읽는지 추적하는 한편, 캐시에는 파일의 내용만 포함된다.

 

 

 

Q) 버퍼는 물리적으로 어디에 위치하는 건가요?

굳이 따지자면, RAM에 위치한다.

 

 

 

참고

https://dololak.tistory.com/84

https://stackoverflow.com/questions/6345020/what-is-the-difference-between-buffer-and-cache-memory-in-linux

https://www.geeksforgeeks.org/difference-between-buffer-and-cache/

 kowc 이화여대 반효경 교수님 운영체제 강의

https://dbknowledge.tistory.com/51