아래 모든 내용은 유튜브[10분 테코톡] 파피의 Chching(캐싱)과 면접을 위한 CS 전공지식 노트의 내용을 참고하였습니다.
사실 개발공부를 시작한 지 얼마 안되기도 했고, 항상 하나씩 하나씩 스택을 쌓기에 급급해서 그 기술에 대한 것만 알았지 내부적으로 어떻게 성능을 올릴 수 있는 지에 대한 고민은 올해 들어 제일 많이 하고 있는 것 같음.
그 중 하나가 캐싱인데, 기념으로 정리해보려고 함.
이번 내용은 프론트엔드 관련해서의 캐싱이 아닌 CS 적인 기본적인 캐싱의 개념을 다루려고 함.
캐싱는 하드웨어 뿐만 아니라 여러 가지 기술 계층에 걸쳐 사용되고 있음.
✔️ Caching === Cache + ing
캐시를 사용하는 것이 바로 캐싱이다.
✔️ Cache란?
프랑스어 '숨기다'라는 땃을 가진 단어인 'chcher'에서 파생된 단어로,
'물건을 일시적으로 저장하거나 보관하기 위해 사용하는 곳'을 의미
즉, 자주 필요한 데이터나 값의 복사본을 일시적으로 저장, 보관하기 위해 사용하는 곳
✔️ Cache 메모리는 어쩌다 등장하게 되었을까? (캐시 메모리의 도입)
먼저 컴퓨터의 동작 흐름을 알아야 한다. 메모리의 사용이 어떻게 이루어지는 지 이해해야하기 때문이다.
명령어를 실행할 때, CPU가 이용되는데, CPU는 그저 '메모리'에 올라와 있는 프로그램의 명령어들을 실행한다.
그러면 결국 메모리에 접근을 해야한다는 건데,
1. RAM이 하드디스크(저장장치)에서 데이터를 불러오면
2. CPU는 RAM에 저장되어있는 데이터를 이용하여 연산 작업을 수행한다.
하지만 위 그래프만 봐도 알 수 있듯이 CPU는 성능이 급격히 좋아진 반면 RAM(메모리)는 성능이 많이 안올라간 것을 볼 수 있다. 이는 메모리가 속도보다 메모리 자체 용량을 늘리는 것에 목표를 두었기 때문인데, 이렇게 CPU와 메모리 간 성능 차이가 생기면서 나타났던 문제가 있는데, '병목 현상'이다.
CPU는 데이터를 처리하기 위해 메모리와 끊임없이 데이터를 주고 받아야하는 구조인데 CPU의 성능향상으로 연산속도는 빨라졌지만, 메모리의 데이터를 가져오는 속도가 CPU의 데이터 처리 속도를 쫒아가지 못해서 CPU가 메모리를 기다려야 하는 것이다.
따라서, 이 병목 현상을 완화하기 위해 CPU와 메인메모리 사이에 크기는 작지만 속도가 빠른 캐시 메모리를 두고, 캐시 메모리에 재사용할 가능성이 있는 데이터의 복사본을 저장해둔 후 CPU가 요청하는 데이터를 바로 전달할 수 있도록 한다.
이렇게 캐시 메모리를 사용하게 되는데 사실 CPU와 RAM 사이 뿐만 아니라 계층과 계층 사이에서도 캐싱작업을 수행한다. 예를 들어, 캐시 메모리와 보고기억장치 사이에 있는 주기억장치를 보조기억장치의 캐싱 계층이라고 할 수 있다. 즉 메인메모리가 하드디스크를 캐싱하는 거다.
참고
https://www.youtube.com/watch?v=JBFT4KyEvoY 유튜브
면접을 위한 CS 전공지식 노트 책
'CS > Operating System' 카테고리의 다른 글
[Operating System] 운영체제 Caching [2] (0) | 2024.03.09 |
---|---|
[운영체제] Chapter7. Synchronization Examples (0) | 2022.06.01 |
[운영체제] Chapter6. Synchronization Tools(동기화) (0) | 2022.05.30 |