늘 겸손하게

CS - Operating System - 캐시 (cache) 본문

Computer Science/Operating System

CS - Operating System - 캐시 (cache)

besforyou999 2023. 4. 16. 18:46

캐시 (cache)

 

 

속도가 빠른 장치와 느린 장치에서 속도 차이에 의한 병목 현상을 줄이기 위해 데이터를 미리 복사해 놓은 임시 저장소입니다.

 

캐시를 통해 데이터 접근 시간을 줄이고 재계산 시간을 절약할 수 있습니다.

 

 

실제로 메모리와 CPU 사이의 속도 차이가 너무 크기 때문에 그 중간에 레지스터 계층을 뒤서 속도 차이를 해결합니다.

 

이렇게 속도 차이를 해결하기 위해 계층과 계층 사이에 있는 계층을 캐싱 계층이라고 합니다.

 

예로, 캐시 메모리와 보조기억장치 사이에 있는 주기억장치를 보조기억장치의 캐싱 계층이라고 할 수 있습니다.

 

 

캐시히트 (cache hit)

 

캐시에서 원하는 데이터를 찾은 경우를 캐시히트라고 합니다. 

 

캐시히트의 경우 필요한 데이터를 제어장치를 거쳐 가져오게 되는데 위치도 가깝고 CPU 내부 버스를 기반으로 작동하기 때문에 빠릅니다.

 

 

캐시미스 (cache miss)

 

원하는 데이터가 캐시에 없어 메모리로 가서 데이터를 찾아오는 것을 캐시미스라고 합니다.

 

캐시미스가 발생한 경우 메모리에서 데이터를 가져오게 되는데, 이는 시스템 버스를 기반으로 작동하여 느립니다.

 

[ 캐시 매핑 (cache mapping) ]

 

캐시 매핑이란 캐시가 히트되기 위해 매핑하는 방법을 말하며 CPU의 레지스터와 주 메모리(RAM)간에 데이터를 주고받을 때를 기반으로 설명합니다.

 

레지스터와 주 메모리 용량 차이는 매우 크므로 작은 레지스터가 캐시 계층으로써 역할을 잘 수행하려면 이 캐시 매핑을 어떻게 하느냐가 중요합니다.

 

직접 매핑 (directed mapping) 

 

메모리가 1 ~ 100이 있고 캐시가 1~10이 있다면 1:1~10, 2:11~20, .. 와 같은 식으로 매핑.

처리가 빠르지만 충돌 발생이 잦습니다.

 

연관 매핑 (associative mapping)

 

순서를 일치시키지 않고 관련 있는 캐시와 메모리를 매핑. 충돌이 적지만 모든 블록을 탐색해야 하여 속도가 느립니다.

 

집합 연관 매핑 (set associative mapping)

 

직접 매핑과 연관 매핑을 합쳐 놓은 것입니다. 순서는 일치시키지만 집합을 뒤서 저장하며 블록화되어 있기 때문에 검색은 좀 더 효율적입니다. 예로 메모리가 1~100이고 캐시가 1~10이 있다면 캐시 1~5에는 1~50의 데이터를 무작위로 저장시키는 것을 말합니다.

 

 

웹 브라우저의 캐시

 

웹 브라우저의 캐시로는 쿠키, 로컬 스토리지, 세션 스토리지가 있습니다. 

 

쿠키

 

만료기한이 있는 키-값 저장소로 브라우저에 작은 파일로 저장됩니다.

4KB까지 데이터를 저장할 수 있고 만료기한을 정할 수 있습니다.

서버 측에 전달되기 때문에 보안이 취약한 단점이 존재.

 

로컬 스토리지

 

만료기한이 없는 키-값 저장소로 데이터를 반영구적으로 저장 가능합니다.

브라우저를 닫아도, OS를 종료해도 로컬 스토리지에 저장된 데이터는 유지됩니다.

10MB까지 저장할 수 있으며 다른 도메인은 로컬 스토리지 데이터에 접근할 수 없습니다.

 

세션 스토리지

 

만료기한이 없는 키-값 저장소로 탭 단위로 세션 스토리지를 생성하며 탭을 닫을 때 데이터가 모두 유실됩니다.

브라우저 혹은 탭이 종료되면 데이터 모두 사라집니다.

5MB까지 저장 가능하며 클라이언트만 세션 스토리지의 데이터를 삭제할 수 있습니다.

도메인이 같아도 세션이 다르면 접근 불가능합니다.

 

 

데이터베이스의 캐싱 계층

 

데이터베이스 시스템을 구축할 때도 메인 데이터베이스 위에 레디스(redis) 데이터베이스 계층을 '캐싱 계층'으로 뒤서 성능을 향상시키기도 합니다.